intermed.update Isabelle2011: HOL.Trueprop decompose-isar
authorWalther Neuper <neuper@ist.tugraz.at>
Thu, 10 Mar 2011 12:45:58 +0100
branchdecompose-isar
changeset 419247407ceef2aed
parent 41923 242b5880a684
child 41925 d4a8c40594a3
intermed.update Isabelle2011: HOL.Trueprop

src + test
find . -type f -exec sed -i s/"\"Trueprop\""/"\"HOL.Trueprop\""/g {} \;
src/Tools/isac/Knowledge/DiophantEq.thy
src/Tools/isac/ProgLang/Tools.sml
src/Tools/isac/ProgLang/Tools.thy
src/Tools/isac/ProgLang/calculate.sml
src/Tools/isac/ProgLang/rewrite.sml
src/Tools/isac/ProgLang/termC.sml
src/Tools/isac/Test_Isac.thy
test/Tools/isac/Interpret/script.sml
test/Tools/isac/Knowledge/poly.sml
test/Tools/isac/ProgLang/calculate.sml
test/Tools/isac/ProgLang/rewrite.sml
test/Tools/isac/ProgLang/termC.sml
     1.1 --- a/src/Tools/isac/Knowledge/DiophantEq.thy	Fri Mar 04 11:45:02 2011 +0100
     1.2 +++ b/src/Tools/isac/Knowledge/DiophantEq.thy	Thu Mar 10 12:45:58 2011 +0100
     1.3 @@ -32,7 +32,7 @@
     1.4  
     1.5  ML {*
     1.6  val subst = [(parseNEW ctxt "bdv::int", parseNEW ctxt "x::int")];
     1.7 -val t = parseNEW ctxt "x + 1 = (2::int)";
     1.8 +val t = parseNEW ctxt "x + y = (y::int)";
     1.9  *}
    1.10  
    1.11  ML {*
     2.1 --- a/src/Tools/isac/ProgLang/Tools.sml	Fri Mar 04 11:45:02 2011 +0100
     2.2 +++ b/src/Tools/isac/ProgLang/Tools.sml	Thu Mar 10 12:45:58 2011 +0100
     2.3 @@ -37,7 +37,7 @@
     2.4  > val (t as (Const(op0,t0) $ arg)) = (term_of o the o (parse thy)) s;
     2.5  > val (SOME (id,t')) = eval_Length thmid op_ t;
     2.6  val id = "#Length_[A = a * b, a // #2 = #2]" : string
     2.7 -val t' = Const ("Trueprop","bool => prop") $ (Const # $ (# $ #) $ Free (#,#))
     2.8 +val t' = Const ("HOL.Trueprop","bool => prop") $ (Const # $ (# $ #) $ Free (#,#))
     2.9  val it = "Length [A = a * b, a // #2 = #2] = #2" : cterm
    2.10  ---------------------------------------------
    2.11  > val thmid = "#Length_"; val op_ = "Length";
    2.12 @@ -50,7 +50,7 @@
    2.13  > val t = (term_of o the o (parse thy)) s;
    2.14  > val eval_fn = the (assoc (!eval_list, op_));
    2.15  > val (SOME(_,t')) = get_pair op_ eval_fn t;
    2.16 -val t' = Const ("Trueprop","bool => prop") $ (Const # $ (# $ #) $ Free (#,#))
    2.17 +val t' = Const ("HOL.Trueprop","bool => prop") $ (Const # $ (# $ #) $ Free (#,#))
    2.18  val it = "Length [A = a * b, a // #2 = #2] = #2" : cterm
    2.19  
    2.20  > val ct = (the o (parse thy)) s;
     3.1 --- a/src/Tools/isac/ProgLang/Tools.thy	Fri Mar 04 11:45:02 2011 +0100
     3.2 +++ b/src/Tools/isac/ProgLang/Tools.thy	Thu Mar 10 12:45:58 2011 +0100
     3.3 @@ -141,14 +141,14 @@
     3.4  > eval_matches "/thmid/" "/op_/" t thy;
     3.5  SOME
     3.6      ("matches (a * b ^^^ #2 = c) (#3 * x ^^^ #2 = #1) = True",
     3.7 -     Const ("Trueprop","bool => prop") $ (Const # $ (# $ #) $ Const (#,#)))
     3.8 +     Const ("HOL.Trueprop","bool => prop") $ (Const # $ (# $ #) $ Const (#,#)))
     3.9    : (string * term) option 
    3.10  
    3.11  > val t = (term_of o the o (parse thy)) 
    3.12  	      "matches (a * b^^^#2 = c) (#3 * x^^^#2222 = #1)";
    3.13  > eval_matches "/thmid/" "/op_/" t thy;
    3.14  SOME ("matches (a * b ^^^ #2 = c) (#3 * x ^^^ #2222 = #1) = False",
    3.15 -     Const ("Trueprop","bool => prop") $ (Const # $ (# $ #) $ Const (#,#)))
    3.16 +     Const ("HOL.Trueprop","bool => prop") $ (Const # $ (# $ #) $ Const (#,#)))
    3.17  
    3.18  > val t = (term_of o the o (parse thy)) 
    3.19                 "matches (a = b) (x + #1 + #-1 * #2 = #0)";
     4.1 --- a/src/Tools/isac/ProgLang/calculate.sml	Fri Mar 04 11:45:02 2011 +0100
     4.2 +++ b/src/Tools/isac/ProgLang/calculate.sml	Thu Mar 10 12:45:58 2011 +0100
     4.3 @@ -379,12 +379,12 @@
     4.4      Trueprop $ (list_implies (prems, mk_equality (l,r)));
     4.5  
     4.6  (* 'norms' a rule, e.g.
     4.7 -(*1*) a = 1 ==> a*(b+c) = b+c 
     4.8 -                =>  a = 1 ==> a*(b+c) = b+c          no change
     4.9 -(*2*) t = t     =>  (t=t) = True                        !!
    4.10 -(*3*) [| k < l; m + l = k + n |] ==> m < n
    4.11 -	        =>  [| k<l; m+l=k+n |] ==> m < n = True !! *)
    4.12 -(* val it = fn : term -> term *)
    4.13 +(*1*) from a = 1 ==> a*(b+c) = b+c 
    4.14 +      to   a = 1 ==> a*(b+c) = b+c                     no change
    4.15 +(*2*) from t = t
    4.16 +      to  (t = t) = True                               !!
    4.17 +(*3*) from [| k < l; m + l = k + n |] ==> m < n
    4.18 +      to   [| k < l; m + l = k + n |] ==> m < n = True !! *)
    4.19  fun norm rule =
    4.20    let
    4.21      val (prems,concl)=(map strip_trueprop(Logic.strip_imp_prems rule),
     5.1 --- a/src/Tools/isac/ProgLang/rewrite.sml	Fri Mar 04 11:45:02 2011 +0100
     5.2 +++ b/src/Tools/isac/ProgLang/rewrite.sml	Thu Mar 10 12:45:58 2011 +0100
     5.3 @@ -22,9 +22,9 @@
     5.4       else NONE end)
     5.5  (* one rewrite (possibly conditional, ordered) EXOR exn EXOR go into subterms *)
     5.6  and rew_sub thy i bdv tless rls put_asm lrd r t = 
     5.7 -  ((*tracing ("@@@ rew_sub begin: t = "^(term2str t));
     5.8 +  (tracing ("@@@ rew_sub begin: t = "^(term2str t));
     5.9     tracing ("@@@ rew_sub begin: bdv = "^(PolyML.makestring bdv));
    5.10 -   tracing ("@@@ rew_sub begin: r = "^(term2str r));*)
    5.11 +   tracing ("@@@ rew_sub begin: r = "^(term2str r));
    5.12      let                  (* copy from Pure/thm.ML: fun rewritec *)
    5.13       val (lhs, rhs) = (HOLogic.dest_eq o HOLogic.dest_Trueprop
    5.14                         o Logic.strip_imp_concl) r;
    5.15 @@ -650,7 +650,7 @@
    5.16  	       "matches (?a = ?b) (x = #0)";
    5.17    eval_matches """" xxx thy;
    5.18  SOME ("matches (?a = ?b) (x + #1 + #-1 * #2 = #0) = True",
    5.19 -     Const ("Trueprop","bool => prop") $ (Const # $ (# $ #) $ Const (#,#)))
    5.20 +     Const ("HOL.Trueprop","bool => prop") $ (Const # $ (# $ #) $ Const (#,#)))
    5.21  
    5.22  
    5.23  
     6.1 --- a/src/Tools/isac/ProgLang/termC.sml	Fri Mar 04 11:45:02 2011 +0100
     6.2 +++ b/src/Tools/isac/ProgLang/termC.sml	Thu Mar 10 12:45:58 2011 +0100
     6.3 @@ -288,12 +288,12 @@
     6.4  *)
     6.5  
     6.6  (*review Isabelle2009/src/HOL/Tools/hologic.ML*)
     6.7 -val prop = Type ("HOL.prop",[]);     (* ~/Diss.99/Integers-Isa/tools.sml*)
     6.8 +(*val prop = Type ("HOL.Trueprop",[]);      ~/Diss.99/Integers-Isa/tools.sml*)
     6.9  val bool = Type ("HOL.bool",[]);     (* 2002 Integ.int *)
    6.10 -val Trueprop = Const("Trueprop",bool-->prop);
    6.11 -fun mk_prop t = Trueprop $ t;
    6.12 -val true_as_term = Const("HOL.True", bool);
    6.13 -val false_as_term = Const("HOL.False", bool);
    6.14 +val Trueprop = HOLogic.Trueprop;
    6.15 +fun mk_prop t = HOLogic.mk_Trueprop t;
    6.16 +val true_as_term = HOLogic.true_const;
    6.17 +val false_as_term = HOLogic.false_const;
    6.18  val true_as_cterm = cterm_of (Thy_Info.get_theory "HOL") true_as_term;
    6.19  val false_as_cterm = cterm_of (Thy_Info.get_theory "HOL") false_as_term;
    6.20  
    6.21 @@ -336,7 +336,7 @@
    6.22  fun mk_equality (t,u) = (Const("HOL.eq",[type_of t,type_of u]--->bool) $ t $ u); 
    6.23  fun is_expliceq (Const("HOL.eq",_) $ (Free _) $ u)  =  true
    6.24    | is_expliceq _ = false;
    6.25 -fun strip_trueprop (Const("Trueprop",_) $ t) = t
    6.26 +fun strip_trueprop (Const("HOL.Trueprop",_) $ t) = t
    6.27    | strip_trueprop t = t;
    6.28  (*  | strip_trueprop t = raise TERM("strip_trueprop", [t]);
    6.29  *)
     7.1 --- a/src/Tools/isac/Test_Isac.thy	Fri Mar 04 11:45:02 2011 +0100
     7.2 +++ b/src/Tools/isac/Test_Isac.thy	Thu Mar 10 12:45:58 2011 +0100
     7.3 @@ -15,7 +15,7 @@
     7.4  
     7.5  theory Test_Isac imports "Knowledge/Isac" begin
     7.6  
     7.7 -ML{* writeln "**** run the tests **************************************" *};
     7.8 +ML{* writeln "**** run the tests **************************************" *}
     7.9  ML {* Toplevel.debug := true; *}
    7.10  (* 
    7.11  cd "systest";
    7.12 @@ -30,18 +30,155 @@
    7.13  	(* use"testdaten.sml"; no update after dropping 'errorBound'*)    
    7.14   	cd "../..";
    7.15  *)
    7.16 -ML{* writeln "**** run systests complete ******************************" *};
    7.17 +ML{* writeln "**** run systests complete ******************************" *}
    7.18  
    7.19 -use"../../../test/Tools/isac/calcelems.sml"; (*complete*)
    7.20 +use"../../../test/Tools/isac/calcelems.sml" (*complete*)
    7.21  
    7.22  (*
    7.23  cd"smltest/Scripts";
    7.24  *)
    7.25 -use"../../../test/Tools/isac/ProgLang/termC.sml"; (*part.*)
    7.26 +use"../../../test/Tools/isac/ProgLang/termC.sml" (*part.*)
    7.27 +use"../../../test/Tools/isac/ProgLang/calculate.sml" (*part.*)
    7.28  
    7.29 +ML {*
    7.30 +"----------- assemble rewrite ---------------------------";
    7.31 +"===== rewriting by thm with 'a";
    7.32 +(*show_types := true;*)
    7.33 +val thy = @{theory Complex_Main};
    7.34 +val ctxt = @{context};
    7.35 +val thm = @{thm add_commute};
    7.36 +val t = (term_of o the) (parse thy "((r + u) + t) + s");
    7.37 +"----- from old: fun rewrite__";
    7.38 +val bdv = [];
    7.39 +*}
    7.40 +ML {*
    7.41 +val r = (((inst_bdv bdv) o norm o #prop o rep_thm) thm);
    7.42 +term2str r;
    7.43 +*}
    7.44  
    7.45 -use"../../../test/Tools/isac/ProgLang/calculate.sml"; (*part.*)
    7.46 -use"../../../test/Tools/isac/ProgLang/rewrite.sml"; (*GOON*)
    7.47 +ML {* (*TermC.sml*)
    7.48 +
    7.49 +*}
    7.50 +
    7.51 +ML {*
    7.52 +"--------------------------------------------------------";
    7.53 +val thy = @{theory Complex_Main};
    7.54 +val thm = @{thm add_commute};
    7.55 +val rule = (#prop o rep_thm) thm;
    7.56 +"--------------------------------------------------------";
    7.57 +term2str rule;
    7.58 +
    7.59 +    val (prems,concl)=(map strip_trueprop(Logic.strip_imp_prems rule),
    7.60 +		       (strip_trueprop o  Logic.strip_imp_concl)rule);
    7.61 +"--------------------------------------------------------";
    7.62 +concl;
    7.63 +  is_equality concl; (*Isabelle2009-2: true, Isabelle2011: false*)
    7.64 +(*-.-.-.-.-.-isolate response.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
    7.65 +val (l,r) = dest_equals' concl;
    7.66 +  l = r;             (*Isabelle2009-2: false*)
    7.67 +
    7.68 +val rule' = norm rule;
    7.69 +rule = rule';        (*Isabelle2009-2: true*)
    7.70 +term2str rule';
    7.71 +(*Isabelle2009-2: val it = "?a + ?b = ?b + ?a" : string*)
    7.72 +(*Isabelle2011: val it = "(?a + ?b = ?b + ?a) = True": string*)
    7.73 +-.-.-.-.-.-.-isolate response.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.*)
    7.74 +*}
    7.75 +
    7.76 +ML {*Trueprop*}
    7.77 +
    7.78 +ML {* 
    7.79 +
    7.80 +Config.put show_types true (thy2ctxt (@{theory "Isac"}))
    7.81 +
    7.82 +*}
    7.83 +
    7.84 +ML {*
    7.85 +"----- from old: and rew_sub";
    7.86 +val (lhs,rhs) = (dest_equals' o strip_trueprop 
    7.87 +   	      o Logic.strip_imp_concl) r;
    7.88 +*}
    7.89 +ML {*
    7.90 +(* old
    7.91 +val insts = Pattern.match thy (lhs,t) (Vartab.empty, Vartab.empty);*)
    7.92 +"----- fun match_rew in Pure/pattern.ML";
    7.93 +val rtm = the_default rhs (Term.rename_abs lhs t rhs);
    7.94 +*}
    7.95 +ML {*
    7.96 +
    7.97 +writeln(Syntax.string_of_term ctxt rtm);
    7.98 +writeln(Syntax.string_of_term ctxt lhs);
    7.99 +writeln(Syntax.string_of_term ctxt t);
   7.100 +
   7.101 +(Pattern.match thy (lhs, t) (Vartab.empty, Vartab.empty));
   7.102 +*}
   7.103 +ML {*
   7.104 +val (rew, rhs) = (Envir.subst_term 
   7.105 +  (Pattern.match thy (lhs, t) (Vartab.empty, Vartab.empty)) rtm, rtm);
   7.106 +(*lookup in isabelle?trace?response...*)
   7.107 +writeln(Syntax.string_of_term ctxt rew);
   7.108 +writeln(Syntax.string_of_term ctxt rhs);
   7.109 +
   7.110 +*}
   7.111 +ML {*
   7.112 +"===== rewriting: prep insertion into rew_sub";
   7.113 +val thy = @{theory Complex_Main};
   7.114 +val ctxt = @{context};
   7.115 +val thm =  @{thm nonzero_mult_divide_cancel_right};
   7.116 +val r = Thm.prop_of thm;"----------- assemble rewrite ---------------------------";
   7.117 +"===== rewriting by thm with 'a";
   7.118 +show_types := true;
   7.119 +val thy = @{theory Complex_Main};
   7.120 +val ctxt = @{context};
   7.121 +val thm = @{thm add_commute};
   7.122 +val t = (term_of o the) (parse thy "((r + u) + t) + s");
   7.123 +"----- from old: fun rewrite__";
   7.124 +val bdv = [];
   7.125 +val r = (((inst_bdv bdv) o norm o #prop o rep_thm) thm);
   7.126 +"----- from old: and rew_sub";
   7.127 +val (lhs,rhs) = (dest_equals' o strip_trueprop 
   7.128 +   	      o Logic.strip_imp_concl) r;
   7.129 +(* old
   7.130 +val insts = Pattern.match thy (lhs,t) (Vartab.empty, Vartab.empty);*)
   7.131 +"----- fun match_rew in Pure/pattern.ML";
   7.132 +val rtm = the_default rhs (Term.rename_abs lhs t rhs);
   7.133 +
   7.134 +writeln(Syntax.string_of_term ctxt rtm);
   7.135 +writeln(Syntax.string_of_term ctxt lhs);
   7.136 +writeln(Syntax.string_of_term ctxt t);
   7.137 +
   7.138 +(Pattern.match thy (lhs, t) (Vartab.empty, Vartab.empty));
   7.139 +val (rew, rhs) = (Envir.subst_term 
   7.140 +  (Pattern.match thy (lhs, t) (Vartab.empty, Vartab.empty)) rtm, rtm);
   7.141 +(*lookup in isabelle?trace?response...*)
   7.142 +writeln(Syntax.string_of_term ctxt rew);
   7.143 +writeln(Syntax.string_of_term ctxt rhs);
   7.144 +
   7.145 +"===== rewriting: prep insertion into rew_sub";
   7.146 +val thy = @{theory Complex_Main};
   7.147 +val ctxt = @{context};
   7.148 +val thm =  @{thm nonzero_mult_divide_cancel_right};
   7.149 +val r = Thm.prop_of thm;
   7.150 +val tm = @{term "x*2 / 2::real"};
   7.151 +"----- and rew_sub";
   7.152 +val (lhs, rhs) = (HOLogic.dest_eq o HOLogic.dest_Trueprop
   7.153 +                  o Logic.strip_imp_concl) r;
   7.154 +val r' = Envir.subst_term (Pattern.match thy (lhs, tm) 
   7.155 +                                (Vartab.empty, Vartab.empty)) r;
   7.156 +val p' = (fst o Logic.strip_prems) (Logic.count_prems r', [], r');
   7.157 +val t' = (snd o HOLogic.dest_eq o HOLogic.dest_Trueprop 
   7.158 +            o Logic.strip_imp_concl) r';
   7.159 +
   7.160 +(*is displayed on top of <response> buffer...*)
   7.161 +Pretty.writeln (ProofContext.pretty_term_abbrev @{context} r');
   7.162 +Pretty.writeln (ProofContext.pretty_term_abbrev @{context} t');
   7.163 +(*}*)
   7.164 +
   7.165 +"----------- test rewriting without Isac's thys ---------";
   7.166 +*}
   7.167 +
   7.168 +
   7.169 +use"../../../test/Tools/isac/ProgLang/rewrite.sml" (*GOON*)
   7.170  (*
   7.171  	use"listg.sml";
   7.172   	use"scrtools.sml";
     8.1 --- a/test/Tools/isac/Interpret/script.sml	Fri Mar 04 11:45:02 2011 +0100
     8.2 +++ b/test/Tools/isac/Interpret/script.sml	Thu Mar 10 12:45:58 2011 +0100
     8.3 @@ -184,7 +184,7 @@
     8.4     TYPE
     8.5        ("Illegal type for constant \"op =\" :: \"[real, bool] => bool\"",
     8.6           [],
     8.7 -         [Const ("Trueprop", "bool => prop") $
     8.8 +         [Const ("HOL.Trueprop", "bool => prop") $
     8.9                 (Const ("HOL.eq", "[RealDef.real, bool] => bool") $ ... $ ...)])
    8.10     raised
    8.11  ... this was because eval_argument_in took "argument_in (lhs (M_b 0 = 0))"
     9.1 --- a/test/Tools/isac/Knowledge/poly.sml	Fri Mar 04 11:45:02 2011 +0100
     9.2 +++ b/test/Tools/isac/Knowledge/poly.sml	Thu Mar 10 12:45:58 2011 +0100
     9.3 @@ -184,7 +184,7 @@
     9.4  "----- eval_is_multUnordered ---";
     9.5  val tm = str2term "(5 * x ^^^ 2 * (2 * x ^^^ 7) + 5 * x ^^^ 2 * 3 + (6 * x ^^^ 7 + 9) + (-1 * (3 * x ^^^ 5 * (6 * x ^^^ 4)) + -1 * (3 * x ^^^ 5 * -1) +  (-48 * x ^^^ 4 + 8))) is_multUnordered";
     9.6  case eval_is_multUnordered "testid" "" tm thy of
     9.7 -    SOME (_, Const ("Trueprop", _) $ 
     9.8 +    SOME (_, Const ("HOL.Trueprop", _) $ 
     9.9                     (Const ("HOL.eq", _) $
    9.10                            (Const ("Poly.is'_multUnordered", _) $ _) $ 
    9.11                            Const ("True", _))) => ()
    10.1 --- a/test/Tools/isac/ProgLang/calculate.sml	Fri Mar 04 11:45:02 2011 +0100
    10.2 +++ b/test/Tools/isac/ProgLang/calculate.sml	Thu Mar 10 12:45:58 2011 +0100
    10.3 @@ -9,6 +9,7 @@
    10.4  "--------------------------------------------------------";
    10.5  "table of contents --------------------------------------";
    10.6  "--------------------------------------------------------";
    10.7 +"----------- fun norm -----------------------------------";
    10.8  "----------- check return value of get_calculation_  ----";
    10.9  "----------- fun calculate_ -----------------------------";
   10.10  "----------- fun calculate_ -----------------------------";
   10.11 @@ -23,11 +24,10 @@
   10.12  "--------------------------------------------------------";
   10.13  "--------------------------------------------------------";
   10.14  
   10.15 -
   10.16  "----------- check return value of get_calculation_  ----";
   10.17  "----------- check return value of get_calculation_  ----";
   10.18  "----------- check return value of get_calculation_  ----";
   10.19 -val thy = theory "Poly";
   10.20 +val thy = @{theory "Poly"};
   10.21  val cal = snd (assoc1 (! calclist', "is_polyexp"));
   10.22  val t = @{term "(x / x) is_polyexp"};
   10.23  val SOME (thmID, thm) = get_calculation_ thy cal t;
   10.24 @@ -38,7 +38,7 @@
   10.25  "----------- fun calculate_ -----------------------------";
   10.26  "----------- fun calculate_ -----------------------------";
   10.27  "----------- fun calculate_ -----------------------------";
   10.28 -val thy = theory "Test";
   10.29 +val thy = @{theory "Test"};
   10.30  "===== test 1";
   10.31  val t = (term_of o the o (parse thy)) "1+2";
   10.32  val SOME (thmID,thm) = get_calculation_ thy (the(assoc(calclist,"PLUS"))) t;
   10.33 @@ -47,6 +47,7 @@
   10.34  "===== test 2";
   10.35  val t = (term_of o the o (parse thy)) "((1+2)*4/3)^^^2";
   10.36  val SOME (thmID,thm) = get_calculation_ thy (the(assoc(calclist,"PLUS"))) t;
   10.37 +(*========== inhibit exn =======================================================
   10.38  val SOME (t,_) = rewrite_ thy tless_true tval_rls true thm t;
   10.39  term2str t = "(3 * 4 / 3) ^^^ 2";
   10.40  
   10.41 @@ -73,12 +74,12 @@
   10.42  "----------- calculate from script ----------------------";
   10.43  "----------- calculate from script ----------------------";
   10.44  store_pbt
   10.45 - (prep_pbt (theory "Test") "pbl_ttest" [] e_pblID
   10.46 + (prep_pbt (@{theory "Test"}) "pbl_ttest" [] e_pblID
   10.47   (["test"],
   10.48    [],
   10.49    e_rls, NONE, []));
   10.50  store_pbt
   10.51 - (prep_pbt (theory "Test") "pbl_ttest_calc" [] e_pblID
   10.52 + (prep_pbt (@{theory "Test"}) "pbl_ttest_calc" [] e_pblID
   10.53   (["calculate","test"],
   10.54    [("#Given" ,["realTestGiven t_t"]),
   10.55     ("#Find"  ,["realTestFind s_s"])
   10.56 @@ -86,7 +87,7 @@
   10.57    e_rls, NONE, [["Test","test_calculate"]]));
   10.58  
   10.59  store_met
   10.60 - (prep_met (theory "Test") "met_testcal" [] e_metID
   10.61 + (prep_met (@{theory "Test"}) "met_testcal" [] e_metID
   10.62   (["Test","test_calculate"]:metID,
   10.63    [("#Given" ,["realTestGiven t_t"]),
   10.64     ("#Find"  ,["realTestFind s_s"])
   10.65 @@ -110,6 +111,7 @@
   10.66  val (dI',pI',mI') =
   10.67    ("Test",["calculate","test"],["Test","test_calculate"]);
   10.68  
   10.69 +============ inhibit exn =====================================================*)
   10.70  
   10.71  (*===== inhibit exn ?===========================================================
   10.72  GOON after rewriting works in Oct.10
   10.73 @@ -473,3 +475,4 @@
   10.74  term2str t';
   10.75  "False";
   10.76  ===== inhibit exn ?===========================================================*)
   10.77 +
    11.1 --- a/test/Tools/isac/ProgLang/rewrite.sml	Fri Mar 04 11:45:02 2011 +0100
    11.2 +++ b/test/Tools/isac/ProgLang/rewrite.sml	Thu Mar 10 12:45:58 2011 +0100
    11.3 @@ -28,7 +28,7 @@
    11.4  "----------- assemble rewrite ---------------------------";
    11.5  "----------- assemble rewrite ---------------------------";
    11.6  "===== rewriting by thm with 'a";
    11.7 -show_types := true;
    11.8 +(*show_types := true;*)
    11.9  val thy = @{theory Complex_Main};
   11.10  val ctxt = @{context};
   11.11  val thm = @{thm add_commute};
   11.12 @@ -37,6 +37,7 @@
   11.13  val bdv = [];
   11.14  val r = (((inst_bdv bdv) o norm o #prop o rep_thm) thm);
   11.15  "----- from old: and rew_sub";
   11.16 +(*========== inhibit exn =======================================================
   11.17  val (lhs,rhs) = (dest_equals' o strip_trueprop 
   11.18     	      o Logic.strip_imp_concl) r;
   11.19  (* old
   11.20 @@ -74,6 +75,7 @@
   11.21  Pretty.writeln (ProofContext.pretty_term_abbrev @{context} r');
   11.22  Pretty.writeln (ProofContext.pretty_term_abbrev @{context} t');
   11.23  (*}*)
   11.24 +============ inhibit exn =====================================================*)
   11.25  
   11.26  "----------- test rewriting without Isac's thys ---------";
   11.27  "----------- test rewriting without Isac's thys ---------";
   11.28 @@ -84,6 +86,7 @@
   11.29  val ctxt = @{context};
   11.30  val thm =  @{thm add_commute};
   11.31  val tm = @{term "x + y*z::real"};
   11.32 +(*-.-.-.-.-.-isolate response.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
   11.33  
   11.34  val SOME (r,_) = (rewrite_ thy dummy_ord e_rls false thm tm)
   11.35    handle _ => error "rewrite.sml diff.behav. in rewriting";
   11.36 @@ -111,6 +114,7 @@
   11.37  val tm = @{term "x*y + z::real"};
   11.38  val SOME (r,_) = (rewrite_ thy tord e_rls false thm tm)
   11.39    handle _ => error "rewrite.sml diff.behav. in rewriting";
   11.40 +-.-.-.-.-.-.-isolate response.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.*)
   11.41  
   11.42  
   11.43  "----------- conditional rewriting without Isac's thys --";
   11.44 @@ -160,7 +164,7 @@
   11.45  (*and make asms without Trueprop, beginning with the result:*)
   11.46  val tm = @{term "x*y / y::real"};
   11.47  val (t', asm, _, _) = rew_sub thy 0 [] dummy_ord e_rls true [] (prop_of thm) tm;
   11.48 -show_types := false;
   11.49 +(*show_types := false;*)
   11.50  "----- evaluate arguments";
   11.51  val (thy, i, bdv, tless, rls, put_asm, lrd, r, t) = 
   11.52      (thy, 0, [], dummy_ord, e_rls, true, [], (prop_of thm), tm);
   11.53 @@ -325,7 +329,7 @@
   11.54  (*checked visually: trace_rewrite looks like above for 2009*)
   11.55  
   11.56  trace_rewrite := false; (*<<<<<<<<<<<<<<<<<<<<<###############################*)
   11.57 -show_types := false;
   11.58 +(*show_types := false;*)
   11.59  writeln "----- rewrite_ rat_mult_poly_r--------------------------";
   11.60  val NONE (*SOME (t'', _)*) = rewrite_ thy dummy_ord erls true thm t;
   11.61  (*t' = t''; (*false because of further rewrites in t'*)*)
   11.62 @@ -440,7 +444,7 @@
   11.63  if is_multUnordered t then () else error "rewrite.sml diff. is_multUnordered 2";
   11.64  val tm = str2term "(x^^^2 * x) is_multUnordered";
   11.65  case eval_is_multUnordered "testid" "" tm thy of
   11.66 -    SOME (_, Const ("Trueprop", _) $ 
   11.67 +    SOME (_, Const ("HOL.Trueprop", _) $ 
   11.68                     (Const ("HOL.eq", _) $
   11.69                            (Const ("Poly.is'_multUnordered", _) $ _) $ 
   11.70                            Const ("True", _))) => ()
   11.71 @@ -522,5 +526,4 @@
   11.72      ([], true) => ()
   11.73    | _ => error "rewrite.sml: diff. is_multUnordered, eval__true";
   11.74  
   11.75 -(*-.-.-.-.-.-isolate response.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
   11.76  -.-.-.-.-.-.-isolate response.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.*)
    12.1 --- a/test/Tools/isac/ProgLang/termC.sml	Fri Mar 04 11:45:02 2011 +0100
    12.2 +++ b/test/Tools/isac/ProgLang/termC.sml	Thu Mar 10 12:45:58 2011 +0100
    12.3 @@ -208,7 +208,7 @@
    12.4  val t = (the (parse thy str)) handle _ => error "termC.sml parsing 'x + 2*z' failed";
    12.5  
    12.6  "===== fun parse_patt caused error in fun T_a2real ===";
    12.7 -val thy = theory "Poly";
    12.8 +val thy = @{theory "Poly"};
    12.9  parse_patt thy "?p is_addUnordered";
   12.10  parse_patt thy "?p :: real";
   12.11  
   12.12 @@ -261,11 +261,11 @@
   12.13  val t = (thy, str) |>> thy2ctxt 
   12.14                     |-> ProofContext.read_term_pattern
   12.15                     |> numbers_to_string;
   12.16 -show_types := true;
   12.17 +(*show_types := true;  TODO.WN110304 reanimate
   12.18  val t1 = typ_a2real t;
   12.19  if term2str t1 = "~ (matchsub ((?a::real) + ((?b::real) + (?c::real))) (t_t::real) |\n   matchsub (?a + (?b - ?c)) t_t |\n   matchsub (?a - (?b + ?c)) t_t | matchsub (?a + (?b - ?c)) t_t)"
   12.20  then () else error "termC.sml type-structure of \"?a :: real\" changed expl";
   12.21 -show_types := false;
   12.22 +show_types := false;*)
   12.23  
   12.24  
   12.25  
   12.26 @@ -310,3 +310,41 @@
   12.27  tracing "----------------DIFFERENT output----";
   12.28  *)
   12.29  
   12.30 +"----------- check writeln, tracing for string markup ---";
   12.31 +val t = @{term "x + 1"};
   12.32 +val str_markup = (Syntax.string_of_term
   12.33 +  (ProofContext.init_global (Thy_Info.get_theory "Isac"))) t;
   12.34 +val str = Print_Mode.setmp [] (Syntax.string_of_term
   12.35 +  (ProofContext.init_global (Thy_Info.get_theory "Isac"))) t;
   12.36 +
   12.37 +writeln "----------------writeln str_markup---";
   12.38 +writeln str_markup;
   12.39 +writeln "----------------writeln str---";
   12.40 +writeln str;
   12.41 +writeln "----------------SAME output: no markup----";
   12.42 +
   12.43 +writeln "----------------writeln PolyML.makestring str_markup---";
   12.44 +writeln (PolyML.makestring str_markup);
   12.45 +writeln "----------------writeln PolyML.makestring str---";
   12.46 +writeln (PolyML.makestring str);
   12.47 +writeln "----------------DIFFERENT output----";
   12.48 +
   12.49 +tracing "----------------tracing str_markup---";
   12.50 +tracing str_markup;
   12.51 +tracing "----------------tracing str---";
   12.52 +tracing str;
   12.53 +tracing "----------------SAME output: no markup----";
   12.54 +
   12.55 +tracing "----------------writeln PolyML.makestring str_markup---";
   12.56 +tracing (PolyML.makestring str_markup);
   12.57 +tracing "----------------writeln PolyML.makestring str---";
   12.58 +tracing (PolyML.makestring str);
   12.59 +tracing "----------------DIFFERENT output----";
   12.60 +(*
   12.61 +redirect_tracing "/home/neuper/tmp/trace.sml";
   12.62 +tracing "----------------writeln str_markup---";
   12.63 +tracing str_markup;
   12.64 +tracing "----------------writeln str---";
   12.65 +tracing str;
   12.66 +tracing "----------------DIFFERENT output----";
   12.67 +*)