test/Tools/isac/Interpret/ptyps.sml
author Walther Neuper <neuper@ist.tugraz.at>
Tue, 28 Sep 2010 09:06:56 +0200
branchisac-update-Isa09-2
changeset 38031 460c24a6a6ba
parent 37960 ec20007095f2
child 38036 02a9b2540eb7
permissions -rw-r--r--
tuned error and writeln

# raise error --> error
# writeln in atomtyp, atomty, atomt and xmlsrc
neuper@37906
     1
(* tests for ME/ptyps.sml
neuper@37906
     2
   CAUTION: intermediately stores !ptyps THUS EVALUATE IN 1 GO
neuper@37906
     3
   author: Walther Neuper
neuper@37906
     4
   010916,
neuper@37906
     5
   (c) due to copyright terms
neuper@37906
     6
neuper@37906
     7
use"../smltest/ME/ptyps.sml";
neuper@37906
     8
use"ptyps.sml";
neuper@37906
     9
*)
neuper@37906
    10
neuper@37906
    11
"-----------------------------------------------------------------";
neuper@37906
    12
"table of contents -----------------------------------------------";
neuper@37906
    13
"-----------------------------------------------------------------";
neuper@37906
    14
"###### val intermediate_ptyps = !ptyps; #########################";
neuper@37906
    15
"----------- store test-pbtyps -----------------------------------";
neuper@37906
    16
"----------- refin test-pbtyps -----------------------------------";
neuper@37906
    17
"----------- refine_ori test-pbtyps ------------------------------";
neuper@37906
    18
"----------- refine test-pbtyps ----------------------------------";
neuper@37906
    19
"###### ptyps:= intermediate_ptyps;###############################";
neuper@37906
    20
"----------- Refine_Problem (aus subp-rooteq.sml) ----------------";
neuper@37906
    21
"----------- fun coll_guhs ---------------------------------------";
neuper@37906
    22
"----------- fun guh2kestoreID -----------------------------------";
neuper@37906
    23
"-----------------------------------------------------------------";
neuper@37906
    24
"-----------------------------------------------------------------";
neuper@37906
    25
"-----------------------------------------------------------------";
neuper@37906
    26
neuper@37906
    27
neuper@37906
    28
neuper@37906
    29
"###### val intermediate_ptyps = !ptyps; #########################";
neuper@37906
    30
"###### val intermediate_ptyps = !ptyps; #########################";
neuper@37906
    31
"###### val intermediate_ptyps = !ptyps; #########################";
neuper@37906
    32
val intermediate_ptyps = !ptyps;
neuper@37906
    33
neuper@37906
    34
"----------- store test-pbtyps -----------------------------------";
neuper@37906
    35
"----------- store test-pbtyps -----------------------------------";
neuper@37906
    36
"----------- store test-pbtyps -----------------------------------";
neuper@37906
    37
ptyps:= ([]:ptyps);
neuper@37906
    38
neuper@37906
    39
store_pbt
neuper@37906
    40
 (prep_pbt DiffApp.thy "pbl_pbla" [] e_pblID
neuper@37906
    41
 (["pbla"],         
neuper@37926
    42
  [("#Given", ["fixedValues a_"])], e_rls, NONE, []));
neuper@37906
    43
store_pbt
neuper@37906
    44
 (prep_pbt DiffApp.thy "pbl_pbla1" [] e_pblID
neuper@37906
    45
 (["pbla1","pbla"], 
neuper@37926
    46
  [("#Given", ["fixedValues a_","maximum a1_"])], e_rls, NONE, []));
neuper@37906
    47
store_pbt
neuper@37906
    48
 (prep_pbt DiffApp.thy "pbl_pbla2" [] e_pblID
neuper@37906
    49
 (["pbla2","pbla"], 
neuper@37926
    50
  [("#Given", ["fixedValues a_","valuesFor a2_"])], e_rls, NONE, []));
neuper@37906
    51
store_pbt
neuper@37906
    52
 (prep_pbt DiffApp.thy "pbl_pbla2x" [] e_pblID
neuper@37906
    53
 (["pbla2x","pbla2","pbla"],
neuper@37906
    54
  [("#Given", ["fixedValues a_","valuesFor a2_","functionOf a2x_"])], 
neuper@37926
    55
  e_rls, NONE, []));
neuper@37906
    56
store_pbt
neuper@37906
    57
 (prep_pbt DiffApp.thy "pbl_pbla2y" [] e_pblID
neuper@37906
    58
 (["pbla2y","pbla2","pbla"],
neuper@37906
    59
  [("#Given" ,["fixedValues a_","valuesFor a2_","boundVariable a2y_"])], 
neuper@37926
    60
  e_rls, NONE, []));
neuper@37906
    61
store_pbt
neuper@37906
    62
 (prep_pbt DiffApp.thy "pbl_pbla2z" [] e_pblID
neuper@37906
    63
 (["pbla2z","pbla2","pbla"],
neuper@37906
    64
  [("#Given" ,["fixedValues a_","valuesFor a2_","interval a2z_"])], 
neuper@37926
    65
  e_rls, NONE, []));
neuper@37906
    66
store_pbt
neuper@37906
    67
 (prep_pbt DiffApp.thy "pbl_pbla3" [] e_pblID
neuper@37906
    68
 (["pbla3","pbla"],
neuper@37906
    69
  [("#Given" ,["fixedValues a_","relations a3_"])], 
neuper@37926
    70
  e_rls, NONE, []));
neuper@37906
    71
neuper@37906
    72
show_ptyps();
neuper@37906
    73
neuper@37906
    74
(*case 1: no refinement *)
neuper@37906
    75
val thy = Isac.thy;
neuper@37906
    76
val (d1,ts1) = split_dts thy ((term_of o the o (parse thy)) 
neuper@37906
    77
				"fixedValues [aaa=0]");
neuper@37906
    78
val (d2,ts2) = split_dts thy ((term_of o the o (parse thy)) 
neuper@37906
    79
				"errorBound (ddd=0)");
neuper@37906
    80
val ori1 = [(1,[1],"#Given",d1,ts1),
neuper@37906
    81
	    (2,[1],"#Given",d2,ts2)]:ori list;
neuper@37906
    82
neuper@37906
    83
neuper@37906
    84
(*case 2: refined to pbt without children *)
neuper@37906
    85
val (d2,ts2) = split_dts thy ((term_of o the o (parse thy)) 
neuper@37906
    86
				"relations [aaa333]");
neuper@37906
    87
val ori2 = [(1,[1],"#Given",d1,ts1),
neuper@37906
    88
	    (2,[1],"#Given",d2,ts2)]:ori list;
neuper@37906
    89
neuper@37906
    90
neuper@37906
    91
(*case 3: refined to pbt with children *)
neuper@37906
    92
val (d2,ts2) = split_dts thy ((term_of o the o (parse thy)) 
neuper@37906
    93
				"valuesFor [aaa222]");
neuper@37906
    94
val ori3 = [(1,[1],"#Given",d1,ts1),
neuper@37906
    95
	    (2,[1],"#Given",d2,ts2)]:ori list;
neuper@37906
    96
neuper@37906
    97
neuper@37906
    98
(*case 4: refined to children (without child)*)
neuper@37906
    99
val (d3,ts3) = split_dts thy ((term_of o the o (parse thy)) 
neuper@37906
   100
				"boundVariable aaa222yyy");
neuper@37906
   101
val ori4 = [(1,[1],"#Given",d1,ts1),
neuper@37906
   102
	    (2,[1],"#Given",d2,ts2),
neuper@37906
   103
	    (3,[1],"#Given",d3,ts3)]:ori list;
neuper@37906
   104
neuper@37906
   105
"----------- refin test-pbtyps -----------------------------------";
neuper@37906
   106
"----------- refin test-pbtyps -----------------------------------";
neuper@37906
   107
"----------- refin test-pbtyps -----------------------------------";
neuper@37906
   108
(*case 1: no refinement *)
neuper@37906
   109
refin [] ori1 (hd (!ptyps));
neuper@37926
   110
(*val it = SOME ["pbla"] : pblID option*)
neuper@37906
   111
neuper@37906
   112
(*case 2: refined to pbt without children *)
neuper@37906
   113
refin [] ori2 (hd (!ptyps));
neuper@37926
   114
(*val it = SOME ["pbla","pbla3"] : pblID option*)
neuper@37906
   115
neuper@37906
   116
(*case 3: refined to pbt with children *)
neuper@37906
   117
refin [] ori3 (hd (!ptyps));
neuper@37926
   118
(*val it = SOME ["pbla","pbla2"] : pblID option*)
neuper@37906
   119
neuper@37906
   120
(*case 4: refined to children (without child)*)
neuper@37906
   121
refin [] ori4 (hd (!ptyps));
neuper@37926
   122
(*val it = SOME ["pbla","pbla2","pbla2y"] : pblID option*)
neuper@37906
   123
neuper@37906
   124
(*case 5: start refinement somewhere in ptyps*)
neuper@37906
   125
val [Ptyp ("pbla",_,[_, ppp as Ptyp ("pbla2",_,_), _])] = !ptyps;
neuper@37906
   126
refin ["pbla"] ori4 ppp;
neuper@37926
   127
(*val it = SOME ["pbla2","pbla2y"] : pblRD option*)
neuper@37906
   128
neuper@37906
   129
neuper@37906
   130
"----------- refine_ori test-pbtyps ------------------------------";
neuper@37906
   131
"----------- refine_ori test-pbtyps ------------------------------";
neuper@37906
   132
"----------- refine_ori test-pbtyps ------------------------------";
neuper@37906
   133
(*case 1: no refinement *)
neuper@37906
   134
refine_ori ori1 ["pbla"];
neuper@37926
   135
(*val it = NONE : pblID option !!!!*)
neuper@37906
   136
neuper@37906
   137
(*case 2: refined to pbt without children *)
neuper@37906
   138
refine_ori ori2 ["pbla"];
neuper@37926
   139
(*val it = SOME ["pbla3","pbla"] : pblID option*)
neuper@37906
   140
neuper@37906
   141
(*case 3: refined to pbt with children *)
neuper@37906
   142
refine_ori ori3 ["pbla"];
neuper@37926
   143
(*val it = SOME ["pbla2","pbla"] : pblID option*)
neuper@37906
   144
neuper@37906
   145
(*case 4: refined to children (without child)*)
neuper@37906
   146
val opt = refine_ori ori4 ["pbla"];
neuper@37926
   147
if opt = SOME ["pbla2y","pbla2","pbla"] then ()
neuper@38031
   148
else error "new behaviour in refine.sml case 4";
neuper@37906
   149
neuper@37906
   150
(*case 5: start refinement somewhere in ptyps*)
neuper@37906
   151
refine_ori ori4 ["pbla2","pbla"];
neuper@37926
   152
(*val it = SOME ["pbla2y","pbla2","pbla"] : pblID option*)
neuper@37906
   153
neuper@37906
   154
neuper@37906
   155
"----------- refine test-pbtyps ----------------------------------";
neuper@37906
   156
"----------- refine test-pbtyps ----------------------------------";
neuper@37906
   157
"----------- refine test-pbtyps ----------------------------------";
neuper@37906
   158
val fmz1 = ["fixedValues [aaa=0]","errorBound (ddd=0)"];
neuper@37906
   159
val fmz2 = ["fixedValues [aaa=0]","relations aaa333"];
neuper@37906
   160
val fmz3 = ["fixedValues [aaa=0]","valuesFor [aaa222]"];
neuper@37906
   161
val fmz4 = ["fixedValues [aaa=0]","valuesFor [aaa222]",
neuper@37906
   162
	    "boundVariable aaa222yyy"];
neuper@37906
   163
neuper@37906
   164
(*case 1: no refinement *)
neuper@37906
   165
refine fmz1 ["pbla"];
neuper@37906
   166
(* 
neuper@37906
   167
*** pass ["pbla"]
neuper@37906
   168
*** pass ["pbla","pbla1"]
neuper@37906
   169
*** pass ["pbla","pbla2"]
neuper@37906
   170
*** pass ["pbla","pbla3"]
neuper@37906
   171
val it =
neuper@37906
   172
  [Matches
neuper@37906
   173
     (["pbla"],
neuper@37906
   174
      {Find=[],
neuper@37906
   175
       Given=[Correct "fixedValues [aaa = #0]",
neuper@37906
   176
              Superfl "errorBound (ddd = #0)"],Relate=[],Where=[],With=[]}),
neuper@37906
   177
   NoMatch
neuper@37906
   178
     (["pbla1","pbla"],
neuper@37906
   179
      {Find=[],
neuper@37906
   180
       Given=[Correct "fixedValues [aaa = #0]",Missing "maximum a1_",
neuper@37906
   181
              Superfl "errorBound (ddd = #0)"],Relate=[],Where=[],With=[]}),
neuper@37906
   182
   NoMatch
neuper@37906
   183
     (["pbla2","pbla"],
neuper@37906
   184
      {Find=[],
neuper@37906
   185
       Given=[Correct "fixedValues [aaa = #0]",Missing "valuesFor a2_",
neuper@37906
   186
              Superfl "errorBound (ddd = #0)"],Relate=[],Where=[],With=[]}),
neuper@37906
   187
   NoMatch
neuper@37906
   188
     (["pbla3","pbla"],
neuper@37906
   189
      {Find=[],
neuper@37906
   190
       Given=[Correct "fixedValues [aaa = #0]",Missing "relations a3_",
neuper@37906
   191
              Superfl "errorBound (ddd = #0)"],Relate=[],Where=[],With=[]})]
neuper@37906
   192
  : match list*)
neuper@37906
   193
neuper@37906
   194
(*case 2: refined to pbt without children *)
neuper@37906
   195
refine fmz2 ["pbla"];
neuper@37906
   196
(* 
neuper@37906
   197
*** pass ["pbla"]
neuper@37906
   198
*** pass ["pbla","pbla1"]
neuper@37906
   199
*** pass ["pbla","pbla2"]
neuper@37906
   200
*** pass ["pbla","pbla3"]
neuper@37906
   201
val it =
neuper@37906
   202
  [Matches
neuper@37906
   203
     (["pbla"],
neuper@37906
   204
      {Find=[],
neuper@37906
   205
       Given=[Correct "fixedValues [aaa = #0]",Superfl "relations aaa333"],
neuper@37906
   206
       Relate=[],Where=[],With=[]}),
neuper@37906
   207
   NoMatch
neuper@37906
   208
     (["pbla1","pbla"],
neuper@37906
   209
      {Find=[],
neuper@37906
   210
       Given=[Correct "fixedValues [aaa = #0]",Missing "maximum a1_",
neuper@37906
   211
              Superfl "relations aaa333"],Relate=[],Where=[],With=[]}),
neuper@37906
   212
   NoMatch
neuper@37906
   213
     (["pbla2","pbla"],
neuper@37906
   214
      {Find=[],
neuper@37906
   215
       Given=[Correct "fixedValues [aaa = #0]",Missing "valuesFor a2_",
neuper@37906
   216
              Superfl "relations aaa333"],Relate=[],Where=[],With=[]}),
neuper@37906
   217
   Matches
neuper@37906
   218
     (["pbla3","pbla"],
neuper@37906
   219
      {Find=[],
neuper@37906
   220
       Given=[Correct "fixedValues [aaa = #0]",Correct "relations aaa333"],
neuper@37906
   221
       Relate=[],Where=[],With=[]})] : match list*)
neuper@37906
   222
neuper@37906
   223
(*case 3: refined to pbt with children *)
neuper@37906
   224
refine fmz3 ["pbla"];
neuper@37906
   225
(* 
neuper@37906
   226
*** pass ["pbla"]
neuper@37906
   227
*** pass ["pbla","pbla1"]
neuper@37906
   228
*** pass ["pbla","pbla2"]
neuper@37906
   229
*** pass ["pbla","pbla2","pbla2x"]
neuper@37906
   230
*** pass ["pbla","pbla2","pbla2y"]
neuper@37906
   231
*** pass ["pbla","pbla2","pbla2z"]
neuper@37906
   232
*** pass ["pbla","pbla3"]
neuper@37906
   233
val it =
neuper@37906
   234
  [Matches
neuper@37906
   235
     (["pbla"],
neuper@37906
   236
      {Find=[],
neuper@37906
   237
       Given=[Correct "fixedValues [aaa = #0]",Superfl "valuesFor aaa222"],
neuper@37906
   238
       Relate=[],Where=[],With=[]}),
neuper@37906
   239
   NoMatch
neuper@37906
   240
     (["pbla1","pbla"],
neuper@37906
   241
      {Find=[],
neuper@37906
   242
       Given=[Correct "fixedValues [aaa = #0]",Missing "maximum a1_",
neuper@37906
   243
              Superfl "valuesFor aaa222"],Relate=[],Where=[],With=[]}),
neuper@37906
   244
   Matches
neuper@37906
   245
     (["pbla2","pbla"],
neuper@37906
   246
      {Find=[],
neuper@37906
   247
       Given=[Correct "fixedValues [aaa = #0]",Correct "valuesFor aaa222"],
neuper@37906
   248
       Relate=[],Where=[],With=[]}),
neuper@37906
   249
   NoMatch
neuper@37906
   250
     (["pbla2x","pbla2","pbla"],
neuper@37906
   251
      {Find=[],
neuper@37906
   252
       Given=[Correct "fixedValues [aaa = #0]",Correct "valuesFor aaa222",
neuper@37906
   253
              Missing "functionOf a2x_"],Relate=[],Where=[],With=[]}),
neuper@37906
   254
   NoMatch
neuper@37906
   255
     (["pbla2y","pbla2","pbla"],
neuper@37906
   256
      {Find=[],
neuper@37906
   257
       Given=[Correct "fixedValues [aaa = #0]",Correct "valuesFor aaa222",
neuper@37906
   258
              Missing "boundVariable a2y_"],Relate=[],Where=[],With=[]}),
neuper@37906
   259
   NoMatch
neuper@37906
   260
     (["pbla2z","pbla2","pbla"],
neuper@37906
   261
      {Find=[],
neuper@37906
   262
       Given=[Correct "fixedValues [aaa = #0]",Correct "valuesFor aaa222",
neuper@37906
   263
              Missing "interval a2z_"],Relate=[],Where=[],With=[]}),
neuper@37906
   264
   NoMatch
neuper@37906
   265
     (["pbla3","pbla"],
neuper@37906
   266
      {Find=[],
neuper@37906
   267
       Given=[Correct "fixedValues [aaa = #0]",Missing "relations a3_",
neuper@37906
   268
              Superfl "valuesFor aaa222"],Relate=[],Where=[],With=[]})]
neuper@37906
   269
  : match list*)
neuper@37906
   270
neuper@37906
   271
(*case 4: refined to children (without child)*)
neuper@37906
   272
refine fmz4 ["pbla"];
neuper@37906
   273
(* 
neuper@37906
   274
*** pass ["pbla"]
neuper@37906
   275
*** pass ["pbla","pbla1"]
neuper@37906
   276
*** pass ["pbla","pbla2"]
neuper@37906
   277
*** pass ["pbla","pbla2","pbla2x"]
neuper@37906
   278
*** pass ["pbla","pbla2","pbla2y"]
neuper@37906
   279
val it =
neuper@37906
   280
  [Matches
neuper@37906
   281
     (["pbla"],
neuper@37906
   282
      {Find=[],
neuper@37906
   283
       Given=[Correct "fixedValues [aaa = #0]",Superfl "valuesFor aaa222",
neuper@37906
   284
              Superfl "boundVariable aaa222yyy"],Relate=[],Where=[],With=[]}),
neuper@37906
   285
   NoMatch
neuper@37906
   286
     (["pbla1","pbla"],
neuper@37906
   287
      {Find=[],
neuper@37906
   288
       Given=[Correct "fixedValues [aaa = #0]",Missing "maximum a1_",
neuper@37906
   289
              Superfl "valuesFor aaa222",Superfl "boundVariable aaa222yyy"],
neuper@37906
   290
       Relate=[],Where=[],With=[]}),
neuper@37906
   291
   Matches
neuper@37906
   292
     (["pbla2","pbla"],
neuper@37906
   293
      {Find=[],
neuper@37906
   294
       Given=[Correct "fixedValues [aaa = #0]",Correct "valuesFor aaa222",
neuper@37906
   295
              Superfl "boundVariable aaa222yyy"],Relate=[],Where=[],With=[]}),
neuper@37906
   296
   NoMatch
neuper@37906
   297
     (["pbla2x","pbla2","pbla"],
neuper@37906
   298
      {Find=[],
neuper@37906
   299
       Given=[Correct "fixedValues [aaa = #0]",Correct "valuesFor aaa222",
neuper@37906
   300
              Missing "functionOf a2x_",Superfl "boundVariable aaa222yyy"],
neuper@37906
   301
       Relate=[],Where=[],With=[]}),
neuper@37906
   302
   Matches
neuper@37906
   303
     (["pbla2y","pbla2","pbla"],
neuper@37906
   304
      {Find=[],
neuper@37906
   305
       Given=[Correct "fixedValues [aaa = #0]",Correct "valuesFor aaa222",
neuper@37906
   306
              Correct "boundVariable aaa222yyy"],Relate=[],Where=[],With=[]})]
neuper@37906
   307
  : match list*)
neuper@37906
   308
neuper@37906
   309
(*case 5: start refinement somewhere in ptyps*)
neuper@37906
   310
refine fmz4 ["pbla2","pbla"];
neuper@37906
   311
(* 
neuper@37906
   312
*** pass ["pbla","pbla2"]
neuper@37906
   313
*** pass ["pbla","pbla2","pbla2x"]
neuper@37906
   314
*** pass ["pbla","pbla2","pbla2y"]
neuper@37906
   315
val it =
neuper@37906
   316
  [Matches
neuper@37906
   317
     (["pbla2","pbla"],
neuper@37906
   318
      {Find=[],
neuper@37906
   319
       Given=[Correct "fixedValues [aaa = #0]",Correct "valuesFor aaa222",
neuper@37906
   320
              Superfl "boundVariable aaa222yyy"],Relate=[],Where=[],With=[]}),
neuper@37906
   321
   NoMatch
neuper@37906
   322
     (["pbla2x","pbla2","pbla"],
neuper@37906
   323
      {Find=[],
neuper@37906
   324
       Given=[Correct "fixedValues [aaa = #0]",Correct "valuesFor aaa222",
neuper@37906
   325
              Missing "functionOf a2x_",Superfl "boundVariable aaa222yyy"],
neuper@37906
   326
       Relate=[],Where=[],With=[]}),
neuper@37906
   327
   Matches
neuper@37906
   328
     (["pbla2y","pbla2","pbla"],
neuper@37906
   329
      {Find=[],
neuper@37906
   330
       Given=[Correct "fixedValues [aaa = #0]",Correct "valuesFor aaa222",
neuper@37906
   331
              Correct "boundVariable aaa222yyy"],Relate=[],Where=[],With=[]})]
neuper@37906
   332
  : match list*)
neuper@37906
   333
neuper@37906
   334
"###### ptyps:= intermediate_ptyps;###############################";
neuper@37906
   335
"###### ptyps:= intermediate_ptyps;###############################";
neuper@37906
   336
"###### ptyps:= intermediate_ptyps;###############################";
neuper@37906
   337
ptyps:= intermediate_ptyps;
neuper@37906
   338
show_ptyps();
neuper@37906
   339
neuper@37906
   340
"----------- Refine_Problem (aus subp-rooteq.sml) ----------------";
neuper@37906
   341
"----------- Refine_Problem (aus subp-rooteq.sml) ----------------";
neuper@37906
   342
"----------- Refine_Problem (aus subp-rooteq.sml) ----------------";
neuper@37906
   343
val fmz = ["equality ((x+1)*(x+2)=x^^^2+8)","solveFor x",
neuper@37906
   344
	   "errorBound (eps=0)","solutions L"];
neuper@37906
   345
val (dI',pI',mI') = ("Test.thy",["sqroot-test","univariate","equation","test"],
neuper@37906
   346
		     ["Test","squ-equ-test-subpbl1"]);
neuper@37906
   347
val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
neuper@37906
   348
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   349
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   350
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   351
(*nxt = ("Add_Find", Add_Find "solutions L")*)
neuper@37906
   352
neuper@37906
   353
val nxt = ("Specify_Problem",(*vvvv---specify a not-matching problem*)
neuper@37906
   354
	   Specify_Problem ["linear","univariate","equation","test"]);
neuper@37906
   355
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   356
(*ML> f; 
neuper@37906
   357
val it = Form' (PpcKF (0,EdUndef,0,Nundef,
neuper@37906
   358
        (Problem ["linear","univariate","equation","test"],
neuper@37906
   359
         {Find=[Incompl "solutions []"],
neuper@37906
   360
          Given=[Correct "equality ((x + #1) * (x + #2) = x ^^^ #2 + #8)",
neuper@37906
   361
                 Correct "solveFor x"],Relate=[],
neuper@37906
   362
          Where=[False "matches (x = #0) ((x + #1) * (x + #2) = x ^^^ #2 + #8)
neuper@37906
   363
                |\nmatches (?b * x = #0) ((x + #1) * (x + #2) = x ^^^ #2 + #8)
neuper@37906
   364
                |\nmatches (?a + x = #0) ((x + #1) * (x + #2) = x ^^^ #2 + #8)
neuper@37906
   365
        |\nmatches (?a + ?b * x = #0) ((x + #1) * (x + #2) = x ^^^ #2 + #8)"],
neuper@37906
   366
          With=[]}))) : mout
neuper@37906
   367
val nxt = ("Add_Find",Add_Find "solutions L") ????!!!!????*)
neuper@37906
   368
neuper@37906
   369
val (p,_,f,nxt,_,pt) = (me nxt p c pt) handle e => print_exn e;
neuper@37906
   370
val (p,_,f,nxt,_,pt) = me nxt p c pt(*NEW2*);
neuper@37906
   371
(*val nxt = ("Empty_Tac",Empty_Tac) 
neuper@37906
   372
... Refine_Problem ["linear"..] fails internally 040312: works!?!*)
neuper@37906
   373
neuper@37906
   374
val nxt = ("Refine_Problem",Refine_Problem ["univariate","equation","test"]);
neuper@37906
   375
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   376
(*("Specify_Problem", Specify_Problem ["normalize", "univariate", ...])*)
neuper@37906
   377
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   378
(*nxt = ("Specify_Theory", Specify_Theory "Test.thy")*)
neuper@37906
   379
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   380
(*nxt = ("Specify_Method", Specify_Method ["Test", "squ-equ-test-subpbl1"]*)
neuper@37906
   381
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   382
(*nxt = ("Apply_Method", *)
neuper@37906
   383
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   384
(*nxt = ("Rewrite_Set", Rewrite_Set "norm_equation")*)
neuper@37906
   385
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   386
(*nxt = ("Rewrite_Set", Rewrite_Set "Test_simplify")*)
neuper@37906
   387
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   388
(*Subproblem ("Test.thy", ["linear", "univariate", "equation", "test"]*)
neuper@37906
   389
neuper@37906
   390
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   391
(*nxt = Model_Problem ["linear","univariate","equation","test"]*)
neuper@37906
   392
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   393
(*nxt = ("Add_Given", Add_Given "equality (-6 + 3 * x = 0)"*)
neuper@37906
   394
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   395
(**)
neuper@37906
   396
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   397
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   398
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   399
(*nxt = Specify_Problem ["linear","univariate","equation","test"])*)
neuper@37906
   400
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   401
(*xt = ("Specify_Method", Specify_Method ["Test", "solve_linear"])*)
neuper@37906
   402
val nxt = ("Refine_Problem",Refine_Problem ["univariate","equation","test"]);
neuper@37906
   403
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   404
(*("Specify_Problem", Specify_Problem ["linear", "univariate", ...])*)
neuper@37906
   405
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   406
(*val nxt = ("Specify_Method",Specify_Method ("Test","solve_linear"))*)
neuper@37906
   407
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   408
(*val nxt = ("Apply_Method",Apply_Method ("Test","solve_linear"))*)
neuper@37906
   409
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   410
(*val nxt = ("Rewrite_Set_Inst",Rewrite_Set_Inst ([#],"isolate_bdv"))*)
neuper@37906
   411
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   412
(*val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify")*)
neuper@37906
   413
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   414
(*val nxt = ("Check_Postcond",Check_Postcond ["linear","univariate","eq*)
neuper@37906
   415
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   416
(*val nxt = ("Check_elementwise",Check_elementwise "Assumptions")*)
neuper@37906
   417
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   418
(*Check_Postcond ["normalize","univariate","equation","test"])*)
neuper@37906
   419
val (p,_,f,nxt,_,pt) = me nxt p c pt;
neuper@37906
   420
val Form' (FormKF (~1,EdUndef,_,Nundef,res)) = f;
neuper@37906
   421
if (snd nxt)=End_Proof' andalso res="[x = 2]" then ()
neuper@38031
   422
else error "new behaviour in test:refine.sml:miniscript with mini-subpb";
neuper@37906
   423
neuper@37906
   424
neuper@37906
   425
"----------- fun coll_guhs ---------------------------------------";
neuper@37906
   426
"----------- fun coll_guhs ---------------------------------------";
neuper@37906
   427
"----------- fun coll_guhs ---------------------------------------";
neuper@37906
   428
val n = e_pbt;
neuper@37906
   429
(#guh : pbt -> guh) e_pbt;
neuper@37906
   430
neuper@37906
   431
fun XXXnode coll (Ptyp (_,[n],ns)) =
neuper@37906
   432
    [(#guh : pbt -> guh) n]
neuper@37906
   433
and XXXnodes coll [] = coll
neuper@37906
   434
  | XXXnodes coll (n::ns : pbt ptyp list) = (XXXnode coll n) @ 
neuper@37906
   435
					    (XXXnodes coll ns);
neuper@37906
   436
(*^^^ this works, but not this ...
neuper@37906
   437
fun node coll (Ptyp (_,[n],ns)) =
neuper@37906
   438
    [(#guh : 'a -> guh) n]
neuper@37906
   439
and nodes coll [] = coll
neuper@37906
   440
  | nodes coll (n::ns : 'a ptyp list) = (node coll n) @ (nodes coll ns);
neuper@37906
   441
neuper@37906
   442
Error:
neuper@37906
   443
Can't unify {guh: 'a, ...} with 'b (Cannot unify with explicit type variable)
neuper@37906
   444
   Found near #guh : 'a -> guh
neuper@37906
   445
neuper@37906
   446
i.e. there is no common fun for pbls and mets ?!?*)
neuper@37906
   447
neuper@37906
   448
coll_pblguhs (!ptyps);
neuper@37906
   449
sort string_ord (coll_pblguhs (!ptyps));
neuper@37906
   450
show_pblguhs ();
neuper@37906
   451
sort_pblguhs ();
neuper@37906
   452
neuper@37906
   453
"----------- fun guh2kestoreID -----------------------------------";
neuper@37906
   454
"----------- fun guh2kestoreID -----------------------------------";
neuper@37906
   455
"----------- fun guh2kestoreID -----------------------------------";
neuper@37906
   456
"----- we assumed the problem-hierarchy containing 3 elements on toplevel";
neuper@37906
   457
val (Ptyp (id1,[n1 as {guh=guh1,...} : pbt], ns1)::
neuper@37906
   458
     Ptyp (id2,[n2 as {guh=guh2,...} : pbt], ns2):: _) = (!ptyps);
neuper@37906
   459
(*
neuper@37906
   460
nodes [] guh1 (!ptyps);
neuper@37906
   461
nodes [] guh2 (!ptyps);
neuper@37906
   462
*)
neuper@37906
   463
val (Ptyp (id1,[n1 as {guh=guh1,...} : pbt], ns1)
neuper@37906
   464
     ::
neuper@37906
   465
     Ptyp (id2,[n2 as {guh=guh2,...} : pbt], 
neuper@37906
   466
	   (Ptyp (id21,[n21 as {guh=guh21,...} : pbt], ns21)) :: _ )
neuper@37906
   467
     ::
neuper@37906
   468
     Ptyp (id3,[n3 as {guh=guh3,...} : pbt], ns3)
neuper@37906
   469
     ::
neuper@37906
   470
     _ ) = (!ptyps);
neuper@37906
   471
(*
neuper@37906
   472
nodes [] guh3 (!ptyps);
neuper@37906
   473
nodes [] guh21 (!ptyps);
neuper@37906
   474
*)