test/Tools/isac/OLDTESTS/subp-rooteq.sml
author Walther Neuper <wneuper@ist.tugraz.at>
Thu, 22 Dec 2016 11:36:20 +0100
changeset 59279 255c853ea2f0
parent 55279 130688f277ba
child 59367 fb6f5ef2c647
permissions -rw-r--r--
renamed Ctree.ptree --> Ctree.ctree
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@41970
    25
val fmz = ["equality (x+1=(2::real))", "solveFor x","solutions L"];
neuper@37906
    26
val (dI',pI',mI') =
neuper@38058
    27
  ("Test",["sqroot-test","univariate","equation","test"],
neuper@37906
    28
   ["Test","squ-equ-test-subpbl1"]);
neuper@37906
    29
neuper@48790
    30
val Prog sc = (#scr o get_met) ["Test","squ-equ-test-subpbl1"];
neuper@41970
    31
(writeln o term2str) sc;
neuper@37906
    32
neuper@37906
    33
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
    34
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
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 nxt = ("Add_Find",Add_Find "solutions L") : string * tac*)
neuper@37906
    38
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@38058
    39
(*val nxt = ("Specify_Theory",Specify_Theory "Test") : string * tac*)
neuper@37906
    40
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    41
(*("Specify_Problem",Specify_Problem ["sqroot-test","univariate","equation"]*)
neuper@37906
    42
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@38058
    43
(*("Specify_Method",Specify_Method ("Test","squ-equ-test-subpbl1"))*)
neuper@37906
    44
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@38058
    45
(*val nxt = ("Apply_Method",Apply_Method ("Test","squ-equ-test-subpbl1"*)
neuper@37906
    46
(*---vvv--- nxt_ here = loc_ below ------------------vvv-------------------*)
neuper@37906
    47
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    48
(*val f = "x + 1 = 2"; val nxt = Rewrite_Set "norm_equation"*)
neuper@37906
    49
(*### solve Apply_Method: is =   ### nxt_solv1 Apply_Method: store is
neuper@37906
    50
ScrState (["
neuper@37906
    51
(e_, x + 1 = 2)","
neuper@37906
    52
(v_, x)"],
neuper@37926
    53
 [], NONE,
neuper@37906
    54
 ??.empty, Safe, true)           ########## OK*)
neuper@37906
    55
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    56
(*val f = "x + 1 + -1 * 2 = 0"; val nxt = Rewrite_Set "Test_simplify"*)
neuper@37906
    57
(*### locate_gen----------: is=  ### next_tac----------------:E =
neuper@37906
    58
ScrState (["
neuper@37906
    59
(e_, x + 1 = 2)","
neuper@37906
    60
(v_, x)"],
neuper@37926
    61
 [], NONE,
neuper@37906
    62
 ??.empty, Safe, true)           ########## OK von loc_ uebernommen
neuper@37906
    63
### solve, after locate_gen: is= ### nxt_solv4 Apply_Method: stored is =
neuper@37906
    64
ScrState (["
neuper@37906
    65
(e_, x + 1 = 2)","
neuper@37906
    66
(v_, x)"],
neuper@37981
    67
 [R,L,R,L,L,R,R], SOME e_e,
neuper@37906
    68
 x + 1 + -1 * 2 = 0, Safe, true) ########## OK*)
neuper@37906
    69
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    70
neuper@37906
    71
neuper@38058
    72
(*val f = "-1 + x = 0"; val nxt = Subproblem ("Test",[#,#,#])
neuper@37906
    73
                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
neuper@37906
    74
(*### locate_gen-----------: is= ### next_tac-----------------: E=
neuper@37906
    75
ScrState (["
neuper@37906
    76
(e_, x + 1 = 2)","
neuper@37906
    77
(v_, x)"],
neuper@37981
    78
 [R,L,R,L,L,R,R], SOME e_e,
neuper@37906
    79
 x + 1 + -1 * 2 = 0, Safe, true) ########## OK von loc_ uebernommen
neuper@37906
    80
### solve, after locate_gen: is= ### nxt_solv4 Apply_Method: stored is =
neuper@37906
    81
ScrState (["
neuper@37906
    82
(e_, x + 1 = 2)","
neuper@37906
    83
(v_, x)"],
neuper@37981
    84
 [R,L,R,L,R,R], SOME e_e,
neuper@37906
    85
 -1 + x = 0, Safe, false)         ########## OK*)
neuper@37906
    86
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
    87
(*### locate_gen------------: is= ### next_tac-----------------: E=
neuper@37906
    88
ScrState (["
neuper@37906
    89
(e_, x + 1 = 2)","
neuper@37906
    90
(v_, x)"],
neuper@37981
    91
 [R,L,R,L,R,R], SOME e_e,
neuper@37906
    92
 -1 + x = 0, Safe, false)         ########## OK von loc_ uebernommen
neuper@37906
    93
### solve, after locate_gen: is=  ### nxt_solv4 Apply_Method: stored is =
neuper@37906
    94
ScrState (["
neuper@37906
    95
(e_, -1 + x = 0)","
neuper@37906
    96
(v_, x)"],
neuper@37981
    97
 [R,R,D,L,R], SOME e_e,
neuper@37906
    98
 Subproblem (Test.thy, [linear, univariate, equation, test]), Safe, true)
neuper@37906
    99
                                  ########## OK*)
neuper@37906
   100
  p;
neuper@48895
   101
  writeln(istate2str (fst (get_istate pt ([3],Frm))));
neuper@55279
   102
(*val nxt = ("Model_Problem",Model_Problem ["LINEAR","univariate","equation"]*)
neuper@37906
   103
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   104
(*val nxt = ("Add_Given",Add_Given "equality (-1 + x = 0)") *)
neuper@37906
   105
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   106
(*val nxt = ("Add_Given",Add_Given "solveFor x") : string * tac*)
neuper@37906
   107
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   108
(*val nxt = ("Add_Find",Add_Find "solutions x_i") : string * tac*)
neuper@37906
   109
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@38058
   110
(*val nxt = ("Specify_Theory",Specify_Theory "Test")*)
neuper@37906
   111
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@55279
   112
(*("Specify_Problem",Specify_Problem ["LINEAR","univariate","equation"])*)
neuper@37906
   113
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@38058
   114
(*val nxt = ("Specify_Method",Specify_Method ("Test","solve_linear"))*)
neuper@48790
   115
  val Prog sc = (#scr o get_met) ["Test","solve_linear"];
neuper@37906
   116
  (writeln o term2str) sc;
neuper@37906
   117
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@38058
   118
(*val nxt = ("Apply_Method",Apply_Method ("Test","solve_linear"))*)
neuper@37906
   119
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   120
(*val nxt = ("Rewrite_Set_Inst",Rewrite_Set_Inst ([#],"isolate_bdv"))*)
neuper@37906
   121
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   122
(*val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify")*)
neuper@37906
   123
neuper@37906
   124
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@55279
   125
(*val nxt = ("Check_Postcond",Check_Postcond ["LINEAR","univariate","eq*)
neuper@37906
   126
neuper@37906
   127
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   128
  p;
neuper@48895
   129
  writeln(istate2str (fst (get_istate pt ([3],Res))));
neuper@37906
   130
(*val nxt = ("Check_elementwise",Check_elementwise "Assumptions")*)
neuper@37906
   131
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   132
neuper@37906
   133
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   134
val Form' (FormKF (_,EdUndef,0,Nundef,res)) = f;
neuper@37906
   135
if (snd nxt)=End_Proof' andalso res="[x = 1]" then ()
neuper@38031
   136
else error "subp-rooteq.sml: new.behav. in  miniscript with mini-subpbl";
neuper@37906
   137
neuper@37906
   138
neuper@37906
   139
"---------------- solve_linear as rootpbl -----------------";
neuper@37906
   140
"---------------- solve_linear as rootpbl -----------------";
neuper@37906
   141
"---------------- solve_linear as rootpbl -----------------";
neuper@42124
   142
val fmz = ["equality (1+-1*2+x=(0::real))",
neuper@37906
   143
	   "solveFor x","solutions L"];
neuper@37906
   144
val (dI',pI',mI') =
neuper@55279
   145
  ("Test",["LINEAR","univariate","equation","test"],
neuper@37906
   146
   ["Test","solve_linear"]);
neuper@37906
   147
neuper@37906
   148
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; 
neuper@37906
   149
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   150
(*val nxt = ("Add_Given",Add_Given "equality (x + #1 + #-1 * #2 = #0)")*)
neuper@37906
   151
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   152
(*val nxt = ("Add_Given",Add_Given "solveFor x") : string * tac*)
neuper@37906
   153
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   154
(*val nxt = ("Add_Find",Add_Find "solutions L") : string * tac*)
neuper@37906
   155
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@38058
   156
(*val nxt = ("Specify_Theory",Specify_Theory "Test") : string * tac*)
neuper@37906
   157
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   158
(*val nxt = ("Specify_Problem",Specify_Problem ["univariate","equation"])*)
neuper@37906
   159
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@38058
   160
(*val nxt = ("Specify_Method",Specify_Method ("Test","solve_linear"))*)
neuper@37906
   161
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@38058
   162
(*val nxt = ("Apply_Method",Apply_Method ("Test","solve_linear"))*)
neuper@37906
   163
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   164
(*val f = Form' (FormKF (~1,EdUndef,1,Nundef,"#1 + #-1 * #2 + x = #0"))
neuper@37906
   165
  val nxt = ("Rewrite_Set_Inst",Rewrite_Set_Inst ([#],"isolate_bdv"))*)
neuper@37906
   166
neuper@37906
   167
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   168
(*val f = Form' (FormKF (~1,EdUndef,1,Nundef,"x = #0 + #-1 * (#1 + #-1 * #2)"))
neuper@37906
   169
  val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify") : string * tac*)
neuper@37906
   170
neuper@37906
   171
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   172
(*val f = Form' (FormKF (~1,EdUndef,1,Nundef,"x = #1")) : mout                   val nxt = ("Check_Postcond",Check_Postcond ["univariate","equation"])*)
neuper@37906
   173
neuper@37906
   174
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   175
(*val f = Form' (FormKF (~1,EdUndef,0,Nundef,"[x = #1]")) : mout 
neuper@37906
   176
  val nxt = ("End_Proof'",End_Proof') : string * tac*)
neuper@37906
   177
val Form' (FormKF (_,EdUndef,0,Nundef,res)) = f;
neuper@37906
   178
if (snd nxt)=End_Proof' andalso res="[x = 1]" then ()
neuper@38031
   179
else error "subp-rooteq.sml: new.behav. in  solve_linear as rootpbl";
neuper@37906
   180
neuper@37906
   181
neuper@37906
   182
"---------------- solve_plain_square as rootpbl -----------";
neuper@37906
   183
"---------------- solve_plain_square as rootpbl -----------";
neuper@37906
   184
"---------------- solve_plain_square as rootpbl -----------";
neuper@37906
   185
val fmz = ["equality (9 + -1 * x ^^^ 2 = 0)","solveFor x",
neuper@37906
   186
	   "solutions L"];
neuper@37906
   187
val (dI',pI',mI') =
neuper@38058
   188
  ("Test",["plain_square","univariate","equation","test"],
neuper@37906
   189
   ["Test","solve_plain_square"]);
neuper@37906
   190
(*val p = e_pos'; val c = []; 
neuper@37906
   191
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   192
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   193
neuper@37906
   194
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   195
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   196
neuper@37906
   197
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
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  Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
neuper@37906
   211
if snd nxt=End_Proof' andalso res="[x = -3, x = 3]" then ()
neuper@38031
   212
else error "subp-rooteq.sml: new.behav. in  solve_plain_square as rootpbl";
neuper@37906
   213
neuper@37906
   214
neuper@37906
   215
neuper@37906
   216
neuper@37906
   217
"---------------- root-eq + subpbl: solve_linear ----------";
neuper@37906
   218
"---------------- root-eq + subpbl: solve_linear ----------";
neuper@37906
   219
"---------------- root-eq + subpbl: solve_linear ----------";
neuper@37906
   220
val fmz = ["equality (sqrt(9+4*x)=sqrt x + sqrt(5+x))",
neuper@37906
   221
	   "solveFor x","solutions L"];
neuper@37906
   222
val (dI',pI',mI') =
neuper@38058
   223
  ("Test",["sqroot-test","univariate","equation","test"],
neuper@37906
   224
   ["Test","square_equation1"]);
neuper@37906
   225
(*val p = e_pos'; val c = []; 
neuper@37906
   226
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   227
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   228
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   229
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
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
(*"sqrt (9 + 4 * x) = sqrt x + sqrt (5 + x)"
neuper@37906
   238
square_equation_left*)
neuper@37906
   239
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   240
(*"9 + 4 * x = (sqrt x + sqrt (5 + x)) ^^^ 2"
neuper@37906
   241
Test_simplify*)
neuper@37906
   242
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   243
(*"9 + 4 * x = 5 + (2 * x + 2 * sqrt (x ^^^ 2 + 5 * x))"
neuper@37906
   244
rearrange_assoc*)
neuper@37906
   245
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   246
(*"9 + 4 * x = 5 + 2 * x + 2 * sqrt (x ^^^ 2 + 5 * x)"
neuper@37906
   247
isolate_root*)
neuper@37906
   248
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   249
(*"sqrt (x ^^^ 2 + 5 * x) = (5 + 2 * x + -1 * (9 + 4 * x)) / (-1 * 2)"
neuper@37906
   250
Test_simplify*)
neuper@37906
   251
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
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
(*"x ^^^ 2 + 5 * x + -1 * (4 + (x ^^^ 2 + 4 * x)) = 0"*)
neuper@37906
   258
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   259
(*"-4 + x = 0"
neuper@55279
   260
  val nxt =("Subproblem",Subproblem ("Test",["LINEAR","univariate"...*)
neuper@37906
   261
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@55279
   262
(*val nxt =("Model_Problem",Model_Problem ["LINEAR","univariate"...*)
neuper@37906
   263
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   264
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   265
neuper@37906
   266
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   267
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@38058
   268
(*val nxt = ("Specify_Theory",Specify_Theory "Test")*)
neuper@37906
   269
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@55279
   270
(*("Specify_Problem",Specify_Problem ["LINEAR","univariate","equation"])*)
neuper@37906
   271
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
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
(*"x = 0 + -1 * -4", nxt Test_simplify*)
neuper@37906
   276
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@55279
   277
(*"x = 4", nxt Check_Postcond ["LINEAR","univariate","equation","test"]*)
neuper@37906
   278
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   279
(*"[x = 4]", nxt Check_elementwise "Assumptions"*)
neuper@37906
   280
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   281
(*"[]", nxt Check_Postcond ["sqroot-test","univariate","equation","test"]*)
neuper@37906
   282
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   283
val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
neuper@37906
   284
if (snd nxt)=End_Proof' andalso res="[x = 4]" then ()
neuper@38031
   285
else error "subp-rooteq.sml: new.behav. in  root-eq + subpbl: solve_linear";
neuper@37906
   286
neuper@37906
   287
neuper@37906
   288
neuper@37906
   289
"---------------- root-eq + subpbl: solve_plain_square ----";
neuper@37906
   290
"---------------- root-eq + subpbl: solve_plain_square ----";
neuper@37906
   291
"---------------- root-eq + subpbl: solve_plain_square ----";
neuper@37906
   292
val fmz = ["equality (sqrt(5+x)+sqrt(5-x)=sqrt 18)",
neuper@37906
   293
	   "solveFor x","solutions L"];
neuper@37906
   294
val (dI',pI',mI') =
neuper@38058
   295
  ("Test",["sqroot-test","univariate","equation","test"],
neuper@37906
   296
   ["Test","square_equation2"]);
neuper@48790
   297
val Prog sc = (#scr o get_met) ["Test","square_equation2"];
neuper@37906
   298
(writeln o term2str) sc;
neuper@37906
   299
neuper@37906
   300
(*val p = e_pos'; val c = []; 
neuper@37906
   301
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   302
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   303
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   304
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
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@38058
   311
(*val nxt = ("Apply_Method",Apply_Method ("Test","square_equation1"))*)
neuper@37906
   312
val (p,_,f,nxt,_,pt) = 
neuper@37906
   313
neuper@37906
   314
me nxt p [1] pt;
neuper@37906
   315
val (p,_,f,nxt,_,pt) = 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
(*"9 + -1 * x ^^^ 2 = 0"
neuper@38058
   324
  Subproblem ("Test",["plain_square","univariate","equation"]))*)
neuper@37906
   325
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   326
(*Model_Problem ["plain_square","univariate","equation"]*)
neuper@37906
   327
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
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@38058
   331
(*val nxt = ("Specify_Theory",Specify_Theory "Test")*)
neuper@37906
   332
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
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@38058
   335
(*Apply_Method ("Test","solve_plain_square")*)
neuper@37906
   336
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   337
(*"9 + -1 * x ^^^ 2 = 0", nxt Rewrite_Set "isolate_bdv"*)
neuper@37906
   338
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   339
(*"x ^^^ 2 = (0 + -1 * 9) / -1", nxt Rewrite_Set "Test_simplify"*)
neuper@37906
   340
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   341
(*"x ^^^ 2 = 9", nxt Rewrite ("square_equality"*)
neuper@37906
   342
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   343
(*"x = sqrt 9 | x = -1 * sqrt 9", nxt Rewrite_Set "tval_rls"*)
neuper@37906
   344
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   345
(*"x = -3 | x = 3", nxt Or_to_List*)
neuper@37906
   346
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   347
(*"[x = -3, x = 3]", 
neuper@37906
   348
  nxt Check_Postcond ["plain_square","univariate","equation","test"]*)
neuper@37906
   349
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   350
neuper@37906
   351
neuper@37906
   352
neuper@37906
   353
(*"[x = -3, x = 3]", nxt Check_elementwise "Assumptions"*)
neuper@37906
   354
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   355
(*"[]", nxt Check_Postcond ["sqroot-test","univariate","equation","test"]*)
neuper@37906
   356
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   357
val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
neuper@37906
   358
if (snd nxt)=End_Proof' andalso res="[x = -3, x = 3]" then ()
neuper@38031
   359
else error "subp-rooteq.sml: new.behav. in  root-eq + subpbl: solve_plain_square";
neuper@37906
   360
neuper@37906
   361
wneuper@59279
   362
writeln (pr_ctree pr_short pt);
neuper@37906
   363
neuper@37906
   364
neuper@37906
   365
neuper@48790
   366
val Prog s = (#scr o get_met) ["Test","square_equation"];
neuper@37906
   367
atomt s;
neuper@37906
   368
neuper@37906
   369
neuper@37906
   370
neuper@37906
   371
neuper@37906
   372
"---------------- root-eq + subpbl: no_met: linear ----";
neuper@37906
   373
"---------------- root-eq + subpbl: no_met: linear ----";
neuper@37906
   374
"---------------- root-eq + subpbl: no_met: linear ----";
neuper@37906
   375
val fmz = ["equality (sqrt(9+4*x)=sqrt x + sqrt(5+x))",
neuper@37906
   376
	   "solveFor x","solutions L"];
neuper@37906
   377
val (dI',pI',mI') =
neuper@38058
   378
  ("Test",["squareroot","univariate","equation","test"],
neuper@37906
   379
   ["Test","square_equation"]);
neuper@37906
   380
(*val p = e_pos'; val c = []; 
neuper@37906
   381
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   382
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   383
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   384
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
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@38058
   403
(*"-4 + x = 0", nxt Subproblem ("Test",["univariate","equation"]))*)
neuper@37906
   404
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@55279
   405
(*val nxt =("Model_Problem",Model_Problem ["LINEAR","univar...*)
neuper@37906
   406
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
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@38058
   410
(*val nxt = ("Specify_Theory",Specify_Theory "Test")*)
neuper@37906
   411
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@55279
   412
(*val nxt = ("Specify_Problem",Specify_Problem ["LINEAR","univariate","equ*)
neuper@37906
   413
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   414
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@38058
   415
(*Apply_Method ("Test","norm_univar_equation")*)
neuper@37906
   416
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
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
if p = ([13],Res) then ()
neuper@38031
   422
else error ("subp-rooteq.sml: new.behav. in  \
neuper@37906
   423
		 \root-eq + subpbl: solve_linear, p ="^(pos'2str p));
neuper@37906
   424
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   425
val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
neuper@37906
   426
if (snd nxt)=End_Proof' andalso res="[x = 4]" then ()
neuper@38031
   427
else error "subp-rooteq.sml: new.behav. in  root-eq + subpbl: solve_plain_square";
neuper@37906
   428
neuper@37906
   429
neuper@37906
   430
neuper@37906
   431
neuper@37906
   432
"---------------- root-eq + subpbl: no_met: square ----";
neuper@37906
   433
"---------------- root-eq + subpbl: no_met: square ----";
neuper@37906
   434
"---------------- root-eq + subpbl: no_met: square ----";
neuper@37906
   435
val fmz = ["equality (sqrt(5+x)+sqrt(5-x)=sqrt 18)",
neuper@37906
   436
	   "solveFor x","solutions L"];
neuper@37906
   437
val (dI',pI',mI') =
neuper@38058
   438
  ("Test",["squareroot","univariate","equation","test"],
neuper@37906
   439
   ["Test","square_equation"]);
neuper@48790
   440
 val Prog sc = (#scr o get_met) ["Test","square_equation"];
neuper@37906
   441
 (writeln o term2str) sc;
neuper@37906
   442
neuper@37906
   443
(*val p = e_pos'; val c = []; 
neuper@37906
   444
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   445
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   446
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   447
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
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@38058
   454
(*val nxt = ("Apply_Method",Apply_Method ("Test","square_equation1"))*)
neuper@37906
   455
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
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@38058
   464
(*Subproblem ("Test",["univariate","equation"]))*)
neuper@37906
   465
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   466
(*Model_Problem ["plain_square","univariate","equation"]*)
neuper@37906
   467
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
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@38058
   471
(*val nxt = ("Specify_Theory",Specify_Theory "Test")*)
neuper@37906
   472
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
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 nxt = ("Check_Postcond",Check_Postcond ["squareroot","univariate","equ*)
neuper@37906
   484
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
neuper@37906
   485
val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
neuper@37906
   486
if (snd nxt)=End_Proof' andalso res="[x = -3, x = 3]" then ()
neuper@38031
   487
else error "subp-rooteq.sml: new.behav. in  root-eq + subpbl: no_met: square";
neuper@37906
   488
neuper@37906
   489
neuper@37906
   490
neuper@37906
   491
"---------------- no_met in rootpbl -> linear --------------";
neuper@37906
   492
"---------------- no_met in rootpbl -> linear --------------";
neuper@37906
   493
"---------------- no_met in rootpbl -> linear --------------";
neuper@37906
   494
val fmz = ["equality (1+2*x+3=4*x- 6)",
neuper@37906
   495
	   "solveFor x","solutions L"];
neuper@37906
   496
val (dI',pI',mI') =
neuper@38058
   497
  ("Test",["univariate","equation","test"],
neuper@37906
   498
   ["no_met"]);
neuper@37906
   499
(*val p = e_pos'; val c = []; 
neuper@37906
   500
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
neuper@37906
   501
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;*)
neuper@37906
   502
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   503
(*val nxt = ("Model_Problem",Model_Problem ["normalize","univariate","equati*)
neuper@37906
   504
val (p,_,f,nxt,_,pt) = me nxt p c pt;
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@38058
   511
(*val nxt = ("Apply_Method",Apply_Method ("Test","norm_univar_equation"*)
neuper@37906
   512
val (p,_,f,nxt,_,pt) = me nxt p c pt;
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@38058
   515
(*val nxt = ("Subproblem",Subproblem ("Test",["univariate","equation"])*)
neuper@37906
   516
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@55279
   517
(*val nxt = ("Model_Problem",Model_Problem ["LINEAR","univariate","equation"]*)
neuper@37906
   518
val (p,_,f,nxt,_,pt) = me nxt p c pt;
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@38058
   525
(*val nxt = ("Apply_Method",Apply_Method ("Test","solve_linear"))*)
neuper@37906
   526
val (p,_,f,nxt,_,pt) = me nxt p c pt;
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@55279
   529
(*val nxt = ("Check_Postcond",Check_Postcond ["LINEAR","univariate","equatio*)
neuper@37906
   530
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   531
(*val nxt = ("Check_Postcond",Check_Postcond ["normalize","univariate","equa*)
neuper@37906
   532
val (p,_,Form' (FormKF (_,_,_,_,f)),nxt,_,_) = 
neuper@37906
   533
    me nxt p c pt;
neuper@37906
   534
if f="[x = 5]" andalso nxt=("End_Proof'",End_Proof') then ()
neuper@38031
   535
else error "subp-rooteq.sml: new.behav. in no_met in rootpbl -> linear ---";
neuper@37906
   536
neuper@37906
   537
neuper@37906
   538
refine fmz ["univariate","equation","test"];
neuper@37906
   539
match_pbl fmz (get_pbt ["polynomial","univariate","equation","test"]);
neuper@37906
   540