src/sml/systest/subp-rooteq.sml
author agriesma
Thu, 17 Apr 2003 18:01:03 +0200
branchgriesmayer
changeset 338 90390fecbe74
child 710 afa379bfb2c6
permissions -rw-r--r--
neues cvs-verzeichnis
agriesma@338
     1
(* use"tests/subp-rooteq.sml";
agriesma@338
     2
   use"subp-rooteq.sml";
agriesma@338
     3
   *)
agriesma@338
     4
agriesma@338
     5
agriesma@338
     6
"---------------- miniscript with mini-subpbl -------------";
agriesma@338
     7
"---------------- solve_linear as rootpbl -----------------";
agriesma@338
     8
"---------------- solve_plain_square as rootpbl -----------";
agriesma@338
     9
"---------------- root-eq + subpbl: solve_linear ----------";
agriesma@338
    10
"---------------- root-eq + subpbl: solve_plain_square ----";
agriesma@338
    11
"---------------- root-eq + subpbl: no_met: linear ----";
agriesma@338
    12
"---------------- root-eq + subpbl: no_met: square ----";
agriesma@338
    13
"---------------- no_met in rootpbl -> linear --------------";
agriesma@338
    14
agriesma@338
    15
agriesma@338
    16
agriesma@338
    17
agriesma@338
    18
agriesma@338
    19
"---------------- miniscript with mini-subpbl -------------";
agriesma@338
    20
"---------------- miniscript with mini-subpbl -------------";
agriesma@338
    21
"---------------- miniscript with mini-subpbl -------------";
agriesma@338
    22
val fmz = ["equality (x+1=2)",
agriesma@338
    23
	   "solveFor x","errorBound (eps=0)",
agriesma@338
    24
	   "solutions L"];
agriesma@338
    25
val (dI',pI',mI') =
agriesma@338
    26
  ("Test.thy",["sqroot-test","univariate","equation","test"],
agriesma@338
    27
   ("Test.thy","squ-equ-test-subpbl1"));
agriesma@338
    28
 val Script sc = (#scr o get_met) ("Test.thy","squ-equ-test-subpbl1");
agriesma@338
    29
 (writeln o term2str) sc;
agriesma@338
    30
agriesma@338
    31
val p = e_pos'; val c = []; 
agriesma@338
    32
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
agriesma@338
    33
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;
agriesma@338
    34
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    35
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    36
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    37
(*val nxt = ("Add_Find",Add_Find "solutions L") : string * mstep*)
agriesma@338
    38
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    39
(*val nxt = ("Specify_Domain",Specify_Domain "Test.thy") : string * mstep*)
agriesma@338
    40
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    41
(*("Specify_Problem",Specify_Problem ["sqroot-test","univariate","equation"]*)
agriesma@338
    42
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    43
(*("Specify_Method",Specify_Method ("Test.thy","squ-equ-test-subpbl1"))*)
agriesma@338
    44
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    45
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","squ-equ-test-subpbl1"*)
agriesma@338
    46
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    47
(*val nxt = ("Rewrite_Set",Rewrite_Set "norm_equation") : string * mstep*)
agriesma@338
    48
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    49
(*val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify")*)
agriesma@338
    50
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    51
(*val nxt = ("Subproblem",Subproblem ("Test.thy",[#,#,#])) : string * mstep
agriesma@338
    52
                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
agriesma@338
    53
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    54
  p;
agriesma@338
    55
  writeln(istate2str (get_istate pt ([3],Frm)));
agriesma@338
    56
(*val nxt = ("Model_Problem",Model_Problem ["linear","univariate","equation"]*)
agriesma@338
    57
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    58
(*val nxt = ("Add_Given",Add_Given "equality (-1 + x = 0)") *)
agriesma@338
    59
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    60
(*val nxt = ("Add_Given",Add_Given "solveFor x") : string * mstep*)
agriesma@338
    61
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    62
(*val nxt = ("Add_Find",Add_Find "solutions x_i") : string * mstep*)
agriesma@338
    63
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    64
(*val nxt = ("Specify_Domain",Specify_Domain "Test.thy")*)
agriesma@338
    65
agriesma@338
    66
agriesma@338
    67
(*-----30.9.02----------------------------------------------*)
agriesma@338
    68
agriesma@338
    69
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    70
(*("Specify_Problem",Specify_Problem ["linear","univariate","equation"])*)
agriesma@338
    71
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    72
(*val nxt = ("Specify_Method",Specify_Method ("Test.thy","solve_linear"))*)
agriesma@338
    73
  val Script sc = (#scr o get_met) ("Test.thy","solve_linear");
agriesma@338
    74
  (writeln o term2str) sc;
agriesma@338
    75
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    76
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","solve_linear"))*)
agriesma@338
    77
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    78
(*val nxt = ("Rewrite_Set_Inst",Rewrite_Set_Inst ([#],"isolate_bdv"))*)
agriesma@338
    79
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    80
(*val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify")*)
agriesma@338
    81
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    82
(*val nxt = ("Check_Postcond",Check_Postcond ["linear","univariate","eq*)
agriesma@338
    83
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    84
  p;
agriesma@338
    85
  writeln(istate2str (get_istate pt ([3],Res)));
agriesma@338
    86
agriesma@338
    87
(*val nxt = ("Check_elementwise",Check_elementwise "Assumptions")*)
agriesma@338
    88
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    89
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
    90
val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
agriesma@338
    91
if (snd nxt)=End_Proof' andalso res="[x = 1]" then ()
agriesma@338
    92
else raise error "new behaviour in test: miniscript with mini-subpbl";
agriesma@338
    93
agriesma@338
    94
agriesma@338
    95
"---------------- solve_linear as rootpbl -----------------";
agriesma@338
    96
"---------------- solve_linear as rootpbl -----------------";
agriesma@338
    97
"---------------- solve_linear as rootpbl -----------------";
agriesma@338
    98
val fmz = ["equality (1+-1*2+x=0)",
agriesma@338
    99
	   "solveFor x","solutions L"];
agriesma@338
   100
val (dI',pI',mI') =
agriesma@338
   101
  ("Test.thy",["linear","univariate","equation","test"],
agriesma@338
   102
   ("Test.thy","solve_linear"));
agriesma@338
   103
val p = e_pos'; val c = []; 
agriesma@338
   104
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
agriesma@338
   105
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;
agriesma@338
   106
(*val nxt = ("Add_Given",Add_Given "equality (x + #1 + #-1 * #2 = #0)")*)
agriesma@338
   107
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   108
(*val nxt = ("Add_Given",Add_Given "solveFor x") : string * mstep*)
agriesma@338
   109
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   110
(*val nxt = ("Add_Find",Add_Find "solutions L") : string * mstep*)
agriesma@338
   111
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   112
(*val nxt = ("Specify_Domain",Specify_Domain "Test.thy") : string * mstep*)
agriesma@338
   113
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   114
(*val nxt = ("Specify_Problem",Specify_Problem ["univariate","equation"])*)
agriesma@338
   115
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   116
(*val nxt = ("Specify_Method",Specify_Method ("Test.thy","solve_linear"))*)
agriesma@338
   117
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   118
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","solve_linear"))*)
agriesma@338
   119
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   120
(*val f = Form' (FormKF (~1,EdUndef,1,Nundef,"#1 + #-1 * #2 + x = #0"))
agriesma@338
   121
  val nxt = ("Rewrite_Set_Inst",Rewrite_Set_Inst ([#],"isolate_bdv"))*)
agriesma@338
   122
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   123
(*val f = Form' (FormKF (~1,EdUndef,1,Nundef,"x = #0 + #-1 * (#1 + #-1 * #2)"))
agriesma@338
   124
  val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify") : string * mstep*)
agriesma@338
   125
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   126
(*val f = Form' (FormKF (~1,EdUndef,1,Nundef,"x = #1")) : mout                   val nxt = ("Check_Postcond",Check_Postcond ["univariate","equation"])*)
agriesma@338
   127
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   128
(*val f = Form' (FormKF (~1,EdUndef,0,Nundef,"[x = #1]")) : mout 
agriesma@338
   129
  val nxt = ("End_Proof'",End_Proof') : string * mstep*)
agriesma@338
   130
val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
agriesma@338
   131
if (snd nxt)=End_Proof' andalso res="[x = 1]" then ()
agriesma@338
   132
else raise error "new behaviour in test: solve_linear as rootpbl";
agriesma@338
   133
agriesma@338
   134
agriesma@338
   135
"---------------- solve_plain_square as rootpbl -----------";
agriesma@338
   136
"---------------- solve_plain_square as rootpbl -----------";
agriesma@338
   137
"---------------- solve_plain_square as rootpbl -----------";
agriesma@338
   138
val fmz = ["equality (9 + -1 * x ^^^ 2 = 0)","solveFor x",
agriesma@338
   139
	   "solutions L"];
agriesma@338
   140
val (dI',pI',mI') =
agriesma@338
   141
  ("Test.thy",["plain_square","univariate","equation","test"],
agriesma@338
   142
   ("Test.thy","solve_plain_square"));
agriesma@338
   143
val p = e_pos'; val c = []; 
agriesma@338
   144
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
agriesma@338
   145
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;
agriesma@338
   146
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 (p,_,f,nxt,_,pt) = me nxt p [1] pt;
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;
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  Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
agriesma@338
   161
if snd nxt=End_Proof' andalso res="[x = -3, x = 3]" then ()
agriesma@338
   162
else raise error "new behaviour in test: solve_plain_square as rootpbl";
agriesma@338
   163
agriesma@338
   164
agriesma@338
   165
agriesma@338
   166
agriesma@338
   167
"---------------- root-eq + subpbl: solve_linear ----------";
agriesma@338
   168
"---------------- root-eq + subpbl: solve_linear ----------";
agriesma@338
   169
"---------------- root-eq + subpbl: solve_linear ----------";
agriesma@338
   170
val fmz = ["equality (sqrt(9+4*x)=sqrt x + sqrt(5+x))",
agriesma@338
   171
	   "solveFor x","errorBound (eps=0)",
agriesma@338
   172
	   "solutions L"];
agriesma@338
   173
val (dI',pI',mI') =
agriesma@338
   174
  ("Test.thy",["sqroot-test","univariate","equation","test"],
agriesma@338
   175
   ("Test.thy","square_equation1"));
agriesma@338
   176
val p = e_pos'; val c = []; 
agriesma@338
   177
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
agriesma@338
   178
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;
agriesma@338
   179
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   180
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   181
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   182
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   183
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   184
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   185
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   186
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   187
(*"sqrt (9 + 4 * x) = sqrt x + sqrt (5 + x)"
agriesma@338
   188
square_equation_left*)
agriesma@338
   189
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   190
(*"9 + 4 * x = (sqrt x + sqrt (5 + x)) ^^^ 2"
agriesma@338
   191
Test_simplify*)
agriesma@338
   192
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   193
(*"9 + 4 * x = 5 + (2 * x + 2 * sqrt (x ^^^ 2 + 5 * x))"
agriesma@338
   194
rearrange_assoc*)
agriesma@338
   195
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   196
(*"9 + 4 * x = 5 + 2 * x + 2 * sqrt (x ^^^ 2 + 5 * x)"
agriesma@338
   197
isolate_root*)
agriesma@338
   198
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   199
(*"sqrt (x ^^^ 2 + 5 * x) = (5 + 2 * x + -1 * (9 + 4 * x)) / (-1 * 2)"
agriesma@338
   200
Test_simplify*)
agriesma@338
   201
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   202
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   203
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   204
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   205
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   206
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   207
(*"x ^^^ 2 + 5 * x + -1 * (4 + (x ^^^ 2 + 4 * x)) = 0"*)
agriesma@338
   208
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   209
(*"-4 + x = 0"
agriesma@338
   210
  val nxt =("Subproblem",Subproblem ("Test.thy",["linear","univariate"...*)
agriesma@338
   211
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   212
(*val nxt =("Model_Problem",Model_Problem ["linear","univariate"...*)
agriesma@338
   213
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   214
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   215
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   216
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   217
(*val nxt = ("Specify_Domain",Specify_Domain "Test.thy")*)
agriesma@338
   218
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   219
(*("Specify_Problem",Specify_Problem ["linear","univariate","equation"])*)
agriesma@338
   220
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   221
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   222
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   223
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   224
(*"x = 0 + -1 * -4", nxt Test_simplify*)
agriesma@338
   225
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   226
(*"x = 4", nxt Check_Postcond ["linear","univariate","equation","test"]*)
agriesma@338
   227
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   228
(*"[x = 4]", nxt Check_elementwise "Assumptions"*)
agriesma@338
   229
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   230
(*"[]", nxt Check_Postcond ["sqroot-test","univariate","equation","test"]*)
agriesma@338
   231
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   232
val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
agriesma@338
   233
if (snd nxt)=End_Proof' andalso res="[x = 4]" then ()
agriesma@338
   234
else raise error "new behaviour in test: root-eq + subpbl: solve_linear";
agriesma@338
   235
agriesma@338
   236
agriesma@338
   237
agriesma@338
   238
"---------------- root-eq + subpbl: solve_plain_square ----";
agriesma@338
   239
"---------------- root-eq + subpbl: solve_plain_square ----";
agriesma@338
   240
"---------------- root-eq + subpbl: solve_plain_square ----";
agriesma@338
   241
val fmz = ["equality (sqrt(5+x)+sqrt(5-x)=sqrt 18)",
agriesma@338
   242
	   "solveFor x","errorBound (eps=0)",
agriesma@338
   243
	   "solutions L"];
agriesma@338
   244
val (dI',pI',mI') =
agriesma@338
   245
  ("Test.thy",["sqroot-test","univariate","equation","test"],
agriesma@338
   246
   ("Test.thy","square_equation2"));
agriesma@338
   247
val Script sc = (#scr o get_met) ("Test.thy","square_equation2");
agriesma@338
   248
(writeln o term2str) sc;
agriesma@338
   249
agriesma@338
   250
val p = e_pos'; val c = []; 
agriesma@338
   251
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
agriesma@338
   252
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;
agriesma@338
   253
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   254
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   255
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   256
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   257
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   258
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   259
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   260
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","square_equation1"))*)
agriesma@338
   261
val (p,_,f,nxt,_,pt) = 
agriesma@338
   262
agriesma@338
   263
me nxt p [1] pt;
agriesma@338
   264
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   265
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   266
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   267
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   268
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   269
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   270
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   271
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   272
(*"9 + -1 * x ^^^ 2 = 0"
agriesma@338
   273
  Subproblem ("Test.thy",["plain_square","univariate","equation"]))*)
agriesma@338
   274
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   275
(*Model_Problem ["plain_square","univariate","equation"]*)
agriesma@338
   276
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   277
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   278
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   279
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   280
(*val nxt = ("Specify_Domain",Specify_Domain "Test.thy")*)
agriesma@338
   281
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   282
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   283
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   284
(*Apply_Method ("Test.thy","solve_plain_square")*)
agriesma@338
   285
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   286
(*"9 + -1 * x ^^^ 2 = 0", nxt Rewrite_Set "isolate_bdv"*)
agriesma@338
   287
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   288
(*"x ^^^ 2 = (0 + -1 * 9) / -1", nxt Rewrite_Set "Test_simplify"*)
agriesma@338
   289
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   290
(*"x ^^^ 2 = 9", nxt Rewrite ("square_equality"*)
agriesma@338
   291
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   292
(*"x = sqrt 9 | x = -1 * sqrt 9", nxt Rewrite_Set "tval_rls"*)
agriesma@338
   293
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   294
(*"x = -3 | x = 3", nxt Or_to_List*)
agriesma@338
   295
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   296
(*"[x = -3, x = 3]", 
agriesma@338
   297
  nxt Check_Postcond ["plain_square","univariate","equation","test"]*)
agriesma@338
   298
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   299
agriesma@338
   300
agriesma@338
   301
agriesma@338
   302
(*"[x = -3, x = 3]", nxt Check_elementwise "Assumptions"*)
agriesma@338
   303
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   304
(*"[]", nxt Check_Postcond ["sqroot-test","univariate","equation","test"]*)
agriesma@338
   305
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   306
val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
agriesma@338
   307
if (snd nxt)=End_Proof' andalso res="[x = -3, x = 3]" then ()
agriesma@338
   308
else raise error "new behaviour in test: root-eq + subpbl: solve_plain_square";
agriesma@338
   309
agriesma@338
   310
agriesma@338
   311
writeln (pr_ptree pr_short pt);
agriesma@338
   312
agriesma@338
   313
agriesma@338
   314
agriesma@338
   315
val Script s = (#scr o get_met) ("Test.thy","square_equation");
agriesma@338
   316
atomt s;
agriesma@338
   317
agriesma@338
   318
agriesma@338
   319
agriesma@338
   320
agriesma@338
   321
"---------------- root-eq + subpbl: no_met: linear ----";
agriesma@338
   322
"---------------- root-eq + subpbl: no_met: linear ----";
agriesma@338
   323
"---------------- root-eq + subpbl: no_met: linear ----";
agriesma@338
   324
val fmz = ["equality (sqrt(9+4*x)=sqrt x + sqrt(5+x))",
agriesma@338
   325
	   "solveFor x","errorBound (eps=0)",
agriesma@338
   326
	   "solutions L"];
agriesma@338
   327
val (dI',pI',mI') =
agriesma@338
   328
  ("Test.thy",["squareroot","univariate","equation","test"],
agriesma@338
   329
   ("Test.thy","square_equation"));
agriesma@338
   330
val p = e_pos'; val c = []; 
agriesma@338
   331
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
agriesma@338
   332
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;
agriesma@338
   333
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   334
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   335
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   336
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   337
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   338
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   339
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   340
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   341
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   342
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   343
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   344
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   345
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   346
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   347
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   348
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   349
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   350
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   351
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   352
(*"-4 + x = 0", nxt Subproblem ("Test.thy",["univariate","equation"]))*)
agriesma@338
   353
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   354
(*val nxt = ("Refine_Tacitly",Refine_Tacitly ["univariate","equation"])*)
agriesma@338
   355
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   356
(*val nxt =("Model_Problem",Model_Problem ["linear","univar...*)
agriesma@338
   357
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   358
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   359
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   360
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   361
(*val nxt = ("Specify_Domain",Specify_Domain "Test.thy")*)
agriesma@338
   362
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   363
(*val nxt = ("Specify_Problem",Specify_Problem ["linear","univariate","equ*)
agriesma@338
   364
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   365
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   366
(*Apply_Method ("Test.thy","norm_univar_equation")*)
agriesma@338
   367
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   368
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   369
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   370
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   371
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   372
if p = ([13],Res) then ()
agriesma@338
   373
else raise error ("new behaviour in test: \
agriesma@338
   374
		 \root-eq + subpbl: solve_linear, p ="^(pos'2str p));
agriesma@338
   375
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   376
val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
agriesma@338
   377
if (snd nxt)=End_Proof' andalso res="[x = 4]" then ()
agriesma@338
   378
else raise error "new behaviour in test: root-eq + subpbl: solve_plain_square";
agriesma@338
   379
agriesma@338
   380
agriesma@338
   381
agriesma@338
   382
agriesma@338
   383
"---------------- root-eq + subpbl: no_met: square ----";
agriesma@338
   384
"---------------- root-eq + subpbl: no_met: square ----";
agriesma@338
   385
"---------------- root-eq + subpbl: no_met: square ----";
agriesma@338
   386
val fmz = ["equality (sqrt(5+x)+sqrt(5-x)=sqrt 18)",
agriesma@338
   387
	   "solveFor x","errorBound (eps=0)",
agriesma@338
   388
	   "solutions L"];
agriesma@338
   389
val (dI',pI',mI') =
agriesma@338
   390
  ("Test.thy",["squareroot","univariate","equation","test"],
agriesma@338
   391
   ("Test.thy","square_equation"));
agriesma@338
   392
 val Script sc = (#scr o get_met) ("Test.thy","square_equation");
agriesma@338
   393
 (writeln o term2str) sc;
agriesma@338
   394
agriesma@338
   395
val p = e_pos'; val c = []; 
agriesma@338
   396
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
agriesma@338
   397
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;
agriesma@338
   398
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   399
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   400
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   401
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   402
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   403
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   404
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   405
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","square_equation1"))*)
agriesma@338
   406
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   407
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   408
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   409
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   410
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   411
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   412
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   413
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   414
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   415
(*Subproblem ("Test.thy",["univariate","equation"]))*)
agriesma@338
   416
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   417
(*("Refine_Tacitly",Refine_Tacitly ["univariate","equation"])*)
agriesma@338
   418
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   419
(*Model_Problem ["plain_square","univariate","equation"]*)
agriesma@338
   420
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   421
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   422
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   423
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   424
(*val nxt = ("Specify_Domain",Specify_Domain "Test.thy")*)
agriesma@338
   425
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   426
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   427
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   428
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   429
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   430
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   431
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   432
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   433
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   434
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   435
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   436
(*val nxt = ("Check_Postcond",Check_Postcond ["squareroot","univariate","equ*)
agriesma@338
   437
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   438
val Form' (FormKF (~1,EdUndef,0,Nundef,res)) = f;
agriesma@338
   439
if (snd nxt)=End_Proof' andalso res="[x = -3, x = 3]" then ()
agriesma@338
   440
else raise error "new behaviour in test: root-eq + subpbl: no_met: square";
agriesma@338
   441
agriesma@338
   442
agriesma@338
   443
agriesma@338
   444
"---------------- no_met in rootpbl -> linear --------------";
agriesma@338
   445
"---------------- no_met in rootpbl -> linear --------------";
agriesma@338
   446
"---------------- no_met in rootpbl -> linear --------------";
agriesma@338
   447
val fmz = ["equality (1+2*x+3=4*x- 6)",
agriesma@338
   448
	   "solveFor x","solutions L"];
agriesma@338
   449
val (dI',pI',mI') =
agriesma@338
   450
  ("Test.thy",["univariate","equation","test"],
agriesma@338
   451
   ("Test.thy","no_met"));
agriesma@338
   452
val p = e_pos'; val c = []; 
agriesma@338
   453
val (mI,m) = ("Init_Proof",Init_Proof (fmz, (dI',pI',mI')));
agriesma@338
   454
val (p,_,f,nxt,_,pt) = me (mI,m) p c EmptyPtree;
agriesma@338
   455
(*val nxt = ("Refine_Tacitly",Refine_Tacitly ["univariate","equation"])*)
agriesma@338
   456
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   457
(*val nxt = ("Model_Problem",Model_Problem ["normalize","univariate","equati*)
agriesma@338
   458
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   459
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   460
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   461
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   462
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   463
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   464
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   465
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","norm_univar_equation"*)
agriesma@338
   466
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   467
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   468
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   469
(*val nxt = ("Subproblem",Subproblem ("Test.thy",["univariate","equation"])*)
agriesma@338
   470
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   471
(*val nxt = ("Refine_Tacitly",Refine_Tacitly ["univariate","equation"])*)
agriesma@338
   472
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   473
(*val nxt = ("Model_Problem",Model_Problem ["linear","univariate","equation"]*)
agriesma@338
   474
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   475
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   476
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   477
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   478
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   479
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   480
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   481
(*val nxt = ("Apply_Method",Apply_Method ("Test.thy","solve_linear"))*)
agriesma@338
   482
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   483
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   484
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   485
(*val nxt = ("Check_Postcond",Check_Postcond ["linear","univariate","equatio*)
agriesma@338
   486
val (p,_,f,nxt,_,pt) = me nxt p [1] pt;
agriesma@338
   487
(*val nxt = ("Check_Postcond",Check_Postcond ["normalize","univariate","equa*)
agriesma@338
   488
val (p,_,Form' (FormKF (_,_,_,_,f)),nxt,_,_) = 
agriesma@338
   489
    me nxt p [1] pt;
agriesma@338
   490
if f="[x = 5]" andalso nxt=("End_Proof'",End_Proof') then ()
agriesma@338
   491
else raise error "new behaviour in test: no_met in rootpbl -> linear ---";
agriesma@338
   492