test/Tools/isac/OLDTESTS/subp-rooteq.sml
author Walther Neuper <neuper@ist.tugraz.at>
Wed, 18 Aug 2010 13:55:23 +0200
branchisac-update-Isa09-2
changeset 37926 e6fc98fbcb85
parent 37906 e2b23ba9df13
child 37981 b2877b9d455a
permissions -rw-r--r--
replaced None-->NONE, Some-->SOME over all files
neuper@37906
     1
(* use"systest/subp-rooteq.sml";
neuper@37906
     2
   use"subp-rooteq.sml";
neuper@37906
     3
   *)
neuper@37906
     4
val c = [];
neuper@37906
     5
neuper@37906
     6
"---------------- miniscript with mini-subpbl -------------";
neuper@37906
     7
"---------------- solve_linear as rootpbl -----------------";
neuper@37906
     8
"---------------- solve_plain_square as rootpbl -----------";
neuper@37906
     9
"---------------- root-eq + subpbl: solve_linear ----------";
neuper@37906
    10
"---------------- root-eq + subpbl: solve_plain_square ----";
neuper@37906
    11
"---------------- root-eq + subpbl: no_met: linear --------";
neuper@37906
    12
"---------------- root-eq + subpbl: no_met: square --------";
neuper@37906
    13
"---------------- no_met in rootpbl -> linear -------------";
neuper@37906
    14
"==========================================================";
neuper@37906
    15
neuper@37906
    16
neuper@37906
    17
neuper@37906
    18
neuper@37906
    19
"---------------- miniscript with mini-subpbl -------------";
neuper@37906
    20
"---------------- miniscript with mini-subpbl -------------";
neuper@37906
    21
"---------------- miniscript with mini-subpbl -------------";
neuper@37906
    22
(*###########################################################
neuper@37906
    23
  ##  12.03 next_tac repariert (gab keine Value zurueck   ###
neuper@37906
    24
  ###########################################################*)
neuper@37906
    25
val fmz = ["equality (x+1=2)",
neuper@37906
    26
	   "solveFor x","solutions L"];
neuper@37906
    27
val (dI',pI',mI') =
neuper@37906
    28
  ("Test.thy",["sqroot-test","univariate","equation","test"],
neuper@37906
    29
   ["Test","squ-equ-test-subpbl1"]);
neuper@37906
    30
neuper@37906
    31
 val Script sc = (#scr o get_met) ["Test","squ-equ-test-subpbl1"];
neuper@37906
    32
 (writeln o term2str) sc;
neuper@37906
    33
neuper@37906
    34
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
    35
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    36
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    37
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    38
(*val nxt = ("Add_Find",Add_Find "solutions L") : string * tac*)
neuper@37906
    39
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    40
(*val nxt = ("Specify_Theory",Specify_Theory "Test.thy") : string * tac*)
neuper@37906
    41
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    42
(*("Specify_Problem",Specify_Problem ["sqroot-test","univariate","equation"]*)
neuper@37906
    43
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    44
(*("Specify_Method",Specify_Method ("Test.thy","squ-equ-test-subpbl1"))*)
neuper@37906
    45
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    46
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","squ-equ-test-subpbl1"*)
neuper@37906
    47
(*---vvv--- nxt_ here = loc_ below ------------------vvv-------------------*)
neuper@37906
    48
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    49
(*val f = "x + 1 = 2"; val nxt = Rewrite_Set "norm_equation"*)
neuper@37906
    50
(*### solve Apply_Method: is =   ### nxt_solv1 Apply_Method: store is
neuper@37906
    51
ScrState (["
neuper@37906
    52
(e_, x + 1 = 2)","
neuper@37906
    53
(v_, x)"],
neuper@37926
    54
 [], NONE,
neuper@37906
    55
 ??.empty, Safe, true)           ########## OK*)
neuper@37906
    56
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    57
(*val f = "x + 1 + -1 * 2 = 0"; val nxt = Rewrite_Set "Test_simplify"*)
neuper@37906
    58
(*### locate_gen----------: is=  ### next_tac----------------:E =
neuper@37906
    59
ScrState (["
neuper@37906
    60
(e_, x + 1 = 2)","
neuper@37906
    61
(v_, x)"],
neuper@37926
    62
 [], NONE,
neuper@37906
    63
 ??.empty, Safe, true)           ########## OK von loc_ uebernommen
neuper@37906
    64
### solve, after locate_gen: is= ### nxt_solv4 Apply_Method: stored is =
neuper@37906
    65
ScrState (["
neuper@37906
    66
(e_, x + 1 = 2)","
neuper@37906
    67
(v_, x)"],
neuper@37926
    68
 [R,L,R,L,L,R,R], SOME e_,
neuper@37906
    69
 x + 1 + -1 * 2 = 0, Safe, true) ########## OK*)
neuper@37906
    70
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    71
neuper@37906
    72
neuper@37906
    73
(*val f = "-1 + x = 0"; val nxt = Subproblem ("Test.thy",[#,#,#])
neuper@37906
    74
                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
neuper@37906
    75
(*### locate_gen-----------: is= ### next_tac-----------------: E=
neuper@37906
    76
ScrState (["
neuper@37906
    77
(e_, x + 1 = 2)","
neuper@37906
    78
(v_, x)"],
neuper@37926
    79
 [R,L,R,L,L,R,R], SOME e_,
neuper@37906
    80
 x + 1 + -1 * 2 = 0, Safe, true) ########## OK von loc_ uebernommen
neuper@37906
    81
### solve, after locate_gen: is= ### nxt_solv4 Apply_Method: stored is =
neuper@37906
    82
ScrState (["
neuper@37906
    83
(e_, x + 1 = 2)","
neuper@37906
    84
(v_, x)"],
neuper@37926
    85
 [R,L,R,L,R,R], SOME e_,
neuper@37906
    86
 -1 + x = 0, Safe, false)         ########## OK*)
neuper@37906
    87
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    88
(*### locate_gen------------: is= ### next_tac-----------------: E=
neuper@37906
    89
ScrState (["
neuper@37906
    90
(e_, x + 1 = 2)","
neuper@37906
    91
(v_, x)"],
neuper@37926
    92
 [R,L,R,L,R,R], SOME e_,
neuper@37906
    93
 -1 + x = 0, Safe, false)         ########## OK von loc_ uebernommen
neuper@37906
    94
### solve, after locate_gen: is=  ### nxt_solv4 Apply_Method: stored is =
neuper@37906
    95
ScrState (["
neuper@37906
    96
(e_, -1 + x = 0)","
neuper@37906
    97
(v_, x)"],
neuper@37926
    98
 [R,R,D,L,R], SOME e_,
neuper@37906
    99
 Subproblem (Test.thy, [linear, univariate, equation, test]), Safe, true)
neuper@37906
   100
                                  ########## OK*)
neuper@37906
   101
  p;
neuper@37906
   102
  writeln(istate2str (get_istate pt ([3],Frm)));
neuper@37906
   103
(*val nxt = ("Model_Problem",Model_Problem ["linear","univariate","equation"]*)
neuper@37906
   104
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   105
(*val nxt = ("Add_Given",Add_Given "equality (-1 + x = 0)") *)
neuper@37906
   106
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   107
(*val nxt = ("Add_Given",Add_Given "solveFor x") : string * tac*)
neuper@37906
   108
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   109
(*val nxt = ("Add_Find",Add_Find "solutions x_i") : string * tac*)
neuper@37906
   110
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   111
(*val nxt = ("Specify_Theory",Specify_Theory "Test.thy")*)
neuper@37906
   112
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   113
(*("Specify_Problem",Specify_Problem ["linear","univariate","equation"])*)
neuper@37906
   114
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   115
(*val nxt = ("Specify_Method",Specify_Method ("Test.thy","solve_linear"))*)
neuper@37906
   116
  val Script sc = (#scr o get_met) ["Test","solve_linear"];
neuper@37906
   117
  (writeln o term2str) sc;
neuper@37906
   118
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   119
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","solve_linear"))*)
neuper@37906
   120
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   121
(*val nxt = ("Rewrite_Set_Inst",Rewrite_Set_Inst ([#],"isolate_bdv"))*)
neuper@37906
   122
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   123
(*val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify")*)
neuper@37906
   124
neuper@37906
   125
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   126
(*val nxt = ("Check_Postcond",Check_Postcond ["linear","univariate","eq*)
neuper@37906
   127
neuper@37906
   128
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   129
  p;
neuper@37906
   130
  writeln(istate2str (get_istate pt ([3],Res)));
neuper@37906
   131
(*val nxt = ("Check_elementwise",Check_elementwise "Assumptions")*)
neuper@37906
   132
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   133
neuper@37906
   134
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   135
val Form' (FormKF (_,EdUndef,0,Nundef,res)) = f;
neuper@37906
   136
if (snd nxt)=End_Proof' andalso res="[x = 1]" then ()
neuper@37906
   137
else raise error "subp-rooteq.sml: new.behav. in  miniscript with mini-subpbl";
neuper@37906
   138
neuper@37906
   139
neuper@37906
   140
"---------------- solve_linear as rootpbl -----------------";
neuper@37906
   141
"---------------- solve_linear as rootpbl -----------------";
neuper@37906
   142
"---------------- solve_linear as rootpbl -----------------";
neuper@37906
   143
val fmz = ["equality (1+-1*2+x=0)",
neuper@37906
   144
	   "solveFor x","solutions L"];
neuper@37906
   145
val (dI',pI',mI') =
neuper@37906
   146
  ("Test.thy",["linear","univariate","equation","test"],
neuper@37906
   147
   ["Test","solve_linear"]);
neuper@37906
   148
neuper@37906
   149
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; 
neuper@37906
   150
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   151
(*val nxt = ("Add_Given",Add_Given "equality (x + #1 + #-1 * #2 = #0)")*)
neuper@37906
   152
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   153
(*val nxt = ("Add_Given",Add_Given "solveFor x") : string * tac*)
neuper@37906
   154
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   155
(*val nxt = ("Add_Find",Add_Find "solutions L") : string * tac*)
neuper@37906
   156
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   157
(*val nxt = ("Specify_Theory",Specify_Theory "Test.thy") : string * tac*)
neuper@37906
   158
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   159
(*val nxt = ("Specify_Problem",Specify_Problem ["univariate","equation"])*)
neuper@37906
   160
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   161
(*val nxt = ("Specify_Method",Specify_Method ("Test.thy","solve_linear"))*)
neuper@37906
   162
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   163
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","solve_linear"))*)
neuper@37906
   164
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   165
(*val f = Form' (FormKF (~1,EdUndef,1,Nundef,"#1 + #-1 * #2 + x = #0"))
neuper@37906
   166
  val nxt = ("Rewrite_Set_Inst",Rewrite_Set_Inst ([#],"isolate_bdv"))*)
neuper@37906
   167
neuper@37906
   168
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   169
(*val f = Form' (FormKF (~1,EdUndef,1,Nundef,"x = #0 + #-1 * (#1 + #-1 * #2)"))
neuper@37906
   170
  val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify") : string * tac*)
neuper@37906
   171
neuper@37906
   172
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   173
(*val f = Form' (FormKF (~1,EdUndef,1,Nundef,"x = #1")) : mout                   val nxt = ("Check_Postcond",Check_Postcond ["univariate","equation"])*)
neuper@37906
   174
neuper@37906
   175
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   176
(*val f = Form' (FormKF (~1,EdUndef,0,Nundef,"[x = #1]")) : mout 
neuper@37906
   177
  val nxt = ("End_Proof'",End_Proof') : string * tac*)
neuper@37906
   178
val Form' (FormKF (_,EdUndef,0,Nundef,res)) = f;
neuper@37906
   179
if (snd nxt)=End_Proof' andalso res="[x = 1]" then ()
neuper@37906
   180
else raise error "subp-rooteq.sml: new.behav. in  solve_linear as rootpbl";
neuper@37906
   181
neuper@37906
   182
neuper@37906
   183
"---------------- solve_plain_square as rootpbl -----------";
neuper@37906
   184
"---------------- solve_plain_square as rootpbl -----------";
neuper@37906
   185
"---------------- solve_plain_square as rootpbl -----------";
neuper@37906
   186
val fmz = ["equality (9 + -1 * x ^^^ 2 = 0)","solveFor x",
neuper@37906
   187
	   "solutions L"];
neuper@37906
   188
val (dI',pI',mI') =
neuper@37906
   189
  ("Test.thy",["plain_square","univariate","equation","test"],
neuper@37906
   190
   ["Test","solve_plain_square"]);
neuper@37906
   191
(*val p = e_pos'; val c = []; 
neuper@37906
   192
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   193
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   194
neuper@37906
   195
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   196
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   197
neuper@37906
   198
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   199
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   200
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   201
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   202
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   203
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   204
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   205
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   206
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   207
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   208
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   209
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   210
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   211
val  Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
neuper@37906
   212
if snd nxt=End_Proof' andalso res="[x = -3, x = 3]" then ()
neuper@37906
   213
else raise error "subp-rooteq.sml: new.behav. in  solve_plain_square as rootpbl";
neuper@37906
   214
neuper@37906
   215
neuper@37906
   216
neuper@37906
   217
neuper@37906
   218
"---------------- root-eq + subpbl: solve_linear ----------";
neuper@37906
   219
"---------------- root-eq + subpbl: solve_linear ----------";
neuper@37906
   220
"---------------- root-eq + subpbl: solve_linear ----------";
neuper@37906
   221
val fmz = ["equality (sqrt(9+4*x)=sqrt x + sqrt(5+x))",
neuper@37906
   222
	   "solveFor x","solutions L"];
neuper@37906
   223
val (dI',pI',mI') =
neuper@37906
   224
  ("Test.thy",["sqroot-test","univariate","equation","test"],
neuper@37906
   225
   ["Test","square_equation1"]);
neuper@37906
   226
(*val p = e_pos'; val c = []; 
neuper@37906
   227
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   228
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   229
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   230
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   231
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   232
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   233
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   234
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   235
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   236
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   237
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   238
(*"sqrt (9 + 4 * x) = sqrt x + sqrt (5 + x)"
neuper@37906
   239
square_equation_left*)
neuper@37906
   240
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   241
(*"9 + 4 * x = (sqrt x + sqrt (5 + x)) ^^^ 2"
neuper@37906
   242
Test_simplify*)
neuper@37906
   243
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   244
(*"9 + 4 * x = 5 + (2 * x + 2 * sqrt (x ^^^ 2 + 5 * x))"
neuper@37906
   245
rearrange_assoc*)
neuper@37906
   246
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   247
(*"9 + 4 * x = 5 + 2 * x + 2 * sqrt (x ^^^ 2 + 5 * x)"
neuper@37906
   248
isolate_root*)
neuper@37906
   249
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   250
(*"sqrt (x ^^^ 2 + 5 * x) = (5 + 2 * x + -1 * (9 + 4 * x)) / (-1 * 2)"
neuper@37906
   251
Test_simplify*)
neuper@37906
   252
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   253
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   254
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   255
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   256
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   257
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   258
(*"x ^^^ 2 + 5 * x + -1 * (4 + (x ^^^ 2 + 4 * x)) = 0"*)
neuper@37906
   259
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   260
(*"-4 + x = 0"
neuper@37906
   261
  val nxt =("Subproblem",Subproblem ("Test.thy",["linear","univariate"...*)
neuper@37906
   262
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   263
(*val nxt =("Model_Problem",Model_Problem ["linear","univariate"...*)
neuper@37906
   264
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   265
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   266
neuper@37906
   267
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   268
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   269
(*val nxt = ("Specify_Theory",Specify_Theory "Test.thy")*)
neuper@37906
   270
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   271
(*("Specify_Problem",Specify_Problem ["linear","univariate","equation"])*)
neuper@37906
   272
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   273
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   274
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   275
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   276
(*"x = 0 + -1 * -4", nxt Test_simplify*)
neuper@37906
   277
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   278
(*"x = 4", nxt Check_Postcond ["linear","univariate","equation","test"]*)
neuper@37906
   279
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   280
(*"[x = 4]", nxt Check_elementwise "Assumptions"*)
neuper@37906
   281
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   282
(*"[]", nxt Check_Postcond ["sqroot-test","univariate","equation","test"]*)
neuper@37906
   283
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   284
val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
neuper@37906
   285
if (snd nxt)=End_Proof' andalso res="[x = 4]" then ()
neuper@37906
   286
else raise error "subp-rooteq.sml: new.behav. in  root-eq + subpbl: solve_linear";
neuper@37906
   287
neuper@37906
   288
neuper@37906
   289
neuper@37906
   290
"---------------- root-eq + subpbl: solve_plain_square ----";
neuper@37906
   291
"---------------- root-eq + subpbl: solve_plain_square ----";
neuper@37906
   292
"---------------- root-eq + subpbl: solve_plain_square ----";
neuper@37906
   293
val fmz = ["equality (sqrt(5+x)+sqrt(5-x)=sqrt 18)",
neuper@37906
   294
	   "solveFor x","solutions L"];
neuper@37906
   295
val (dI',pI',mI') =
neuper@37906
   296
  ("Test.thy",["sqroot-test","univariate","equation","test"],
neuper@37906
   297
   ["Test","square_equation2"]);
neuper@37906
   298
val Script sc = (#scr o get_met) ["Test","square_equation2"];
neuper@37906
   299
(writeln o term2str) sc;
neuper@37906
   300
neuper@37906
   301
(*val p = e_pos'; val c = []; 
neuper@37906
   302
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   303
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   304
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   305
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   306
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   307
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   308
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   309
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   310
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   311
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   312
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","square_equation1"))*)
neuper@37906
   313
val (p,_,f,nxt,_,pt) = 
neuper@37906
   314
neuper@37906
   315
me nxt p [1] pt;
neuper@37906
   316
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   317
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   318
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   319
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   320
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   321
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   322
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   323
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   324
(*"9 + -1 * x ^^^ 2 = 0"
neuper@37906
   325
  Subproblem ("Test.thy",["plain_square","univariate","equation"]))*)
neuper@37906
   326
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   327
(*Model_Problem ["plain_square","univariate","equation"]*)
neuper@37906
   328
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   329
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   330
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   331
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   332
(*val nxt = ("Specify_Theory",Specify_Theory "Test.thy")*)
neuper@37906
   333
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   334
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   335
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   336
(*Apply_Method ("Test.thy","solve_plain_square")*)
neuper@37906
   337
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   338
(*"9 + -1 * x ^^^ 2 = 0", nxt Rewrite_Set "isolate_bdv"*)
neuper@37906
   339
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   340
(*"x ^^^ 2 = (0 + -1 * 9) / -1", nxt Rewrite_Set "Test_simplify"*)
neuper@37906
   341
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   342
(*"x ^^^ 2 = 9", nxt Rewrite ("square_equality"*)
neuper@37906
   343
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   344
(*"x = sqrt 9 | x = -1 * sqrt 9", nxt Rewrite_Set "tval_rls"*)
neuper@37906
   345
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   346
(*"x = -3 | x = 3", nxt Or_to_List*)
neuper@37906
   347
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   348
(*"[x = -3, x = 3]", 
neuper@37906
   349
  nxt Check_Postcond ["plain_square","univariate","equation","test"]*)
neuper@37906
   350
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   351
neuper@37906
   352
neuper@37906
   353
neuper@37906
   354
(*"[x = -3, x = 3]", nxt Check_elementwise "Assumptions"*)
neuper@37906
   355
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   356
(*"[]", nxt Check_Postcond ["sqroot-test","univariate","equation","test"]*)
neuper@37906
   357
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   358
val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
neuper@37906
   359
if (snd nxt)=End_Proof' andalso res="[x = -3, x = 3]" then ()
neuper@37906
   360
else raise error "subp-rooteq.sml: new.behav. in  root-eq + subpbl: solve_plain_square";
neuper@37906
   361
neuper@37906
   362
neuper@37906
   363
writeln (pr_ptree pr_short pt);
neuper@37906
   364
neuper@37906
   365
neuper@37906
   366
neuper@37906
   367
val Script s = (#scr o get_met) ["Test","square_equation"];
neuper@37906
   368
atomt s;
neuper@37906
   369
neuper@37906
   370
neuper@37906
   371
neuper@37906
   372
neuper@37906
   373
"---------------- root-eq + subpbl: no_met: linear ----";
neuper@37906
   374
"---------------- root-eq + subpbl: no_met: linear ----";
neuper@37906
   375
"---------------- root-eq + subpbl: no_met: linear ----";
neuper@37906
   376
val fmz = ["equality (sqrt(9+4*x)=sqrt x + sqrt(5+x))",
neuper@37906
   377
	   "solveFor x","solutions L"];
neuper@37906
   378
val (dI',pI',mI') =
neuper@37906
   379
  ("Test.thy",["squareroot","univariate","equation","test"],
neuper@37906
   380
   ["Test","square_equation"]);
neuper@37906
   381
(*val p = e_pos'; val c = []; 
neuper@37906
   382
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   383
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   384
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   385
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   386
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   387
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   388
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   389
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   390
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   391
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   392
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   393
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   394
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   395
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   396
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   397
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   398
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   399
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   400
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   401
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   402
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   403
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   404
(*"-4 + x = 0", nxt Subproblem ("Test.thy",["univariate","equation"]))*)
neuper@37906
   405
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   406
(*val nxt =("Model_Problem",Model_Problem ["linear","univar...*)
neuper@37906
   407
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   408
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   409
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   410
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   411
(*val nxt = ("Specify_Theory",Specify_Theory "Test.thy")*)
neuper@37906
   412
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   413
(*val nxt = ("Specify_Problem",Specify_Problem ["linear","univariate","equ*)
neuper@37906
   414
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   415
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   416
(*Apply_Method ("Test.thy","norm_univar_equation")*)
neuper@37906
   417
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   418
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   419
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   420
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   421
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   422
if p = ([13],Res) then ()
neuper@37906
   423
else raise error ("subp-rooteq.sml: new.behav. in  \
neuper@37906
   424
		 \root-eq + subpbl: solve_linear, p ="^(pos'2str p));
neuper@37906
   425
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   426
val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
neuper@37906
   427
if (snd nxt)=End_Proof' andalso res="[x = 4]" then ()
neuper@37906
   428
else raise error "subp-rooteq.sml: new.behav. in  root-eq + subpbl: solve_plain_square";
neuper@37906
   429
neuper@37906
   430
neuper@37906
   431
neuper@37906
   432
neuper@37906
   433
"---------------- root-eq + subpbl: no_met: square ----";
neuper@37906
   434
"---------------- root-eq + subpbl: no_met: square ----";
neuper@37906
   435
"---------------- root-eq + subpbl: no_met: square ----";
neuper@37906
   436
val fmz = ["equality (sqrt(5+x)+sqrt(5-x)=sqrt 18)",
neuper@37906
   437
	   "solveFor x","solutions L"];
neuper@37906
   438
val (dI',pI',mI') =
neuper@37906
   439
  ("Test.thy",["squareroot","univariate","equation","test"],
neuper@37906
   440
   ["Test","square_equation"]);
neuper@37906
   441
 val Script sc = (#scr o get_met) ["Test","square_equation"];
neuper@37906
   442
 (writeln o term2str) sc;
neuper@37906
   443
neuper@37906
   444
(*val p = e_pos'; val c = []; 
neuper@37906
   445
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   446
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   447
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   448
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   449
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   450
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   451
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   452
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   453
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   454
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   455
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","square_equation1"))*)
neuper@37906
   456
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   457
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   458
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   459
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   460
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   461
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   462
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   463
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   464
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   465
(*Subproblem ("Test.thy",["univariate","equation"]))*)
neuper@37906
   466
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   467
(*Model_Problem ["plain_square","univariate","equation"]*)
neuper@37906
   468
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   469
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   470
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   471
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   472
(*val nxt = ("Specify_Theory",Specify_Theory "Test.thy")*)
neuper@37906
   473
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   474
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   475
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   476
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   477
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   478
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   479
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   480
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   481
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   482
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   483
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   484
(*val nxt = ("Check_Postcond",Check_Postcond ["squareroot","univariate","equ*)
neuper@37906
   485
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   486
val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
neuper@37906
   487
if (snd nxt)=End_Proof' andalso res="[x = -3, x = 3]" then ()
neuper@37906
   488
else raise error "subp-rooteq.sml: new.behav. in  root-eq + subpbl: no_met: square";
neuper@37906
   489
neuper@37906
   490
neuper@37906
   491
neuper@37906
   492
"---------------- no_met in rootpbl -> linear --------------";
neuper@37906
   493
"---------------- no_met in rootpbl -> linear --------------";
neuper@37906
   494
"---------------- no_met in rootpbl -> linear --------------";
neuper@37906
   495
val fmz = ["equality (1+2*x+3=4*x- 6)",
neuper@37906
   496
	   "solveFor x","solutions L"];
neuper@37906
   497
val (dI',pI',mI') =
neuper@37906
   498
  ("Test.thy",["univariate","equation","test"],
neuper@37906
   499
   ["no_met"]);
neuper@37906
   500
(*val p = e_pos'; val c = []; 
neuper@37906
   501
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   502
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   503
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   504
(*val nxt = ("Model_Problem",Model_Problem ["normalize","univariate","equati*)
neuper@37906
   505
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   506
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   507
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   508
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   509
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   510
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   511
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   512
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","norm_univar_equation"*)
neuper@37906
   513
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   514
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   515
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   516
(*val nxt = ("Subproblem",Subproblem ("Test.thy",["univariate","equation"])*)
neuper@37906
   517
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   518
(*val nxt = ("Model_Problem",Model_Problem ["linear","univariate","equation"]*)
neuper@37906
   519
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   520
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   521
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   522
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   523
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   524
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   525
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   526
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","solve_linear"))*)
neuper@37906
   527
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   528
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   529
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   530
(*val nxt = ("Check_Postcond",Check_Postcond ["linear","univariate","equatio*)
neuper@37906
   531
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   532
(*val nxt = ("Check_Postcond",Check_Postcond ["normalize","univariate","equa*)
neuper@37906
   533
val (p,_,Form' (FormKF (_,_,_,_,f)),nxt,_,_) = 
neuper@37906
   534
    me nxt p c pt;
neuper@37906
   535
if f="[x = 5]" andalso nxt=("End_Proof'",End_Proof') then ()
neuper@37906
   536
else raise error "subp-rooteq.sml: new.behav. in no_met in rootpbl -> linear ---";
neuper@37906
   537
neuper@37906
   538
neuper@37906
   539
refine fmz ["univariate","equation","test"];
neuper@37906
   540
match_pbl fmz (get_pbt ["polynomial","univariate","equation","test"]);
neuper@37906
   541