test/Tools/isac/OLDTESTS/script_if.sml
author wneuper <Walther.Neuper@jku.at>
Mon, 01 Jan 2024 11:31:16 +0100
changeset 60789 8fa678b678e8
parent 60769 0df0759fed26
permissions -rw-r--r--
Doc/Specify_Phase 4: start use antiquotations from isar-ref
neuper@37906
     1
(* 1.if-te-else- 8.02 f"ur Richard
neuper@37906
     2
neuper@37906
     3
   use"ifthenelse.sml";
neuper@37906
     4
   use"tests/rationals2.sml";
neuper@37906
     5
   *)
neuper@37906
     6
neuper@37906
     7
neuper@37906
     8
neuper@37906
     9
(*---------------- 25.7.02 ---------------------*)
neuper@37906
    10
wneuper@59592
    11
val thy = (theory "Isac_Knowledge");
walther@60340
    12
val t = (Thm.term_of o the o (TermC.parse thy)) "contains_root (sqrt(x)=1)";
neuper@37926
    13
val SOME(ss,tt) = eval_contains_root "xxx" 1 t thy;
neuper@37906
    14
walther@60340
    15
val t = (Thm.term_of o the o (TermC.parse thy)) "is_rootequation_in (sqrt(x)=1) x";
neuper@37926
    16
val SOME(ss,tt) = eval_is_rootequation_in "is_rootequation_i" 1 t thy; 
neuper@37906
    17
neuper@37906
    18
(*---
walther@60340
    19
val v = (Thm.term_of o the o (TermC.parse thy)) "x";
walther@60340
    20
val t = (Thm.term_of o the o (TermC.parse thy)) "sqrt(#3+#4*x)";
neuper@37906
    21
scan t v;
walther@60340
    22
val t = (Thm.term_of o the o (TermC.parse thy)) "sqrt(#3+#4*a)";
neuper@37906
    23
scan t v;
walther@60340
    24
val t = (Thm.term_of o the o (TermC.parse thy)) "#1 + #2*sqrt(#3+#4*x)";
neuper@37906
    25
scan t v;
walther@60340
    26
val t = (Thm.term_of o the o (TermC.parse thy)) "x + #2*sqrt(#3+#4*a)";
neuper@37906
    27
scan t v;
neuper@37906
    28
---*)
walther@60340
    29
val t = (Thm.term_of o the o (TermC.parse thy)) 
neuper@37906
    30
	    "is_rootequation_in (1 + 2*sqrt(3+4*x)=0) x";
neuper@37926
    31
val SOME(ss,tt) = eval_is_rootequation_in "is_rootequation_i" 1 t thy; 
neuper@37906
    32
walther@60340
    33
val t = (Thm.term_of o the o (TermC.parse thy)) 
neuper@37906
    34
	    "is_rootequation_in (x + 2*sqrt(3+4*a)=0) x";
neuper@37926
    35
val SOME(ss,tt) = eval_is_rootequation_in "is_rootequation_i" 1 t thy; 
neuper@37906
    36
walther@60230
    37
val t = (Thm.term_of o the o (TermC.parse Test.thy)) 
neuper@37906
    38
	    "is_rootequation_in (sqrt(x)=1) x";
Walther@60650
    39
TermC.atom_trace_detail @{context} t;
walther@60230
    40
val t = (Thm.term_of o the o (TermC.parse (theory "Isac_Knowledge"))) 
neuper@37906
    41
	    "is_rootequation_in (sqrt(x)=1) x";
Walther@60650
    42
TermC.atom_trace_detail @{context} t;
neuper@37906
    43
neuper@37906
    44
(*
neuper@37926
    45
val SOME(tt,_) = rewrite_set_ Test.thytrue tval_rls t;
neuper@37906
    46
*)
wneuper@59592
    47
val SOME(tt,_) = rewrite_set_ (theory "Isac_Knowledge") true tval_rls t;
neuper@37906
    48
wneuper@59592
    49
rewrite_set "Isac_Knowledge" true 
neuper@37906
    50
	    "tval_rls" "is_rootequation_in (sqrt(x)=1) x";
neuper@38058
    51
rewrite_set "Test" true 
neuper@37906
    52
	    "tval_rls" "is_rootequation_in (sqrt(x)=1) x";
neuper@37906
    53
neuper@37906
    54
walther@60242
    55
(*WN:  \<up> --- bitte nimm vorerst immer (theory "Isac_Knowledge"), damit wird richtig gematcht, 
neuper@37906
    56
  siehe unten. Wir werden w"ahrend der Arbeit auf diesen Fehler drauskommen*)
neuper@37906
    57
Walther@60588
    58
Know_Store.add_pbls
walther@59973
    59
  [Problem.prep_input (*Test.thy*) (theory "Isac_Knowledge")
walther@59997
    60
      (["rootX", "univariate", "equation", "test"],
walther@59997
    61
        [("#Given" ,["equality e_e", "solveFor v_v"]),
s1210629013@55355
    62
          ("#Where" ,["is_rootequation_in (e_e::bool) (v_::real)"]),
s1210629013@55355
    63
          ("#Find"  ,["solutions v_i_"])],
walther@60278
    64
        Rule_Set.append_rules Rule_Set.empty [Eval ("Test.is_rootequation_in", eval_is_rootequation_in "")],
walther@59997
    65
        [("Test", "methode")])]
s1210629013@55355
    66
  thy;
s1210629013@55355
    67
Walther@60769
    68
M_Match.by_formalise ["equality (sqrt(x)=1)", "solveFor x", "solutions L"] (Problem.from_store ["rootX", "univariate", "equation", "test"]); 
neuper@37906
    69
Walther@60588
    70
Know_Store.add_pbls
walther@59973
    71
  [Problem.prep_input (theory "Isac_Knowledge")
walther@59997
    72
      (["approximate", "univariate", "equation", "test"],
walther@59997
    73
        [("#Given", ["equality e_e", "solveFor v_v", "errorBound err_"]),
wenzelm@60237
    74
          ("#Where", ["matches (?a = ?b) e_e"]),
s1210629013@55355
    75
          ("#Find", ["solutions v_i_"])],
walther@60230
    76
        Rule_Set.append_rules Rule_Set.empty [Eval ("Prog_Expr.TermC.matches",eval_matches "#matches_")], [])]
s1210629013@55355
    77
  thy;
s1210629013@55355
    78
neuper@37906
    79
methods:= overwritel (!methods,
neuper@37906
    80
[
walther@60154
    81
 MethodC.prep_input
walther@59997
    82
 (("Isac_Knowledge", "solve_univar_err"):metID,
walther@59997
    83
   [("#Given" ,["equality e_e", "solveFor v_v", "errorBound err_"]),
neuper@37906
    84
    ("#Find"  ,["solutions v_i_"])
neuper@37906
    85
    ],
Walther@60586
    86
   {rew_ord="tless_true",rls'="tval_rls",asm_rls=Rule_Set.empty,where_rls=Rule_Set.empty,calc=[],
neuper@37906
    87
    asm_rls=[],asm_thm=[]},
wneuper@59585
    88
 "Program Solve_univar_err (e_e::bool) (v_::real) (err_::bool) =  \
neuper@37981
    89
 \ (if (is_rootequation_in e_e v_v)\
wneuper@59476
    90
 \  then ((SubProblem (IsacX,[squareroot,univariate,equation],\
neuper@37984
    91
 \         (SqRoot_,square_equation)) [BOOL e_e, REAL v_v, BOOL err_]))\
wneuper@59476
    92
 \  else ((SubProblem (IsacX,[linear,univariate,equation],\
neuper@37984
    93
 \         (RatArith_,solve_linear)) [BOOL e_e, REAL v_])))"
neuper@37906
    94
 )]);
neuper@37906
    95
walther@59997
    96
val fmz = ["equality (1+2*x=0)", "solveFor x", "errorBound (eps=0)",
neuper@37906
    97
	   "solutions L"];
neuper@37906
    98
val (dI',pI',mI') =
walther@59997
    99
  ("Isac_Knowledge",["approximate", "univariate", "equation", "test"],
walther@59997
   100
   ("Isac_Knowledge", "solve_univar_err"));
Walther@60571
   101
val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
neuper@37906
   102
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   103
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   104
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   105
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   106
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   107
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   108
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
walther@59997
   109
(*val nxt = ("Apply_Method",Apply_Method ("Isac_Knowledge", "solve_univar_err"))*)
neuper@37906
   110
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   111
val (p,_,f,nxt,_,pt) = (me nxt p [1] pt) handle e => print_exn_G e;
neuper@37906
   112
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   113
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   114
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   115
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   116
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   117
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   118
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
walther@59997
   119
(*val nxt = ("Apply_Method",Apply_Method ("RatArith", "solve_linear"))*)
neuper@37906
   120
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   121
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   122
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   123
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   124
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
walther@59959
   125
if f = Form' (Test_Out.FormKF (~1,EdUndef,0,Nundef,"[x = -1 / 2]"))
neuper@37906
   126
   andalso nxt = ("End_Proof'",End_Proof') then ()
neuper@38031
   127
else error "new behaviour in testexample rationals2.sml 1+2*x=0";
neuper@37906
   128
neuper@37906
   129
(*---------------------------------*)
neuper@37906
   130
"-------------- is_rootequ_in - SubProblem -------------------------";
neuper@37906
   131
"-------------- is_rootequ_in - SubProblem -------------------------";
neuper@37906
   132
"-------------- is_rootequ_in - SubProblem -------------------------";
walther@59997
   133
val fmz = ["equality (sqrt(x) - 1 = 0)", "solveFor x", "errorBound (eps=0)",
neuper@37906
   134
	   "solutions L"];
neuper@37906
   135
val (dI',pI',mI') =
walther@59997
   136
  ("Isac_Knowledge",["approximate", "univariate", "equation", "test"],
walther@59997
   137
   ("Isac_Knowledge", "solve_univar_err"));
Walther@60571
   138
val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))];
neuper@37906
   139
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   140
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   141
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   142
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   143
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   144
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   145
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
walther@59997
   146
(*val nxt = ("Apply_Method",Apply_Method ("Isac_Knowledge", "solve_univar_err"))*)
neuper@37906
   147
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   148
val (p,_,f,nxt,_,pt) = (me nxt p [1] pt) handle e => print_exn_G e;
neuper@37906
   149
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   150
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   151
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   152
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   153
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   154
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   155
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   156
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   157
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   158
if p = ([1,1],Frm) andalso 
walther@59959
   159
   f = Form' (Test_Out.FormKF (~1,EdUndef,2,Nundef,"sqrt x - 1 = 0")) andalso
neuper@37906
   160
   nxt = ("Empty_Tac",Empty_Tac) (*script ist noch 'helpless'*) then ()
neuper@38031
   161
else error "new behaviour in testexample rationals2.sml sqrt(x) - 1 = 0";