src/sml/systest/script_if.sml
author agriesma
Thu, 17 Apr 2003 18:01:03 +0200
branchgriesmayer
changeset 338 90390fecbe74
child 810 cfb19daeb18b
permissions -rw-r--r--
neues cvs-verzeichnis
agriesma@338
     1
(* 1.if-te-else- 8.02 f"ur Richard
agriesma@338
     2
agriesma@338
     3
   use"ifthenelse.sml";
agriesma@338
     4
   use"tests/rationals2.sml";
agriesma@338
     5
   *)
agriesma@338
     6
agriesma@338
     7
agriesma@338
     8
agriesma@338
     9
(*---------------- 25.7.02 ---------------------*)
agriesma@338
    10
agriesma@338
    11
val thy = Isac.thy;
agriesma@338
    12
val t = (term_of o the o (parse thy)) "contains_root (sqrt(x)=1)";
agriesma@338
    13
val Some(ss,tt) = eval_contains_root "xxx" 1 t thy;
agriesma@338
    14
agriesma@338
    15
val t = (term_of o the o (parse thy)) "is_rootequation_in (sqrt(x)=1) x";
agriesma@338
    16
val Some(ss,tt) = eval_is_rootequation_in "is_rootequation_i" 1 t thy; 
agriesma@338
    17
agriesma@338
    18
(*---
agriesma@338
    19
val v = (term_of o the o (parse thy)) "x";
agriesma@338
    20
val t = (term_of o the o (parse thy)) "sqrt(#3+#4*x)";
agriesma@338
    21
scan t v;
agriesma@338
    22
val t = (term_of o the o (parse thy)) "sqrt(#3+#4*a)";
agriesma@338
    23
scan t v;
agriesma@338
    24
val t = (term_of o the o (parse thy)) "#1 + #2*sqrt(#3+#4*x)";
agriesma@338
    25
scan t v;
agriesma@338
    26
val t = (term_of o the o (parse thy)) "x + #2*sqrt(#3+#4*a)";
agriesma@338
    27
scan t v;
agriesma@338
    28
---*)
agriesma@338
    29
val t = (term_of o the o (parse thy)) 
agriesma@338
    30
	    "is_rootequation_in (1 + 2*sqrt(3+4*x)=0) x";
agriesma@338
    31
val Some(ss,tt) = eval_is_rootequation_in "is_rootequation_i" 1 t thy; 
agriesma@338
    32
agriesma@338
    33
val t = (term_of o the o (parse thy)) 
agriesma@338
    34
	    "is_rootequation_in (x + 2*sqrt(3+4*a)=0) x";
agriesma@338
    35
val Some(ss,tt) = eval_is_rootequation_in "is_rootequation_i" 1 t thy; 
agriesma@338
    36
agriesma@338
    37
val t = (term_of o the o (parse Test.thy)) 
agriesma@338
    38
	    "is_rootequation_in (sqrt(x)=1) x";
agriesma@338
    39
atomty Test.thy t;
agriesma@338
    40
val t = (term_of o the o (parse Isac.thy)) 
agriesma@338
    41
	    "is_rootequation_in (sqrt(x)=1) x";
agriesma@338
    42
atomty Isac.thy t;
agriesma@338
    43
agriesma@338
    44
(*
agriesma@338
    45
val Some(tt,_) = rewrite_set_ Test.thytrue tval_rls t;
agriesma@338
    46
*)
agriesma@338
    47
val Some(tt,_) = rewrite_set_ Isac.thy true tval_rls t;
agriesma@338
    48
agriesma@338
    49
rewrite_set "Isac.thy" true 
agriesma@338
    50
	    "tval_rls" "is_rootequation_in (sqrt(x)=1) x";
agriesma@338
    51
rewrite_set "Test.thy" true 
agriesma@338
    52
	    "tval_rls" "is_rootequation_in (sqrt(x)=1) x";
agriesma@338
    53
agriesma@338
    54
agriesma@338
    55
(*WN: ^^^--- bitte nimm vorerst immer Isac.thy, damit wird richtig gematcht, 
agriesma@338
    56
  siehe unten. Wir werden w"ahrend der Arbeit auf diesen Fehler drauskommen*)
agriesma@338
    57
store_pbt
agriesma@338
    58
 (prep_pbt (*Test.thy*) Isac.thy
agriesma@338
    59
 (["root","univariate","equation","test"],
agriesma@338
    60
  [("#Given" ,["equality e_","solveFor v_"]),
agriesma@338
    61
   ("#Where" ,["is_rootequation_in (e_::bool) (v_::real)"]),
agriesma@338
    62
   ("#Find"  ,["solutions v_i_"]) 
agriesma@338
    63
  ],
agriesma@338
    64
  append_rls e_rls [Calc ("Test.is'_rootequation'_in",
agriesma@338
    65
			  eval_is_rootequation_in "")],
agriesma@338
    66
  [("Test.thy","methode")]));
agriesma@338
    67
agriesma@338
    68
match_pbl ["equality (sqrt(x)=1)","solveFor x","solutions L"] (get_pbt ["root","univariate","equation","test"]); 
agriesma@338
    69
agriesma@338
    70
agriesma@338
    71
(*---------------- 29.7.02 ---------------------*)
agriesma@338
    72
agriesma@338
    73
store_pbt
agriesma@338
    74
 (prep_pbt Isac.thy
agriesma@338
    75
 (["approximate","univariate","equation","test"],
agriesma@338
    76
  [("#Given" ,["equality e_","solveFor v_","errorBound err_"]),
agriesma@338
    77
   ("#Where" ,["matches (?a = ?b) e_"]),
agriesma@338
    78
   ("#Find"  ,["solutions v_i_"])
agriesma@338
    79
  ],
agriesma@338
    80
  append_rls e_rls [Calc ("Tools.matches",eval_matches "#matches_")],
agriesma@338
    81
  []));
agriesma@338
    82
agriesma@338
    83
methods:= overwritel (!methods,
agriesma@338
    84
[
agriesma@338
    85
 prep_met
agriesma@338
    86
 (("Isac.thy","solve_univar_err"):metID,
agriesma@338
    87
   [("#Given" ,["equality e_","solveFor v_","errorBound err_"]),
agriesma@338
    88
    ("#Find"  ,["solutions v_i_"])
agriesma@338
    89
    ],
agriesma@338
    90
   {rew_ord'="tless_true",rls'="tval_rls",erls=e_rls,prls=e_rls,calc=[],
agriesma@338
    91
    asm_rls=[],asm_thm=[]},
agriesma@338
    92
 "Script Solve_univar_err (e_::bool) (v_::real) (err_::bool) =  \
agriesma@338
    93
 \ (if (is_rootequation_in e_ v_)\
agriesma@338
    94
 \  then ((SubProblem (Isac_,[squareroot,univariate,equation],\
agriesma@338
    95
 \         (SqRoot_,square_equation)) [bool_ e_, real_ v_, bool_ err_]))\
agriesma@338
    96
 \  else ((SubProblem (Isac_,[linear,univariate,equation],\
agriesma@338
    97
 \         (RatArith_,solve_linear)) [bool_ e_, real_ v_])))"
agriesma@338
    98
 )]);
agriesma@338
    99
agriesma@338
   100
val fmz = ["equality (1+2*x=0)","solveFor x","errorBound (eps=0)",
agriesma@338
   101
	   "solutions L"];
agriesma@338
   102
val (dI',pI',mI') =
agriesma@338
   103
  ("Isac.thy",["approximate","univariate","equation","test"],
agriesma@338
   104
   ("Isac.thy","solve_univar_err"));
agriesma@338
   105
val p = e_pos'; val c = []; 
agriesma@338
   106
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
agriesma@338
   107
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;
agriesma@338
   108
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   109
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   110
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   111
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   112
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   113
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   114
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   115
(*val nxt = ("Apply_Method",Apply_Method ("Isac.thy","solve_univar_err"))*)
agriesma@338
   116
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   117
val (p,_,f,nxt,_,pt) = (me nxt p [1] pt) handle e => print_exn_G e;
agriesma@338
   118
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   119
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   120
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   121
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   122
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   123
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   124
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   125
(*val nxt = ("Apply_Method",Apply_Method ("RatArith.thy","solve_linear"))*)
agriesma@338
   126
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   127
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   128
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   129
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   130
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   131
if f = Form' (FormKF (~1,EdUndef,0,Nundef,"[x = -1 / 2]"))
agriesma@338
   132
   andalso nxt = ("End_Proof'",End_Proof') then ()
agriesma@338
   133
else raise error "new behaviour in testexample rationals2.sml 1+2*x=0";
agriesma@338
   134
agriesma@338
   135
(*---------------------------------*)
agriesma@338
   136
"-------------- is_rootequ_in - SubProblem -------------------------";
agriesma@338
   137
"-------------- is_rootequ_in - SubProblem -------------------------";
agriesma@338
   138
"-------------- is_rootequ_in - SubProblem -------------------------";
agriesma@338
   139
val fmz = ["equality (sqrt(x) - 1 = 0)","solveFor x","errorBound (eps=0)",
agriesma@338
   140
	   "solutions L"];
agriesma@338
   141
val (dI',pI',mI') =
agriesma@338
   142
  ("Isac.thy",["approximate","univariate","equation","test"],
agriesma@338
   143
   ("Isac.thy","solve_univar_err"));
agriesma@338
   144
val p = e_pos'; val c = []; 
agriesma@338
   145
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
agriesma@338
   146
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;
agriesma@338
   147
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   148
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   149
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   150
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   151
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   152
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   153
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   154
(*val nxt = ("Apply_Method",Apply_Method ("Isac.thy","solve_univar_err"))*)
agriesma@338
   155
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   156
val (p,_,f,nxt,_,pt) = (me nxt p [1] pt) handle e => print_exn_G e;
agriesma@338
   157
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   158
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   159
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   160
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   161
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   162
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   163
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   164
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   165
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   166
if p = ([1,1],Frm) andalso 
agriesma@338
   167
   f = Form' (FormKF (~1,EdUndef,2,Nundef,"sqrt x - 1 = 0")) andalso
agriesma@338
   168
   nxt = ("Empty_Mstep",Empty_Mstep) (*script ist noch 'helpless'*) then ()
agriesma@338
   169
else raise error "new behaviour in testexample rationals2.sml sqrt(x) - 1 = 0";