test/Tools/isac/Knowledge/rateq.sml
author Walther Neuper <neuper@ist.tugraz.at>
Tue, 28 Sep 2010 09:06:56 +0200
branchisac-update-Isa09-2
changeset 38031 460c24a6a6ba
parent 37991 028442673981
child 41928 20138d6136cd
permissions -rw-r--r--
tuned error and writeln

# raise error --> error
# writeln in atomtyp, atomty, atomt and xmlsrc
neuper@37906
     1
(* RL 09.02 
neuper@37906
     2
 testexamples for RatEq, equations with fractions
neuper@37906
     3
neuper@37906
     4
 Compiler.Control.Print.printDepth:=10; (*4 default*)
neuper@37906
     5
 Compiler.Control.Print.printDepth:=5; (*4 default*)
neuper@37906
     6
 trace_rewrite:=true;
neuper@37906
     7
neuper@37906
     8
 use"kbtest/rateq.sml";
neuper@37906
     9
 *)
neuper@37906
    10
"----------- rateq.sml begin--------";
neuper@37906
    11
"---------(1/x=5) ---------------------";
neuper@37906
    12
"--------- S.68, Bsp.: 40, ((x)/(x - 8) + (x - 8)/(x) = 26/5)---------------------";
neuper@37906
    13
neuper@37906
    14
val t = (term_of o the o (parse RatEq.thy)) "(1/b+1/x=1) is_ratequation_in  x";
neuper@37926
    15
val SOME(t_, _) = rewrite_set_ RatEq.thy  false RatEq_prls t;
neuper@37906
    16
val result = term2str t_;
neuper@38031
    17
if result <>  "True"  then error "rateq.sml: new behaviour 1:" else ();
neuper@37906
    18
neuper@37906
    19
val t = (term_of o the o (parse RatEq.thy)) "(sqrt(x)=1) is_ratequation_in  x";
neuper@37926
    20
val SOME(t_, _) = rewrite_set_ RatEq.thy  false RatEq_prls t;
neuper@37906
    21
val result = term2str t_;
neuper@38031
    22
if result <>  "False"  then error "rateq.sml: new behaviour 2:" else ();
neuper@37906
    23
neuper@37906
    24
val t = (term_of o the o (parse RatEq.thy)) "(x=-1) is_ratequation_in x";
neuper@37926
    25
val SOME(t_,_) = rewrite_set_ RatEq.thy  false RatEq_prls t;
neuper@37906
    26
val result = term2str t_;
neuper@38031
    27
if result <>  "False"  then error "rateq.sml: new behaviour 3:" else ();
neuper@37906
    28
neuper@37906
    29
val t = (term_of o the o (parse RatEq.thy)) "(3 + x^^^2 + 1/(x^^^2+3)=1) is_ratequation_in x";
neuper@37926
    30
val SOME(t_,_) = rewrite_set_ RatEq.thy  false RatEq_prls t;
neuper@37906
    31
val result = term2str t_;
neuper@38031
    32
if result <>  "True"  then error "rateq.sml: new behaviour 4:" else ();
neuper@37906
    33
neuper@37906
    34
val result = match_pbl ["equality (x=1)","solveFor x","solutions L"] 
neuper@37906
    35
                (get_pbt ["rational","univariate","equation"]); 
neuper@38031
    36
case result of NoMatch' _  => ()  | _ => error "rateq.sml: new behaviour: 5";
neuper@37906
    37
neuper@37906
    38
val result = match_pbl ["equality (3 + x^^^2 + 1/(x^^^2+3)=1)","solveFor x","solutions L"] 
neuper@37906
    39
                (get_pbt ["rational","univariate","equation"]); 
neuper@38031
    40
case result of Matches' _  => ()  | _ => error "rateq.sml: new behaviour: 6";
neuper@37906
    41
neuper@37906
    42
neuper@37906
    43
(*---------rateq---- 23.8.02 ---------------------*)
neuper@37906
    44
"---------(1/x=5) ---------------------";
neuper@37906
    45
val fmz = ["equality (1/x=5)","solveFor x","solutions L"];
neuper@37906
    46
(* refine fmz ["univariate","equation"];
neuper@37906
    47
   *)
neuper@37906
    48
neuper@37991
    49
val (dI',pI',mI') = ("RatEq",["univariate","equation"],["no_met"]);
neuper@37906
    50
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
    51
(* val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    52
   --------------------------------------- Refine_Tacitly*)
neuper@37906
    53
(*  nxt = ("Model_Problem",Model_Problem ["rational","univariate","equation"]) *)
neuper@37906
    54
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    55
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    56
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    57
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    58
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37991
    59
(* val nxt = ("Subproblem",Subproblem ("RatEq",["univariate","equation"])*)
neuper@37906
    60
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    61
(* val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    62
   --------------------------------------- Refine_Tacitly*)
neuper@37906
    63
(*val nxt = ("Model_Problem", Model_Problem ["normalize","polynomial","univariate","equation"])*) 
neuper@37906
    64
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    65
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    66
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    67
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    68
(*val nxt = Apply_Method ["PolyEq", "normalize_poly"])*)
neuper@37906
    69
neuper@37906
    70
(* get_obj g_fmz pt [2];
neuper@37906
    71
   *)
neuper@37906
    72
neuper@37906
    73
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    74
(**** assoc_thm': 'all_left' not in 'RatEq.thy' (and parents)*)
neuper@37906
    75
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37991
    76
(* val nxt = ("Subproblem",  Subproblem ("PolyEq",["polynomial","univariate","equation"]))*)
neuper@37906
    77
neuper@37906
    78
neuper@37906
    79
neuper@37906
    80
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    81
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    82
(*  ("Model_Problem", Model_Problem ["degree_1","polynomial","univariate","equation"])*)
neuper@37906
    83
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    84
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    85
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    86
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    87
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    88
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    89
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    90
(* "x = 1 / 5" *)
neuper@37906
    91
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    92
if mout2str(f) = "Form' FormKF (~1,EdUndef,0,Nundef,([x = 1 / 5])" then () 
neuper@38031
    93
else  error "rateq.sml: new behaviour: [x = 1 / 5]";
neuper@37906
    94
neuper@37906
    95
neuper@37906
    96
neuper@37906
    97
(*---------((x)/(x - 8) + (x - 8)/(x) = 26/5)---------------------*)
neuper@37906
    98
"--------- S.68, Bsp.: 40, ((x)/(x - 8) + (x - 8)/(x) = 26/5)---------------------";
neuper@37906
    99
(*EP Schalk_II_p68_n40*)
neuper@37906
   100
val fmz = ["equality ((x)/(x - 8) + (x - 8)/(x) = 26/5)","solveFor x","solutions L"];
neuper@37906
   101
(* val fmz = ["equality (3+x= 9*x^^^4+((1+2*x)/x^^^2)^^^2 + 6*(x^^^2*((1+2*x)/x^^^2)))",
neuper@37906
   102
	   "solveFor x","solutions L"];*)
neuper@37906
   103
neuper@37906
   104
(* refine fmz ["univariate","equation"];
neuper@37906
   105
*)
neuper@37906
   106
neuper@37991
   107
val (dI',pI',mI') = ("RatEq",["univariate","equation"],["no_met"]);
neuper@37906
   108
(*val p = e_pos'; 
neuper@37906
   109
val c = []; 
neuper@37906
   110
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   111
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   112
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   113
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   114
(* nxt = ("Model_Problem",Model_Problem ["rational","univariate","equation"])*)
neuper@37906
   115
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   116
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   117
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   118
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   119
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   120
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37991
   121
(* nxt = ("Subproblem",Subproblem ("RatEq",["univariate","equation"]))*)
neuper@37906
   122
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   123
(* nxt = ("Model_Problem", Model_Problem ["normalize","polynomial","univariate","equation"])*)
neuper@37906
   124
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   125
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   126
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   127
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   128
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   129
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37991
   130
(* ("Subproblem", Subproblem ("PolyEq",["polynomial","univariate","equation"])) *)
neuper@37906
   131
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   132
(* nxt = ("Model_Problem", Model_Problem
neuper@37906
   133
     ["abcFormula","degree_2","polynomial","univariate","equation"])*)
neuper@37906
   134
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   135
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   136
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   137
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   138
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   139
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   140
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   141
(* "x = -2, x = 10" *)
neuper@37906
   142
if mout2str(f) = "Form' FormKF (~1,EdUndef,0,Nundef,([x = -2, x = 10])" then() 
neuper@38031
   143
else  error "rateq.sml: new behaviour: [x = -2, x = 10]";
neuper@37906
   144
neuper@37906
   145
"----------- rateq.sml end--------";