From fa077ec417f06b3785ef4ce629f793ce8e8b3690 Mon Sep 17 00:00:00 2001 From: Andrei Paskevich <andrei@lri.fr> Date: Thu, 21 Mar 2013 11:10:12 +0100 Subject: [PATCH] fix why3session.dtd --- .../logic/triangle_inequality/why3session.xml | 622 ++++++++---------- share/why3session.dtd | 9 +- src/session/session.ml | 19 +- 3 files changed, 293 insertions(+), 357 deletions(-) diff --git a/examples/logic/triangle_inequality/why3session.xml b/examples/logic/triangle_inequality/why3session.xml index a9857010d9..94d62b8e67 100644 --- a/examples/logic/triangle_inequality/why3session.xml +++ b/examples/logic/triangle_inequality/why3session.xml @@ -28,13 +28,9 @@ <prover id="6" name="Z3" - version="2.19"/> - <prover - id="7" - name="Z3" version="3.2"/> <prover - id="8" + id="7" name="Z3" version="4.3.1"/> <file @@ -61,18 +57,10 @@ memlimit="1000" obsolete="false" archived="false"> - <result status="valid" time="0.02"/> - </proof> - <proof - prover="7" - timelimit="3" - memlimit="1000" - obsolete="false" - archived="false"> <result status="valid" time="0.01"/> </proof> <proof - prover="8" + prover="7" timelimit="5" memlimit="1000" obsolete="false" @@ -106,14 +94,6 @@ </proof> <proof prover="7" - timelimit="3" - memlimit="1000" - obsolete="false" - archived="false"> - <result status="valid" time="0.00"/> - </proof> - <proof - prover="8" timelimit="5" memlimit="1000" obsolete="false" @@ -180,14 +160,6 @@ </proof> <proof prover="7" - timelimit="3" - memlimit="1000" - obsolete="false" - archived="false"> - <result status="valid" time="0.02"/> - </proof> - <proof - prover="8" timelimit="5" memlimit="1000" obsolete="false" @@ -218,631 +190,631 @@ name="int" arity="0" id="1" - ip_theory="BuiltIn"> - <ip_library - name="why3"/> - <ip_qualid - name="int"/></ts_pos> + <ip_library + name="why3"/> + <ip_qualid + name="int"/> + </ts_pos> <ls_pos name="infix =" id="10" - ip_theory="BuiltIn"> - <ip_library - name="why3"/> - <ip_qualid - name="infix ="/></ls_pos> + <ip_library + name="why3"/> + <ip_qualid + name="infix ="/> + </ls_pos> <ls_pos name="one" id="131" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="one"/></ls_pos> + <ip_library + name="real"/> + <ip_qualid + name="one"/> + </ls_pos> <ls_pos name="infix <" id="132" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="infix <"/></ls_pos> + <ip_library + name="real"/> + <ip_qualid + name="infix <"/> + </ls_pos> <ls_pos name="infix <=" id="144" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="infix <="/></ls_pos> + <ip_library + name="real"/> + <ip_qualid + name="infix <="/> + </ls_pos> <ls_pos name="infix +" id="1232" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="infix +"/></ls_pos> + <ip_library + name="real"/> + <ip_qualid + name="infix +"/> + </ls_pos> <ls_pos name="prefix -" id="1233" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="prefix -"/></ls_pos> + <ip_library + name="real"/> + <ip_qualid + name="prefix -"/> + </ls_pos> <ls_pos name="infix *" id="1234" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="infix *"/></ls_pos> + <ip_library + name="real"/> + <ip_qualid + name="infix *"/> + </ls_pos> <ls_pos name="inv" id="1300" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="inv"/></ls_pos> + <ip_library + name="real"/> + <ip_qualid + name="inv"/> + </ls_pos> <ls_pos name="infix >=" id="1357" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="infix >="/></ls_pos> + <ip_library + name="real"/> + <ip_qualid + name="infix >="/> + </ls_pos> <ls_pos name="sqrt" id="2564" - ip_theory="Square"> - <ip_library - name="real"/> - <ip_qualid - name="sqrt"/></ls_pos> + <ip_library + name="real"/> + <ip_qualid + name="sqrt"/> + </ls_pos> <pr_pos name="Assoc" id="1235" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="CommutativeGroup"/> - <ip_qualid - name="Assoc"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="CommutativeGroup"/> + <ip_qualid + name="Assoc"/> + </pr_pos> <pr_pos name="Unit_def_l" id="1242" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="CommutativeGroup"/> - <ip_qualid - name="Unit_def_l"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="CommutativeGroup"/> + <ip_qualid + name="Unit_def_l"/> + </pr_pos> <pr_pos name="Unit_def_r" id="1245" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="CommutativeGroup"/> - <ip_qualid - name="Unit_def_r"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="CommutativeGroup"/> + <ip_qualid + name="Unit_def_r"/> + </pr_pos> <pr_pos name="Inv_def_l" id="1248" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="CommutativeGroup"/> - <ip_qualid - name="Inv_def_l"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="CommutativeGroup"/> + <ip_qualid + name="Inv_def_l"/> + </pr_pos> <pr_pos name="Inv_def_r" id="1251" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="CommutativeGroup"/> - <ip_qualid - name="Inv_def_r"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="CommutativeGroup"/> + <ip_qualid + name="Inv_def_r"/> + </pr_pos> <pr_pos name="Comm" id="1254" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="CommutativeGroup"/> - <ip_qualid - name="Comm"/> - <ip_qualid - name="Comm"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="CommutativeGroup"/> + <ip_qualid + name="Comm"/> + <ip_qualid + name="Comm"/> + </pr_pos> <pr_pos name="Assoc" id="1259" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="Assoc"/> - <ip_qualid - name="Assoc"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="Assoc"/> + <ip_qualid + name="Assoc"/> + </pr_pos> <pr_pos name="Mul_distr_l" id="1266" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="Mul_distr_l"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="Mul_distr_l"/> + </pr_pos> <pr_pos name="Mul_distr_r" id="1273" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="Mul_distr_r"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="Mul_distr_r"/> + </pr_pos> <pr_pos name="Comm" id="1291" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="Comm"/> - <ip_qualid - name="Comm"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="Comm"/> + <ip_qualid + name="Comm"/> + </pr_pos> <pr_pos name="Unitary" id="1296" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="Unitary"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="Unitary"/> + </pr_pos> <pr_pos name="NonTrivialRing" id="1299" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="NonTrivialRing"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="NonTrivialRing"/> + </pr_pos> <pr_pos name="Inverse" id="1301" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="Inverse"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="Inverse"/> + </pr_pos> <pr_pos name="add_div" id="1315" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="add_div"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="add_div"/> + </pr_pos> <pr_pos name="sub_div" id="1322" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="sub_div"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="sub_div"/> + </pr_pos> <pr_pos name="neg_div" id="1329" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="neg_div"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="neg_div"/> + </pr_pos> <pr_pos name="assoc_div_mul" id="1341" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="assoc_div_mul"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="assoc_div_mul"/> + </pr_pos> <pr_pos name="assoc_div_div" id="1348" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="assoc_div_div"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="assoc_div_div"/> + </pr_pos> <pr_pos name="Refl" id="1366" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="Refl"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="Refl"/> + </pr_pos> <pr_pos name="Trans" id="1369" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="Trans"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="Trans"/> + </pr_pos> <pr_pos name="Antisymm" id="1376" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="Antisymm"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="Antisymm"/> + </pr_pos> <pr_pos name="Total" id="1381" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="Total"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="Total"/> + </pr_pos> <pr_pos name="ZeroLessOne" id="1386" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="ZeroLessOne"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="ZeroLessOne"/> + </pr_pos> <pr_pos name="CompatOrderAdd" id="1387" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="CompatOrderAdd"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="CompatOrderAdd"/> + </pr_pos> <pr_pos name="CompatOrderMult" id="1394" - ip_theory="Real"> - <ip_library - name="real"/> - <ip_qualid - name="CompatOrderMult"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="CompatOrderMult"/> + </pr_pos> <pr_pos name="Sqrt_positive" id="2566" - ip_theory="Square"> - <ip_library - name="real"/> - <ip_qualid - name="Sqrt_positive"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="Sqrt_positive"/> + </pr_pos> <pr_pos name="Sqrt_square" id="2569" - ip_theory="Square"> - <ip_library - name="real"/> - <ip_qualid - name="Sqrt_square"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="Sqrt_square"/> + </pr_pos> <pr_pos name="Square_sqrt" id="2572" - ip_theory="Square"> - <ip_library - name="real"/> - <ip_qualid - name="Square_sqrt"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="Square_sqrt"/> + </pr_pos> <pr_pos name="Sqrt_mul" id="2575" - ip_theory="Square"> - <ip_library - name="real"/> - <ip_qualid - name="Sqrt_mul"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="Sqrt_mul"/> + </pr_pos> <pr_pos name="Sqrt_le" id="2580" - ip_theory="Square"> - <ip_library - name="real"/> - <ip_qualid - name="Sqrt_le"/></pr_pos> + <ip_library + name="real"/> + <ip_qualid + name="Sqrt_le"/> + </pr_pos> <pr_pos name="norm2_pos" id="2841" - ip_theory="CauchySchwarzInequality"> - <ip_qualid - name="norm2_pos"/></pr_pos> + <ip_qualid + name="norm2_pos"/> + </pr_pos> <pr_pos name="p_expr" id="2867" - ip_theory="CauchySchwarzInequality"> - <ip_qualid - name="p_expr"/></pr_pos> + <ip_qualid + name="p_expr"/> + </pr_pos> <pr_pos name="p_pos" id="2878" - ip_theory="CauchySchwarzInequality"> - <ip_qualid - name="p_pos"/></pr_pos> + <ip_qualid + name="p_pos"/> + </pr_pos> <meta name="remove_logic"> <meta_arg_ls id="10"/> - </meta_args> + </meta> <meta name="remove_logic"> <meta_arg_ls id="131"/> - </meta_args> + </meta> <meta name="remove_logic"> <meta_arg_ls id="132"/> - </meta_args> + </meta> <meta name="remove_logic"> <meta_arg_ls id="144"/> - </meta_args> + </meta> <meta name="remove_logic"> <meta_arg_ls id="1232"/> - </meta_args> + </meta> <meta name="remove_logic"> <meta_arg_ls id="1233"/> - </meta_args> + </meta> <meta name="remove_logic"> <meta_arg_ls id="1234"/> - </meta_args> + </meta> <meta name="remove_logic"> <meta_arg_ls id="1300"/> - </meta_args> + </meta> <meta name="remove_logic"> <meta_arg_ls id="1357"/> - </meta_args> + </meta> <meta name="remove_logic"> <meta_arg_ls id="2564"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1235"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1242"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1245"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1248"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1251"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1254"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1259"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1266"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1273"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1291"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1296"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1299"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1301"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1315"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1322"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1329"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1341"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1348"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1366"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1369"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1376"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1381"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1386"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1387"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="1394"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="2566"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="2569"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="2572"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="2575"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="2580"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="2841"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="2867"/> - </meta_args> + </meta> <meta name="remove_prop"> <meta_arg_pr id="2878"/> - </meta_args> + </meta> <meta name="remove_type"> <meta_arg_ts id="1"/> - </meta_args> + </meta> <goal name="p_val_part" locfile="../triangle_inequality.why" @@ -881,7 +853,7 @@ <result status="valid" time="32.03"/> </proof> <proof - prover="8" + prover="7" timelimit="5" memlimit="1000" obsolete="false" @@ -1008,18 +980,10 @@ memlimit="1000" obsolete="false" archived="false"> - <result status="valid" time="0.02"/> - </proof> - <proof - prover="7" - timelimit="3" - memlimit="1000" - obsolete="false" - archived="false"> <result status="valid" time="0.28"/> </proof> <proof - prover="8" + prover="7" timelimit="5" memlimit="1000" obsolete="false" @@ -1067,14 +1031,6 @@ archived="false"> <result status="valid" time="0.00"/> </proof> - <proof - prover="6" - timelimit="3" - memlimit="1000" - obsolete="false" - archived="false"> - <result status="valid" time="0.16"/> - </proof> </goal> <goal name="norm_pos" @@ -1126,14 +1082,6 @@ </proof> <proof prover="7" - timelimit="3" - memlimit="1000" - obsolete="false" - archived="false"> - <result status="valid" time="0.02"/> - </proof> - <proof - prover="8" timelimit="5" memlimit="1000" obsolete="false" @@ -1200,15 +1148,7 @@ <result status="valid" time="4.62"/> </proof> <proof - prover="6" - timelimit="30" - memlimit="1000" - obsolete="false" - archived="false"> - <result status="valid" time="0.01"/> - </proof> - <proof - prover="8" + prover="7" timelimit="5" memlimit="1000" obsolete="false" diff --git a/share/why3session.dtd b/share/why3session.dtd index bf215c52f2..8e5cc8112c 100644 --- a/share/why3session.dtd +++ b/share/why3session.dtd @@ -55,23 +55,22 @@ <!ELEMENT label EMPTY> <!ATTLIST label name CDATA #REQUIRED> -<!ELEMENT metas (ts_pos*, ls_pos*, pr_pos*, meta_args*,goal)> +<!ELEMENT metas (ts_pos*,ls_pos*,pr_pos*,meta_args*,goal)> <!ATTLIST metas proved CDATA #REQUIRED> <!ATTLIST metas expanded CDATA #IMPLIED> -<!ELEMENT ts_pos (ip_library+,ip_qualid+)> +<!ELEMENT ts_pos (ip_library*,ip_qualid+)> <!ATTLIST ts_pos name CDATA #REQUIRED> <!ATTLIST ts_pos arity CDATA #REQUIRED> <!ATTLIST ts_pos id CDATA #REQUIRED> <!ATTLIST ts_pos ip_theory CDATA #REQUIRED> - -<!ELEMENT ls_pos (ip_library+,ip_qualid+)> +<!ELEMENT ls_pos (ip_library*,ip_qualid+)> <!ATTLIST ls_pos name CDATA #REQUIRED> <!ATTLIST ls_pos id CDATA #REQUIRED> <!ATTLIST ls_pos ip_theory CDATA #REQUIRED> -<!ELEMENT pr_pos (ip_library+,ip_qualid+)> +<!ELEMENT pr_pos (ip_library*,ip_qualid+)> <!ATTLIST pr_pos name CDATA #REQUIRED> <!ATTLIST pr_pos id CDATA #REQUIRED> <!ATTLIST pr_pos ip_theory CDATA #REQUIRED> diff --git a/src/session/session.ml b/src/session/session.ml index dbba1228e5..084f278a9d 100644 --- a/src/session/session.ml +++ b/src/session/session.ml @@ -558,26 +558,25 @@ and save_metas provers fmt _ m = fprintf fmt "@\n@[<v 1><metas@ proved=\"%b\"@ expanded=\"%b\">" m.metas_verified m.metas_expanded; let save_pos fmt pos = - fprintf fmt "@\n@[<v 1>ip_theory=\"%a\">" save_string pos.ip_theory; + fprintf fmt "ip_theory=\"%a\">" save_string pos.ip_theory; List.iter (fprintf fmt "@\n@[<v 1><ip_library@ name=\"%a\"/>@]" save_string) pos.ip_library; List.iter (fprintf fmt "@\n@[<v 1><ip_qualid@ name=\"%a\"/>@]" save_string) pos.ip_qualid; - fprintf fmt "@]"; in let save_ts_pos fmt ts pos = fprintf fmt "@\n@[<v 1><ts_pos@ name=\"%a\"@ arity=\"%i\"@ \ - id=\"%i\"@ %a</ts_pos>@]" + id=\"%i\"@ %a@]@\n</ts_pos>" save_string ts.ts_name.id_string (List.length ts.ts_args) (ts_hash ts) save_pos pos in let save_ls_pos fmt ls pos = (** TODO: add the signature? *) - fprintf fmt "@\n@[<v 1><ls_pos@ name=\"%a\"@ id=\"%i\"@ %a</ls_pos>@]" + fprintf fmt "@\n@[<v 1><ls_pos@ name=\"%a\"@ id=\"%i\"@ %a@]@\n</ls_pos>" save_string ls.ls_name.id_string (ls_hash ls) save_pos pos in let save_pr_pos fmt pr pos = - fprintf fmt "@\n@[<v 1><pr_pos@ name=\"%a\"@ id=\"%i\"@ %a</pr_pos>@]" + fprintf fmt "@\n@[<v 1><pr_pos@ name=\"%a\"@ id=\"%i\"@ %a@]@\n</pr_pos>" save_string pr.pr_name.id_string (pr_hash pr) save_pos pos in @@ -1888,7 +1887,7 @@ and merge_trans ~keygen ~theories env to_goal _ from_transf = with Exit -> () -(** convert the ident from the olf task to the ident at the same +(** convert the ident from the old task to the ident at the same position in the new task *) and merge_metas_aux ~keygen ~theories env to_goal _ from_metas = (** Find in the new task the new symbol (ts,ls,pr) *) @@ -1907,11 +1906,9 @@ and merge_metas_aux ~keygen ~theories env to_goal _ from_metas = let rec read_theory ip = function | [] -> raise (Env.LibFileNotFound ip.ip_library) | format::formats -> - try - Env.read_theory ~format env.env - ip.ip_library ip.ip_theory - with Env.LibFileNotFound _ | Env.TheoryNotFound _ -> - read_theory ip formats + try Env.read_theory ~format env.env ip.ip_library ip.ip_theory + with Env.LibFileNotFound _ | Env.TheoryNotFound _ -> + read_theory ip formats in let read_theory ip = if ip.ip_library = [] then Mstr.find ip.ip_theory theories -- GitLab