test/Tools/isac/Knowledge/biegelinie-4.sml
author Walther Neuper <walther.neuper@jku.at>
Fri, 29 Nov 2019 15:22:29 +0100
changeset 59723 2b26d0882d4f
parent 59679 7b3c7a3d89e8
child 59737 5e2834f8a655
permissions -rw-r--r--
lucin: fun determine_next_tactic gets envisaged arguments

note: return value still todo
walther@59627
     1
(* "Knowledge/biegelinie-4.sml"
wneuper@59540
     2
   author: Walther Neuper 190515
wneuper@59540
     3
   (c) due to copyright terms
wneuper@59540
     4
*)
walther@59627
     5
"table of contents ---------------------------------------------------------------------------";
walther@59627
     6
"---------------------------------------------------------------------------------------------";
walther@59627
     7
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. auto TODO investigate failure ------";
walther@59627
     8
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. me ---------------------------------";
walther@59627
     9
"---------------------------------------------------------------------------------------------";
walther@59627
    10
"---------------------------------------------------------------------------------------------";
walther@59627
    11
"---------------------------------------------------------------------------------------------";
walther@59627
    12
walther@59627
    13
walther@59627
    14
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. auto TODO investigate failure ------";
walther@59627
    15
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. auto TODO investigate failure ------";
walther@59627
    16
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. auto TODO investigate failure ------";
walther@59627
    17
(* the error in this test might be independent from introduction of y, dy
walther@59627
    18
   as arguments in IntegrierenUndKonstanteBestimmen2,
walther@59627
    19
   rather due to so far untested use of "auto" *)
walther@59627
    20
val fmz = ["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
walther@59627
    21
	     "Randbedingungen [y 0 = (0::real), y L = 0, M_b 0 = 0, M_b L = 0]",
walther@59627
    22
	     "FunktionsVariable x", "GleichungsVariablen [c, c_2, c_3, c_4]",
walther@59627
    23
       "AbleitungBiegelinie dy"];
walther@59627
    24
val (dI',pI',mI') = ("Biegelinie", ["Biegelinien"],
walther@59627
    25
		     ["IntegrierenUndKonstanteBestimmen2"]);
walther@59627
    26
walther@59627
    27
reset_states ();
walther@59627
    28
CalcTree [(fmz, (dI',pI',mI'))];                                     
walther@59627
    29
Iterator 1;
walther@59627
    30
moveActiveRoot 1;
walther@59627
    31
autoCalculate 1 CompleteCalc;
walther@59627
    32
walther@59627
    33
val ((pt, p),_) = get_calc 1;
walther@59627
    34
if p = ([], Pbl) then () else error ""
walther@59627
    35
get_obj I pt (fst p); (*TODO investigate failure*)
walther@59627
    36
walther@59627
    37
(* NOTE: ^^^^^^^^^^^^^^^^^ no progress already in isabisac15, but not noticed ^^^^^^^^^^^^^^^^^ * )
walther@59627
    38
(*[], Met*)autoCalculate 1 CompleteCalcHead;
walther@59627
    39
(*[1], Pbl*)autoCalculate 1 (Step 1); (* into SubProblem *)
walther@59627
    40
(*[1], Res*)autoCalculate 1 CompleteSubpbl; (**)
walther@59627
    41
(*[2], Pbl*)autoCalculate 1 (Step 1); (* out of SubProblem *)
walther@59627
    42
(*[2], Res*)autoCalculate 1 CompleteSubpbl;
walther@59627
    43
(*[3], Pbl*)autoCalculate 1 (Step 1); (* out of SubProblem *)
walther@59627
    44
(*[3], Met*)autoCalculate 1 CompleteCalcHead;
walther@59627
    45
(*[3, 1], Frm*)autoCalculate 1 (Step 1); (* solve SubProblem *)
walther@59627
    46
(*(**)autoCalculate 1 CompleteSubpbl;  error in kernel 4: generate1: not impl.for Empty_Tac_*)
walther@59627
    47
(*[3, 1], Res*)autoCalculate 1 (Step 1); (* solve SubProblem *)
walther@59627
    48
(*[3, 2], Res*)autoCalculate 1 (Step 1); (* solve SubProblem *)
walther@59627
    49
(*[3, 3], Res*)autoCalculate 1 (Step 1); (* solve SubProblem *)
walther@59627
    50
(*[3, 4], Res*)autoCalculate 1 (Step 1); (* solve SubProblem *)
walther@59627
    51
(*[3, 5], Res*)autoCalculate 1 (Step 1); (* solve SubProblem *)
walther@59627
    52
(*[3, 6], Res*)autoCalculate 1 (Step 1); (* solve SubProblem *)
walther@59627
    53
(*[3, 7], Res*)autoCalculate 1 (Step 1); (* solve SubProblem *)
walther@59627
    54
(*[3, 8], Pbl*)autoCalculate 1 (Step 1); (* solve SubProblem *)
walther@59627
    55
(*[3, 8], Met*)autoCalculate 1 CompleteCalcHead;
walther@59627
    56
(*[3, 8, 1], Frm*)autoCalculate 1 (Step 1); (* solve SubProblem *)
walther@59627
    57
(*[3, 8, 1], Res*)autoCalculate 1 (Step 1); (* solve SubProblem *)
walther@59627
    58
(*(**)autoCalculate 1 (Step 1); 
walther@59627
    59
*** generate1: not impl.for Empty_Tac_ 
walther@59627
    60
val it = <AUTOCALC><CALCID>1</CALCID><CALCMESSAGE>helpless</CALCMESSAGE></AUTOCALC>: XML.tree *)
walther@59627
    61
walther@59627
    62
val ((pt,_),_) = get_calc 1;
walther@59627
    63
val ip = get_pos 1 1;
walther@59627
    64
val (Form f, tac, asms) = pt_extract (pt, ip);
walther@59627
    65
walther@59627
    66
if ip = ([3, 8, 1], Res) andalso 
walther@59627
    67
term2str f = "[-1 * c_4 / -1 = 0,\n (6 * c_4 * EI + 6 * L * c_3 * EI + -3 * L ^^^ 2 * c_2 + -1 * L ^^^ 3 * c) /\n (6 * EI) =\n L ^^^ 4 * q_0 / (-24 * EI),\n c_2 = 0, c_2 + L * c = L ^^^ 2 * q_0 / 2]"
walther@59627
    68
then 
walther@59627
    69
  case tac of
walther@59627
    70
    SOME (Check_Postcond ["normalise", "4x4", "LINEAR", "system"]) => ()
walther@59627
    71
  | _ => error "ERROR biegel.7.70 changed 1"
walther@59627
    72
else error "ERROR biegel.7.70 changed 2";
walther@59627
    73
( * NOTE: ^^^^^^^^^^^^^^^^^ no progress already in isabisac15, but not noticed ^^^^^^^^^^^^^^^^^ *)
walther@59627
    74
wneuper@59540
    75
wneuper@59540
    76
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. me -----";
wneuper@59540
    77
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. me -----";
wneuper@59540
    78
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. me -----";
wneuper@59540
    79
"----- Bsp 7.70 with me";
wneuper@59540
    80
val fmz = ["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
wneuper@59580
    81
	     "Randbedingungen [y 0 = (0::real), y L = 0, M_b 0 = 0, M_b L = 0]",
wneuper@59540
    82
	     "FunktionsVariable x", "GleichungsVariablen [c, c_2, c_3, c_4]",
wneuper@59540
    83
       "AbleitungBiegelinie dy"];
wneuper@59540
    84
val (dI',pI',mI') = ("Biegelinie", ["Biegelinien"],
wneuper@59540
    85
		     ["IntegrierenUndKonstanteBestimmen2"]);
wneuper@59540
    86
val p = e_pos'; val c = [];
wneuper@59540
    87
(*//----------------------------------vvv CalcTreeTEST ----------------------------------------\\*)
wneuper@59540
    88
(*[], Pbl*)val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; (*nxt = Model_Problem*)
wneuper@59540
    89
wneuper@59540
    90
(*+*)val PblObj {probl, meth, spec = (thy, _ , metID), origin = (oris, _, _), ...} = get_obj I pt (fst p);
wneuper@59540
    91
(*+*)writeln (oris2str oris); (*[
wneuper@59540
    92
(1, ["1"], #Given,Traegerlaenge, ["L"]),
wneuper@59540
    93
(2, ["1"], #Given,Streckenlast, ["q_0"]),
wneuper@59540
    94
(3, ["1"], #Find,Biegelinie, ["y"]),
wneuper@59540
    95
(4, ["1"], #Relate,Randbedingungen, ["[y 0 = 0]","[y L = 0]","[M_b 0 = 0]","[M_b L = 0]"]),
wneuper@59540
    96
(5, ["1"], #undef,FunktionsVariable, ["x"]),
wneuper@59540
    97
(6, ["1"], #undef,GleichungsVariablen, ["[c]","[c_2]","[c_3]","[c_4]"]),
wneuper@59540
    98
(7, ["1"], #undef,AbleitungBiegelinie, ["dy"])]*)
wneuper@59540
    99
(*+*)itms2str_ @{context} probl = "[]";
wneuper@59540
   100
(*+*)itms2str_ @{context} meth = "[]";
wneuper@59540
   101
(*\\----------------------------------^^^ CalcTreeTEST ----------------------------------------//*)
wneuper@59540
   102
wneuper@59540
   103
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Given "Traegerlaenge L"*)
wneuper@59540
   104
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Given "Streckenlast q_0"*)
wneuper@59540
   105
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Find "Biegelinie y"*)
wneuper@59540
   106
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Relation "Randbedingungen [y 0 = 0]", ERROR MISSING step: M_b 0 = 0*)
wneuper@59540
   107
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Relation "Randbedingungen [y L = 0, M_b 0 = 0, M_b L = 0]"*)
wneuper@59540
   108
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Specify_Theory "Biegelinie"*)
wneuper@59540
   109
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Specify_Problem ["Biegelinien"]*)
wneuper@59540
   110
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Specify_Method ["IntegrierenUndKonstanteBestimmen2"]*)
wneuper@59540
   111
(*[], Met*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Given "FunktionsVariable x"*)
wneuper@59540
   112
(*----------- 10 -----------*)
wneuper@59540
   113
(*[], Met*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Given "GleichungsVariablen [c, c_2, c_3, c_4]"*)
wneuper@59540
   114
(*[], Met*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Given "AbleitungBiegelinie dy*)
wneuper@59540
   115
(*[], Met*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Apply_Method ["IntegrierenUndKonstanteBestimmen2"*)
wneuper@59540
   116
wneuper@59540
   117
(*//----------------------------------vvv Apply_Method ["IntegrierenUndKonstanteBestimmen2"----\\*)
wneuper@59540
   118
(*[1], Pbl*)val (p''''',_,f,nxt''''',_,pt''''') = me nxt p c pt; (*nxt = Model_Problem*)
wneuper@59540
   119
(*AMBIGUITY in creating the environment from formal args. of partial_function "Biegelinie.Biegelinie2Script"
wneuper@59540
   120
and the actual args., ie. items of the guard of "["IntegrierenUndKonstanteBestimmen2"]" by "assoc_by_type":
wneuper@59540
   121
formal arg. "b" type-matches with several...actual args. "["dy","y"]"
wneuper@59540
   122
selected "dy"
wneuper@59540
   123
with
wneuper@59540
   124
formals: ["l","q","v","b","s","vs","id_abl"]
wneuper@59540
   125
actuals: ["L","q_0","x","[c, c_2, c_3, c_4]","dy","y","[y 0 = 0, y L = 0, M_b 0 = 0, M_b L = 0]"]*)
wneuper@59540
   126
wneuper@59540
   127
"~~~~~ fun me , args:"; val ((_, tac), p, _(*NEW remove*), pt) = (nxt, p, c, pt);
wneuper@59540
   128
    val (pt''', p''') =
wneuper@59540
   129
	    (*locatetac is here for testing by me; step would suffice in me*)
wneuper@59540
   130
	    case locatetac tac (pt,p) of
wneuper@59540
   131
		    ("ok", (_, _, ptp)) => ptp
wneuper@59540
   132
;
wneuper@59540
   133
(*+*)p    = ([], Met);
wneuper@59540
   134
(*+*)p''' = ([1], Pbl);
wneuper@59540
   135
(*+*)val PblObj {meth, probl, spec = (thy, _ , metID), origin = (oris, _, _), ...} = get_obj I pt''' (fst p''');
wneuper@59540
   136
(*+*)(*MISSING after locatetac:*)
wneuper@59540
   137
(*+*)writeln (oris2str oris); (*[
wneuper@59540
   138
(1, ["1"], #Given,Streckenlast, ["q_0"]),
wneuper@59540
   139
(2, ["1"], #Given,FunktionsVariable, ["x"]),
wneuper@59540
   140
(3, ["1"], #Find,Funktionen, ["funs'''"])]
wneuper@59540
   141
MISSING:
wneuper@59540
   142
                 Biegelinie
wneuper@59540
   143
                 AbleitungBiegelinie
wneuper@59540
   144
*)
wneuper@59540
   145
"~~~~~ fun locatetac , args:"; val (tac, (ptp as (pt, p))) = (tac, (pt,p));
wneuper@59540
   146
      val (mI, m) = Solve.mk_tac'_ tac;
wneuper@59540
   147
val Appl m = (*case*) Applicable.applicable_in p pt m (*of*);
wneuper@59540
   148
(*if*) member op = Solve.specsteps mI = false; (*else*)
wneuper@59540
   149
wneuper@59540
   150
loc_solve_ (mI,m) ptp;
wneuper@59540
   151
"~~~~~ fun loc_solve_ , args:"; val (m, (pt, pos)) = ((mI,m), ptp);
wneuper@59540
   152
wneuper@59540
   153
Solve.solve m (pt, pos);
wneuper@59582
   154
"~~~~~ fun solve , args:"; val (("Apply_Method", m as Tactic.Apply_Method' (mI, _, _, ctxt)), (pt, (pos as (p, _)))) =
wneuper@59540
   155
  (m, (pt, pos));
wneuper@59540
   156
val {srls, ...} = Specify.get_met mI;
wneuper@59540
   157
      val itms = case get_obj I pt p of
wneuper@59540
   158
        PblObj {meth=itms, ...} => itms
wneuper@59540
   159
      | _ => error "solve Apply_Method: uncovered case get_obj"
wneuper@59540
   160
      val thy' = get_obj g_domID pt p;
wneuper@59540
   161
      val thy = Celem.assoc_thy thy';
walther@59677
   162
      val srls = Lucin.get_simplifier (pt, pos)
walther@59677
   163
      val (is, env, ctxt, sc) = case Lucin.init_pstate srls ctxt itms mI of
walther@59679
   164
        (is as Istate.Pstate ist, ctxt, sc) =>  (is, get_env ist, ctxt, sc)
wneuper@59583
   165
      | _ => error "solve Apply_Method: uncovered case init_pstate"
wneuper@59540
   166
      val ini = Lucin.init_form thy sc env;
wneuper@59540
   167
      val p = lev_dn p;
wneuper@59540
   168
val NONE = (*case*) ini (*of*);
walther@59723
   169
            val (m', (is', ctxt'), _) = determine_next_tactic sc (pt, (p, Res)) is ctxt;
wneuper@59540
   170
	          val d = Rule.e_rls (*FIXME: get simplifier from domID*);
wneuper@59569
   171
     val Safe_Step ((pt', p'), _, _, _) = (*case*) locate_input_tactic sc (pt,(p, Res)) is' ctxt' m' (*of*);
wneuper@59572
   172
Safe_Step : state * Istate.T * Proof.context * Tactic.T -> input_tactic_result;
wneuper@59540
   173
wneuper@59540
   174
(*+*)val PblObj {meth, probl, spec = (thy, _ , metID), origin = (oris, _, _), ...} = get_obj I pt' (fst p');
wneuper@59559
   175
(*+*)(*MISSING after locate_input_tactic:*)
wneuper@59540
   176
(*+*)writeln (oris2str oris); (*[
wneuper@59540
   177
(1, ["1"], #Given,Streckenlast, ["q_0"]),
wneuper@59540
   178
(2, ["1"], #Given,FunktionsVariable, ["x"]),
wneuper@59540
   179
(3, ["1"], #Find,Funktionen, ["funs'''"])]
wneuper@59540
   180
MISSING:
wneuper@59540
   181
                 Biegelinie
wneuper@59540
   182
                 AbleitungBiegelinie
wneuper@59540
   183
*)
walther@59679
   184
"~~~~~ fun locate_input_tactic , args:"; val () = ();
wneuper@59540
   185
wneuper@59540
   186
(*+*)val c = [];
wneuper@59540
   187
(*\\----------------------------------^^^ Apply_Method ["IntegrierenUndKonstanteBestimmen2"----//*)
wneuper@59540
   188
wneuper@59540
   189
(*[1], Pbl*)val (p,_,f,nxt,_,pt) = me nxt''''' p''''' c pt'''''; (*nxt = Add_Given "Streckenlast q_0"*)
wneuper@59540
   190
(*[1], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Given "FunktionsVariable x"*)
wneuper@59540
   191
(*[1], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Find "Funktionen funs'''"*)
wneuper@59540
   192
(*[1], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Specify_Theory "Biegelinie"*)
wneuper@59540
   193
(*[1], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Specify_Problem ["vonBelastungZu", "Biegelinien"]*)
wneuper@59540
   194
(*[1], Pbl*)val (p''''',_,f,nxt''''',_,pt''''') = me nxt p c pt; (*nxt = Specify_Method ["Biegelinien", "ausBelastung"]*)
wneuper@59540
   195
(*----------- 20 -----------*)
wneuper@59540
   196
(*//------------------------------------------------vvv Specify_Method ["Biegelinien", "ausBelastung"]-\\*)
wneuper@59540
   197
(*[1], Pbl*)(*ERROR val (p,_,f,nxt,_,pt) = me nxt''''' p''''' c pt'''''; (*nxt = Apply_Method ["Biegelinien", "ausBelastung"]*)
wneuper@59540
   198
ERROR itms2args: 'Biegelinie' not in itms*)
wneuper@59540
   199
wneuper@59540
   200
(*SubProblem (_, [''vonBelastungZu'', ''Biegelinien''], _)
wneuper@59540
   201
    [REAL q, REAL v, REAL_REAL b, REAL_REAL id_abl]
wneuper@59540
   202
                     ^^^^^^^^^^^ ..ERROR itms2args: 'Biegelinie' not in itms*)
wneuper@59540
   203
(*+*)val PblObj {meth, probl, spec = (thy, _ , metID), origin = (oris, _, _), ...} = get_obj I pt''''' (fst p''''');
wneuper@59540
   204
(*+*)if oris2str oris =
wneuper@59540
   205
(*+*)  "[\n(1, [\"1\"], #Given,Streckenlast, [\"q_0\"]),\n(2, [\"1\"], #Given,FunktionsVariable, [\"x\"]),\n(3, [\"1\"], #Find,Funktionen, [\"funs'''\"])]"
wneuper@59540
   206
(*+*)then () else error "([1], Pbl) Specify_Problem ['vonBelastungZu', 'Biegelinien'] changed oris";
wneuper@59540
   207
writeln (oris2str oris); (*[
wneuper@59540
   208
(1, ["1"], #Given,Streckenlast, ["q_0"]),
wneuper@59540
   209
(2, ["1"], #Given,FunktionsVariable, ["x"]),
wneuper@59540
   210
(3, ["1"], #Find,Funktionen, ["funs'''"])]*)
wneuper@59540
   211
(*+*)if itms2str_ @{context} probl = "[\n(1 ,[1] ,true ,#Given ,Cor Streckenlast q_0 ,(q_q, [q_0])),\n(2 ,[1] ,true ,#Given ,Cor FunktionsVariable x ,(v_v, [x])),\n(3 ,[1] ,true ,#Find ,Cor Funktionen funs''' ,(funs''', [funs''']))]"
wneuper@59540
   212
(*+*)then () else error "([1], Pbl) Specify_Problem ['vonBelastungZu', 'Biegelinien'] changed probl";
wneuper@59540
   213
writeln (itms2str_ @{context} probl); (*[
wneuper@59540
   214
(1 ,[1] ,true ,#Given ,Cor Streckenlast q_0 ,(q_q, [q_0])),
wneuper@59540
   215
(2 ,[1] ,true ,#Given ,Cor FunktionsVariable x ,(v_v, [x])),
wneuper@59540
   216
(3 ,[1] ,true ,#Find ,Cor Funktionen funs''' ,(funs''', [funs''']))]*)
wneuper@59540
   217
(*+*)if itms2str_ @{context} meth = "[]"
wneuper@59540
   218
(*+*)then () else error "([1], Pbl) Specify_Problem ['vonBelastungZu', 'Biegelinien'] changed meth";
wneuper@59540
   219
writeln (itms2str_ @{context} meth); (*[]*)
wneuper@59540
   220
wneuper@59540
   221
"~~~~~ fun me , args:"; val ((_, tac), p, _(*NEW remove*), pt) = (nxt''''', p''''', c, pt''''');
wneuper@59540
   222
(*  val (pt, p) = *)
wneuper@59540
   223
	    (*locatetac is here for testing by me; step would suffice in me*)
wneuper@59540
   224
	    case locatetac tac (pt,p) of
wneuper@59540
   225
		    ("ok", (_, _, ptp)) => ptp
wneuper@59540
   226
;
wneuper@59540
   227
"~~~~~ fun locatetac , args:"; val (tac, (ptp as (pt, p))) = (tac, (pt,p));
wneuper@59540
   228
      val (mI, m) = Solve.mk_tac'_ tac;
wneuper@59540
   229
val Chead.Appl m = (*case*) Applicable.applicable_in p pt m (*of*);
wneuper@59540
   230
(*if*) member op = Solve.specsteps mI = true; (*then*)
wneuper@59540
   231
wneuper@59540
   232
(*val Updated (_, _, (ctree, pos')) =*) loc_specify_ m ptp; (*creates meth-itms*)
wneuper@59540
   233
"~~~~~ fun loc_specify_ , args:"; val (m, (pt, pos)) = (m, ptp);
wneuper@59540
   234
(*    val (p, _, f, _, _, pt) =*) Chead.specify m pos [] pt;
wneuper@59540
   235
wneuper@59571
   236
"~~~~~ fun specify , args:"; val ((Tactic.Specify_Method' (mID, _, _)), (pos as (p, _)), _, pt) = (m, pos, [], pt);
wneuper@59540
   237
        val (oris, dI', pI', mI', dI, pI, pbl, met, ctxt) = case get_obj I pt p of
wneuper@59540
   238
          PblObj {origin= (oris, (dI', pI', mI'), _), spec= (dI, pI, _), probl = pbl, meth = met, ctxt, ...} =>
wneuper@59540
   239
             (oris, dI', pI', mI', dI, pI, pbl, met, ctxt)
wneuper@59540
   240
        val {ppc, pre, prls,...} = Specify.get_met mID
wneuper@59540
   241
        val thy = Celem.assoc_thy dI
wneuper@59540
   242
        val dI'' = if dI = Rule.e_domID then dI' else dI
wneuper@59540
   243
        val pI'' = if pI = Celem.e_pblID then pI' else pI
wneuper@59540
   244
;
wneuper@59540
   245
(*+*)writeln (oris2str oris); (*[
wneuper@59540
   246
(1, ["1"], #Given,Streckenlast, ["q_0"]),
wneuper@59540
   247
(2, ["1"], #Given,FunktionsVariable, ["x"]),
wneuper@59540
   248
(3, ["1"], #Find,Funktionen, ["funs'''"])]*)
wneuper@59540
   249
(*+*)writeln (pats2str' ppc);
wneuper@59540
   250
(*["(#Given, (Streckenlast, q__q))
wneuper@59540
   251
","(#Given, (FunktionsVariable, v_v))
wneuper@59540
   252
","(#Given, (Biegelinie, id_fun))
wneuper@59540
   253
","(#Given, (AbleitungBiegelinie, id_abl))
wneuper@59540
   254
","(#Find, (Funktionen, fun_s))"]*)
wneuper@59540
   255
(*+*)writeln (pats2str' ((#ppc o Specify.get_pbt) pI));
wneuper@59540
   256
(*["(#Given, (Streckenlast, q_q))
wneuper@59540
   257
","(#Given, (FunktionsVariable, v_v))
wneuper@59540
   258
","(#Find, (Funktionen, funs'''))"]*)
wneuper@59540
   259
        val oris = Specify.add_field' thy ppc oris
wneuper@59540
   260
        val met = if met = [] then pbl else met
wneuper@59540
   261
        val (_, (itms, pre')) = Specify.match_itms_oris thy met (ppc, pre, prls ) oris
wneuper@59540
   262
;
wneuper@59540
   263
(*+*)writeln (itms2str_ @{context} itms); (*[
wneuper@59540
   264
(1 ,[1] ,true ,#Given ,Cor Streckenlast q_0 ,(q_q, [q_0])),
wneuper@59540
   265
(2 ,[1] ,true ,#Given ,Cor FunktionsVariable x ,(v_v, [x])),
wneuper@59540
   266
(3 ,[1] ,true ,#Find ,Cor Funktionen funs''' ,(funs''', [funs''']))] *)
wneuper@59540
   267
wneuper@59540
   268
(*//----------- hack for funpack: generalise handling of meths which extend problem items -----\\*)
wneuper@59540
   269
val itms =
wneuper@59540
   270
  if mI' = ["Biegelinien", "ausBelastung"]
wneuper@59540
   271
  then itms @
wneuper@59597
   272
    [(4, [1], true, "#Given", Cor ((Const ("Biegelinie.Biegelinie", Type ("fun", [Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]), Type ("Input_Descript.una", [])])),
wneuper@59540
   273
        [Free ("y", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]))]),
wneuper@59540
   274
      (Free ("id_fun", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])])),
wneuper@59540
   275
        [Free ("y", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]))] ))),
wneuper@59597
   276
    (5, [1], true, "#Given", Cor ((Const ("Biegelinie.AbleitungBiegelinie", Type ("fun", [Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]), Type ("Input_Descript.una", [])])),
wneuper@59540
   277
        [Free ("dy", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]))]),
wneuper@59540
   278
      (Free ("id_abl", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])])),
wneuper@59540
   279
        [Free ("dy", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]))] )))]
wneuper@59540
   280
  else itms
wneuper@59540
   281
(*\\----------- hack for funpack: generalise handling of meths which extend problem items -----//*)
wneuper@59540
   282
wneuper@59540
   283
val itms' = itms @
wneuper@59540
   284
  [(4, [1], true, "#Given", Cor ((@{term "Biegelinie"},
wneuper@59540
   285
      [@{term "y::real \<Rightarrow> real"}]),
wneuper@59540
   286
    (@{term "id_fun::real \<Rightarrow> real"},
wneuper@59540
   287
      [@{term "y::real \<Rightarrow> real"}] ))),
wneuper@59540
   288
  (5, [1], true, "#Given", Cor ((@{term "AbleitungBiegelinie"},
wneuper@59540
   289
      [@{term "dy::real \<Rightarrow> real"}]),
wneuper@59540
   290
    (@{term "id_abl::real \<Rightarrow> real"},
wneuper@59540
   291
      [@{term "dy::real \<Rightarrow> real"}] )))]
wneuper@59540
   292
val itms'' = itms @
wneuper@59597
   293
  [(4, [1], true, "#Given", Cor ((Const ("Biegelinie.Biegelinie", Type ("fun", [Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]), Type ("Input_Descript.una", [])])),
wneuper@59540
   294
      [Free ("y", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]))]),
wneuper@59540
   295
    (Free ("id_fun", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])])),
wneuper@59540
   296
      [Free ("y", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]))] ))),
wneuper@59597
   297
  (5, [1], true, "#Given", Cor ((Const ("Biegelinie.AbleitungBiegelinie", Type ("fun", [Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]), Type ("Input_Descript.una", [])])),
wneuper@59540
   298
      [Free ("dy", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]))]),
wneuper@59540
   299
    (Free ("id_abl", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])])),
wneuper@59540
   300
      [Free ("dy", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]))] )))]
wneuper@59540
   301
;
wneuper@59540
   302
if itms' = itms'' then () else error "itms BUIT BY HAND ARE BROKEN";
wneuper@59540
   303
(*//-----------------------------------------^^^ Specify_Method ["Biegelinien", "ausBelastung"]-\\*)
wneuper@59540
   304
wneuper@59540
   305
val (p,_,f,nxt,_,pt) = me nxt''''' p''''' c pt''''';
wneuper@59540
   306
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   307
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   308
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   309
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   310
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   311
(*----------- 30 -----------*)
wneuper@59540
   312
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   313
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   314
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   315
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   316
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   317
(*----------- 40 -----------*)
wneuper@59540
   318
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   319
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   320
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   321
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   322
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   323
(*----------- 50 -----------*)
wneuper@59540
   324
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   325
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   326
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   327
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   328
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   329
(*----------- 60 -----------*)
wneuper@59540
   330
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   331
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   332
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   333
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   334
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   335
(*----------- 70 -----------*)
wneuper@59540
   336
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   337
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   338
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   339
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   340
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   341
(*----------- 80 -----------*)
wneuper@59540
   342
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   343
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59550
   344
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   345
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   346
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   347
(*----------- 90 -----------*)
wneuper@59540
   348
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   349
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   350
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   351
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   352
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   353
(*---------- 100 -----------*)
wneuper@59540
   354
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   355
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   356
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   357
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   358
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   359
(*---------- 110 -----------*)
wneuper@59540
   360
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   361
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   362
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   363
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   364
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   365
(*---------- 120 -----------*)
wneuper@59540
   366
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   367
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   368
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   369
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   370
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   371
(*---------- 130 -----------*)
wneuper@59540
   372
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   373
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   374
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   375
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   376
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   377
wneuper@59540
   378
if p = ([3], Pbl)
wneuper@59540
   379
then
wneuper@59540
   380
  case nxt of
wneuper@59540
   381
    ("Add_Given", Add_Given "solveForVars [c_2, c_3, c_4]") => 
wneuper@59540
   382
    (case f of
wneuper@59540
   383
      PpcKF
wneuper@59540
   384
          (Problem [],
wneuper@59540
   385
           {Find = [Incompl "solution []"], Given =
wneuper@59540
   386
            [Correct
wneuper@59540
   387
              "equalities\n [0 = -1 * c_4 / -1,\n  0 =\n  (-24 * c_4 * EI + -24 * L * c_3 * EI + 12 * L ^^^ 2 * c_2 +\n   4 * L ^^^ 3 * c +\n   -1 * L ^^^ 4 * q_0) /\n  (-24 * EI),\n  0 = c_2, 0 = (2 * c_2 + 2 * L * c + -1 * L ^^^ 2 * q_0) / 2]",
wneuper@59540
   388
             Incompl "solveForVars [c]"],
wneuper@59540
   389
            Relate = [], Where = [], With = []}) => ()
wneuper@59540
   390
    | _ => error "Bsp.7.70 me changed 1")
wneuper@59540
   391
  | _ => error "Bsp.7.70 me changed 2"
wneuper@59540
   392
else error "Bsp.7.70 me changed 3";
wneuper@59549
   393
(* NOTE: ^^^^^^^^^^^^^^^^^ no progress already in isabisac15, but not noticed ^^^^^^^^^^^^^^^^^ *)
wneuper@59540
   394