test/Tools/isac/Knowledge/biegelinie-3.sml
author Walther Neuper <wneuper@ist.tugraz.at>
Sat, 01 Jun 2019 11:09:19 +0200
changeset 59549 e0e3d41ef86c
parent 59541 3ba43630359c
child 59550 2e7631381921
permissions -rw-r--r--
[-Test_Isac] funpack: repair errors in test, spot remaining errors

Note: check, whether error is due to "switch from Script to partial_function" 4035ec339062
or due to "failed trial to generalise handling of meths which extend the model of a probl" 98298342fb6d
wneuper@59549
     1
(* "Knowledge/biegelinie-3.sml"
wneuper@59540
     2
   author: Walther Neuper 190515
wneuper@59540
     3
   (c) due to copyright terms
wneuper@59540
     4
*)
wneuper@59540
     5
"table of contents -----------------------------------------------";
wneuper@59540
     6
"-----------------------------------------------------------------";
wneuper@59540
     7
"----------- see biegelinie-1.sml---------------------------------";
wneuper@59549
     8
(* problems with generalised handling of meths which extend the model of a probl
wneuper@59549
     9
   since 98298342fb6d: wait for review of whole model-specify phase *)
wneuper@59540
    10
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. me -----";
wneuper@59540
    11
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. auto ---";
wneuper@59540
    12
"-----------------------------------------------------------------";
wneuper@59540
    13
"-----------------------------------------------------------------";
wneuper@59540
    14
"-----------------------------------------------------------------";
wneuper@59540
    15
wneuper@59540
    16
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. me -----";
wneuper@59540
    17
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. me -----";
wneuper@59540
    18
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. me -----";
wneuper@59540
    19
"----- Bsp 7.70 with me";
wneuper@59540
    20
val fmz = ["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
wneuper@59540
    21
	     "Randbedingungen [y 0 = 0, y L = 0, M_b 0 = 0, M_b L = 0]",
wneuper@59540
    22
	     "FunktionsVariable x", "GleichungsVariablen [c, c_2, c_3, c_4]",
wneuper@59540
    23
       "AbleitungBiegelinie dy"];
wneuper@59540
    24
val (dI',pI',mI') = ("Biegelinie", ["Biegelinien"],
wneuper@59540
    25
		     ["IntegrierenUndKonstanteBestimmen2"]);
wneuper@59540
    26
val p = e_pos'; val c = [];
wneuper@59540
    27
(*//----------------------------------vvv CalcTreeTEST ----------------------------------------\\*)
wneuper@59540
    28
(*[], Pbl*)val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))]; (*nxt = Model_Problem*)
wneuper@59540
    29
wneuper@59540
    30
(*+*)val PblObj {probl, meth, spec = (thy, _ , metID), origin = (oris, _, _), ...} = get_obj I pt (fst p);
wneuper@59540
    31
(*+*)writeln (oris2str oris); (*[
wneuper@59540
    32
(1, ["1"], #Given,Traegerlaenge, ["L"]),
wneuper@59540
    33
(2, ["1"], #Given,Streckenlast, ["q_0"]),
wneuper@59540
    34
(3, ["1"], #Find,Biegelinie, ["y"]),
wneuper@59540
    35
(4, ["1"], #Relate,Randbedingungen, ["[y 0 = 0]","[y L = 0]","[M_b 0 = 0]","[M_b L = 0]"]),
wneuper@59540
    36
(5, ["1"], #undef,FunktionsVariable, ["x"]),
wneuper@59540
    37
(6, ["1"], #undef,GleichungsVariablen, ["[c]","[c_2]","[c_3]","[c_4]"]),
wneuper@59540
    38
(7, ["1"], #undef,AbleitungBiegelinie, ["dy"])]*)
wneuper@59540
    39
(*+*)itms2str_ @{context} probl = "[]";
wneuper@59540
    40
(*+*)itms2str_ @{context} meth = "[]";
wneuper@59540
    41
(*\\----------------------------------^^^ CalcTreeTEST ----------------------------------------//*)
wneuper@59540
    42
wneuper@59540
    43
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Given "Traegerlaenge L"*)
wneuper@59540
    44
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Given "Streckenlast q_0"*)
wneuper@59540
    45
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Find "Biegelinie y"*)
wneuper@59540
    46
(*[], 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
    47
(*[], 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
    48
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Specify_Theory "Biegelinie"*)
wneuper@59540
    49
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Specify_Problem ["Biegelinien"]*)
wneuper@59540
    50
(*[], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Specify_Method ["IntegrierenUndKonstanteBestimmen2"]*)
wneuper@59540
    51
(*[], Met*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Given "FunktionsVariable x"*)
wneuper@59540
    52
(*----------- 10 -----------*)
wneuper@59540
    53
(*[], Met*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Given "GleichungsVariablen [c, c_2, c_3, c_4]"*)
wneuper@59540
    54
(*[], Met*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Given "AbleitungBiegelinie dy*)
wneuper@59540
    55
(*[], Met*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Apply_Method ["IntegrierenUndKonstanteBestimmen2"*)
wneuper@59540
    56
wneuper@59540
    57
(*//----------------------------------vvv Apply_Method ["IntegrierenUndKonstanteBestimmen2"----\\*)
wneuper@59540
    58
(*[1], Pbl*)val (p''''',_,f,nxt''''',_,pt''''') = me nxt p c pt; (*nxt = Model_Problem*)
wneuper@59540
    59
(*AMBIGUITY in creating the environment from formal args. of partial_function "Biegelinie.Biegelinie2Script"
wneuper@59540
    60
and the actual args., ie. items of the guard of "["IntegrierenUndKonstanteBestimmen2"]" by "assoc_by_type":
wneuper@59540
    61
formal arg. "b" type-matches with several...actual args. "["dy","y"]"
wneuper@59540
    62
selected "dy"
wneuper@59540
    63
with
wneuper@59540
    64
formals: ["l","q","v","b","s","vs","id_abl"]
wneuper@59540
    65
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
    66
wneuper@59540
    67
"~~~~~ fun me , args:"; val ((_, tac), p, _(*NEW remove*), pt) = (nxt, p, c, pt);
wneuper@59540
    68
    val (pt''', p''') =
wneuper@59540
    69
	    (*locatetac is here for testing by me; step would suffice in me*)
wneuper@59540
    70
	    case locatetac tac (pt,p) of
wneuper@59540
    71
		    ("ok", (_, _, ptp)) => ptp
wneuper@59540
    72
;
wneuper@59540
    73
(*+*)p    = ([], Met);
wneuper@59540
    74
(*+*)p''' = ([1], Pbl);
wneuper@59540
    75
(*+*)val PblObj {meth, probl, spec = (thy, _ , metID), origin = (oris, _, _), ...} = get_obj I pt''' (fst p''');
wneuper@59540
    76
(*+*)(*MISSING after locatetac:*)
wneuper@59540
    77
(*+*)writeln (oris2str oris); (*[
wneuper@59540
    78
(1, ["1"], #Given,Streckenlast, ["q_0"]),
wneuper@59540
    79
(2, ["1"], #Given,FunktionsVariable, ["x"]),
wneuper@59540
    80
(3, ["1"], #Find,Funktionen, ["funs'''"])]
wneuper@59540
    81
MISSING:
wneuper@59540
    82
                 Biegelinie
wneuper@59540
    83
                 AbleitungBiegelinie
wneuper@59540
    84
*)
wneuper@59540
    85
"~~~~~ fun locatetac , args:"; val (tac, (ptp as (pt, p))) = (tac, (pt,p));
wneuper@59540
    86
      val (mI, m) = Solve.mk_tac'_ tac;
wneuper@59540
    87
val Appl m = (*case*) Applicable.applicable_in p pt m (*of*);
wneuper@59540
    88
(*if*) member op = Solve.specsteps mI = false; (*else*)
wneuper@59540
    89
wneuper@59540
    90
loc_solve_ (mI,m) ptp;
wneuper@59540
    91
"~~~~~ fun loc_solve_ , args:"; val (m, (pt, pos)) = ((mI,m), ptp);
wneuper@59540
    92
wneuper@59540
    93
Solve.solve m (pt, pos);
wneuper@59540
    94
"~~~~~ fun solve , args:"; val (("Apply_Method", m as Tac.Apply_Method' (mI, _, _, _)), (pt, (pos as (p, _)))) =
wneuper@59540
    95
  (m, (pt, pos));
wneuper@59540
    96
val {srls, ...} = Specify.get_met mI;
wneuper@59540
    97
      val itms = case get_obj I pt p of
wneuper@59540
    98
        PblObj {meth=itms, ...} => itms
wneuper@59540
    99
      | _ => error "solve Apply_Method: uncovered case get_obj"
wneuper@59540
   100
      val thy' = get_obj g_domID pt p;
wneuper@59540
   101
      val thy = Celem.assoc_thy thy';
wneuper@59540
   102
      val (is, env, ctxt, sc) = case Lucin.init_scrstate thy itms mI of
wneuper@59540
   103
        (is as Selem.ScrState (env,_,_,_,_,_), ctxt, sc) =>  (is, env, ctxt, sc)
wneuper@59540
   104
      | _ => error "solve Apply_Method: uncovered case init_scrstate"
wneuper@59540
   105
      val ini = Lucin.init_form thy sc env;
wneuper@59540
   106
      val p = lev_dn p;
wneuper@59540
   107
val NONE = (*case*) ini (*of*);
wneuper@59540
   108
            val (m', (is', ctxt'), _) = Lucin.next_tac (thy', srls) (pt, (p, Res)) sc (is, ctxt);
wneuper@59540
   109
	          val d = Rule.e_rls (*FIXME: get simplifier from domID*);
wneuper@59540
   110
val Steps (_, ss as (_, _, pt', p', c') :: _) =
wneuper@59540
   111
(*case*) Lucin.locate_gen (thy',srls) m' (pt,(p, Res)) (sc,d) (is', ctxt') (*of*);
wneuper@59540
   112
wneuper@59540
   113
(*+*)val PblObj {meth, probl, spec = (thy, _ , metID), origin = (oris, _, _), ...} = get_obj I pt' (fst p');
wneuper@59540
   114
(*+*)(*MISSING after locate_gen:*)
wneuper@59540
   115
(*+*)writeln (oris2str oris); (*[
wneuper@59540
   116
(1, ["1"], #Given,Streckenlast, ["q_0"]),
wneuper@59540
   117
(2, ["1"], #Given,FunktionsVariable, ["x"]),
wneuper@59540
   118
(3, ["1"], #Find,Funktionen, ["funs'''"])]
wneuper@59540
   119
MISSING:
wneuper@59540
   120
                 Biegelinie
wneuper@59540
   121
                 AbleitungBiegelinie
wneuper@59540
   122
*)
wneuper@59540
   123
"~~~~~ fun locate_gen , args:"; val ((thy', srls), m, (pt, p),
wneuper@59540
   124
	    (scr as Rule.Prog sc, d), (Selem.ScrState (E,l,a,v,S,b), ctxt)) =
wneuper@59540
   125
  ((thy',srls), m', (pt,(p, Res)), (sc,d), (is', ctxt'));
wneuper@59540
   126
val thy = Celem.assoc_thy thy';
wneuper@59540
   127
(*if*) l = [] orelse (
wneuper@59540
   128
		  (*init.in solve..Apply_Method...*)(last_elem o fst) p = 0 andalso snd p = Res) = true;(*then*)
wneuper@59540
   129
(assy (thy',ctxt,srls,d,Aundef) ((E,[Celem.R],a,v,S,b), [(m,Generate.EmptyMout,pt,p,[])]) (body_of sc));
wneuper@59540
   130
wneuper@59540
   131
"~~~~~ fun assy , args:"; val (ya, ((E,l,a,v,S,b),ss:step list), (Const ("HOL.Let",_) $ e $ (Abs (id,T,body)))) =
wneuper@59540
   132
  ((thy',ctxt,srls,d,Aundef), ((E,[Celem.R],a,v,S,b), [(m,Generate.EmptyMout,pt,p,[])]), (body_of sc));
wneuper@59540
   133
(*case*) assy ya ((E , l @ [Celem.L, Celem.R], a,v,S,b), ss) e (*of*);
wneuper@59540
   134
wneuper@59540
   135
"~~~~~ fun assy , args:"; val ((thy',ctxt,sr,d,ap), ((E,l,a,v,S,_), (m,_,pt,(p,p_),c)::ss), t) =
wneuper@59540
   136
  (ya, ((E , l @ [Celem.L, Celem.R], a,v,S,b), ss), e);
wneuper@59540
   137
val (a', LTool.STac stac) = (*case*) handle_leaf "locate" thy' sr E a v t (*of*);
wneuper@59540
   138
(*+*)writeln (term2str stac); (*SubProblem
wneuper@59540
   139
 (''Biegelinie'', [''vonBelastungZu'', ''Biegelinien''],
wneuper@59540
   140
  [''Biegelinien'', ''ausBelastung''])
wneuper@59540
   141
 [REAL q_0, REAL x, REAL_REAL y, REAL_REAL dy] *)
wneuper@59540
   142
           val p' = 
wneuper@59540
   143
             case p_ of Frm => p 
wneuper@59540
   144
             | Res => lev_on p
wneuper@59540
   145
		         | _ => error ("assy: call by " ^ pos'2str (p,p_));
wneuper@59540
   146
     val Ass (m,v') = (*case*) assod pt d m stac (*of*);
wneuper@59540
   147
wneuper@59540
   148
"~~~~~ fun assod , args:"; val (pt, _, (Tac.Subproblem' ((domID, pblID, _), _, _, _, _, _)),
wneuper@59540
   149
      (stac as Const ("Script.SubProblem", _) $ (Const ("Product_Type.Pair", _) $ 
wneuper@59540
   150
        dI' $ (Const ("Product_Type.Pair", _) $ pI' $ mI')) $ ags')) =
wneuper@59540
   151
  (pt, d, m, stac);
wneuper@59540
   152
      val dI = HOLogic.dest_string dI';
wneuper@59540
   153
      val thy = Stool.common_subthy (Celem.assoc_thy dI, rootthy pt);
wneuper@59540
   154
	    val pI = pI' |> HOLogic.dest_list |> map HOLogic.dest_string;
wneuper@59540
   155
	    val mI = mI' |> HOLogic.dest_list |> map HOLogic.dest_string;
wneuper@59540
   156
	    val ags = TermC.isalist2list ags';
wneuper@59540
   157
(*if*) mI = ["no_met"] = false; (*else*)
wneuper@59540
   158
(*    val (pI, pors, mI) = *)
wneuper@59540
   159
	      (pI, (Chead.match_ags thy ((#ppc o Specify.get_pbt) pI) ags)
wneuper@59540
   160
		      handle ERROR "actual args do not match formal args"
wneuper@59540
   161
		      => (Chead.match_ags_msg pI stac ags(*raise exn*); []), mI);
wneuper@59540
   162
"~~~~~ fun match_ags , args:"; val (thy, pbt, ags) = (thy, ((#ppc o Specify.get_pbt) pI), ags);
wneuper@59540
   163
(*+*)pbt;
wneuper@59540
   164
    fun flattup (i, (var, bool, str, itm_)) = (i, var, bool, str, itm_)
wneuper@59540
   165
    val pbt' = filter_out is_copy_named pbt
wneuper@59540
   166
    val cy = filter is_copy_named pbt
wneuper@59540
   167
    val oris' = matc thy pbt' ags []
wneuper@59540
   168
    val cy' = map (cpy_nam pbt' oris') cy
wneuper@59540
   169
    val ors = Specify.add_id (oris' @ cy') (*...appended in order to get into the model-items *)
wneuper@59540
   170
wneuper@59540
   171
(*+*)val c = [];
wneuper@59540
   172
(*\\----------------------------------^^^ Apply_Method ["IntegrierenUndKonstanteBestimmen2"----//*)
wneuper@59540
   173
wneuper@59540
   174
(*[1], Pbl*)val (p,_,f,nxt,_,pt) = me nxt''''' p''''' c pt'''''; (*nxt = Add_Given "Streckenlast q_0"*)
wneuper@59540
   175
(*[1], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Given "FunktionsVariable x"*)
wneuper@59540
   176
(*[1], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Add_Find "Funktionen funs'''"*)
wneuper@59540
   177
(*[1], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Specify_Theory "Biegelinie"*)
wneuper@59540
   178
(*[1], Pbl*)val (p,_,f,nxt,_,pt) = me nxt p c pt; (*nxt = Specify_Problem ["vonBelastungZu", "Biegelinien"]*)
wneuper@59540
   179
(*[1], Pbl*)val (p''''',_,f,nxt''''',_,pt''''') = me nxt p c pt; (*nxt = Specify_Method ["Biegelinien", "ausBelastung"]*)
wneuper@59540
   180
(*----------- 20 -----------*)
wneuper@59540
   181
(*//------------------------------------------------vvv Specify_Method ["Biegelinien", "ausBelastung"]-\\*)
wneuper@59540
   182
(*[1], Pbl*)(*ERROR val (p,_,f,nxt,_,pt) = me nxt''''' p''''' c pt'''''; (*nxt = Apply_Method ["Biegelinien", "ausBelastung"]*)
wneuper@59540
   183
ERROR itms2args: 'Biegelinie' not in itms*)
wneuper@59540
   184
wneuper@59540
   185
(*SubProblem (_, [''vonBelastungZu'', ''Biegelinien''], _)
wneuper@59540
   186
    [REAL q, REAL v, REAL_REAL b, REAL_REAL id_abl]
wneuper@59540
   187
                     ^^^^^^^^^^^ ..ERROR itms2args: 'Biegelinie' not in itms*)
wneuper@59540
   188
(*+*)val PblObj {meth, probl, spec = (thy, _ , metID), origin = (oris, _, _), ...} = get_obj I pt''''' (fst p''''');
wneuper@59540
   189
(*+*)if oris2str oris =
wneuper@59540
   190
(*+*)  "[\n(1, [\"1\"], #Given,Streckenlast, [\"q_0\"]),\n(2, [\"1\"], #Given,FunktionsVariable, [\"x\"]),\n(3, [\"1\"], #Find,Funktionen, [\"funs'''\"])]"
wneuper@59540
   191
(*+*)then () else error "([1], Pbl) Specify_Problem ['vonBelastungZu', 'Biegelinien'] changed oris";
wneuper@59540
   192
writeln (oris2str oris); (*[
wneuper@59540
   193
(1, ["1"], #Given,Streckenlast, ["q_0"]),
wneuper@59540
   194
(2, ["1"], #Given,FunktionsVariable, ["x"]),
wneuper@59540
   195
(3, ["1"], #Find,Funktionen, ["funs'''"])]*)
wneuper@59540
   196
(*+*)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
   197
(*+*)then () else error "([1], Pbl) Specify_Problem ['vonBelastungZu', 'Biegelinien'] changed probl";
wneuper@59540
   198
writeln (itms2str_ @{context} probl); (*[
wneuper@59540
   199
(1 ,[1] ,true ,#Given ,Cor Streckenlast q_0 ,(q_q, [q_0])),
wneuper@59540
   200
(2 ,[1] ,true ,#Given ,Cor FunktionsVariable x ,(v_v, [x])),
wneuper@59540
   201
(3 ,[1] ,true ,#Find ,Cor Funktionen funs''' ,(funs''', [funs''']))]*)
wneuper@59540
   202
(*+*)if itms2str_ @{context} meth = "[]"
wneuper@59540
   203
(*+*)then () else error "([1], Pbl) Specify_Problem ['vonBelastungZu', 'Biegelinien'] changed meth";
wneuper@59540
   204
writeln (itms2str_ @{context} meth); (*[]*)
wneuper@59540
   205
wneuper@59540
   206
"~~~~~ fun me , args:"; val ((_, tac), p, _(*NEW remove*), pt) = (nxt''''', p''''', c, pt''''');
wneuper@59540
   207
(*  val (pt, p) = *)
wneuper@59540
   208
	    (*locatetac is here for testing by me; step would suffice in me*)
wneuper@59540
   209
	    case locatetac tac (pt,p) of
wneuper@59540
   210
		    ("ok", (_, _, ptp)) => ptp
wneuper@59540
   211
;
wneuper@59540
   212
"~~~~~ fun locatetac , args:"; val (tac, (ptp as (pt, p))) = (tac, (pt,p));
wneuper@59540
   213
      val (mI, m) = Solve.mk_tac'_ tac;
wneuper@59540
   214
val Chead.Appl m = (*case*) Applicable.applicable_in p pt m (*of*);
wneuper@59540
   215
(*if*) member op = Solve.specsteps mI = true; (*then*)
wneuper@59540
   216
wneuper@59540
   217
(*val Updated (_, _, (ctree, pos')) =*) loc_specify_ m ptp; (*creates meth-itms*)
wneuper@59540
   218
"~~~~~ fun loc_specify_ , args:"; val (m, (pt, pos)) = (m, ptp);
wneuper@59540
   219
(*    val (p, _, f, _, _, pt) =*) Chead.specify m pos [] pt;
wneuper@59540
   220
wneuper@59540
   221
"~~~~~ fun specify , args:"; val ((Tac.Specify_Method' (mID, _, _)), (pos as (p, _)), _, pt) = (m, pos, [], pt);
wneuper@59540
   222
        val (oris, dI', pI', mI', dI, pI, pbl, met, ctxt) = case get_obj I pt p of
wneuper@59540
   223
          PblObj {origin= (oris, (dI', pI', mI'), _), spec= (dI, pI, _), probl = pbl, meth = met, ctxt, ...} =>
wneuper@59540
   224
             (oris, dI', pI', mI', dI, pI, pbl, met, ctxt)
wneuper@59540
   225
        val {ppc, pre, prls,...} = Specify.get_met mID
wneuper@59540
   226
        val thy = Celem.assoc_thy dI
wneuper@59540
   227
        val dI'' = if dI = Rule.e_domID then dI' else dI
wneuper@59540
   228
        val pI'' = if pI = Celem.e_pblID then pI' else pI
wneuper@59540
   229
;
wneuper@59540
   230
(*+*)writeln (oris2str oris); (*[
wneuper@59540
   231
(1, ["1"], #Given,Streckenlast, ["q_0"]),
wneuper@59540
   232
(2, ["1"], #Given,FunktionsVariable, ["x"]),
wneuper@59540
   233
(3, ["1"], #Find,Funktionen, ["funs'''"])]*)
wneuper@59540
   234
(*+*)writeln (pats2str' ppc);
wneuper@59540
   235
(*["(#Given, (Streckenlast, q__q))
wneuper@59540
   236
","(#Given, (FunktionsVariable, v_v))
wneuper@59540
   237
","(#Given, (Biegelinie, id_fun))
wneuper@59540
   238
","(#Given, (AbleitungBiegelinie, id_abl))
wneuper@59540
   239
","(#Find, (Funktionen, fun_s))"]*)
wneuper@59540
   240
(*+*)writeln (pats2str' ((#ppc o Specify.get_pbt) pI));
wneuper@59540
   241
(*["(#Given, (Streckenlast, q_q))
wneuper@59540
   242
","(#Given, (FunktionsVariable, v_v))
wneuper@59540
   243
","(#Find, (Funktionen, funs'''))"]*)
wneuper@59540
   244
        val oris = Specify.add_field' thy ppc oris
wneuper@59540
   245
        val met = if met = [] then pbl else met
wneuper@59540
   246
        val (_, (itms, pre')) = Specify.match_itms_oris thy met (ppc, pre, prls ) oris
wneuper@59540
   247
;
wneuper@59540
   248
(*+*)writeln (itms2str_ @{context} itms); (*[
wneuper@59540
   249
(1 ,[1] ,true ,#Given ,Cor Streckenlast q_0 ,(q_q, [q_0])),
wneuper@59540
   250
(2 ,[1] ,true ,#Given ,Cor FunktionsVariable x ,(v_v, [x])),
wneuper@59540
   251
(3 ,[1] ,true ,#Find ,Cor Funktionen funs''' ,(funs''', [funs''']))] *)
wneuper@59540
   252
wneuper@59540
   253
(*//----------- hack for funpack: generalise handling of meths which extend problem items -----\\*)
wneuper@59540
   254
val itms =
wneuper@59540
   255
  if mI' = ["Biegelinien", "ausBelastung"]
wneuper@59540
   256
  then itms @
wneuper@59540
   257
    [(4, [1], true, "#Given", Cor ((Const ("Biegelinie.Biegelinie", Type ("fun", [Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]), Type ("Tools.una", [])])),
wneuper@59540
   258
        [Free ("y", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]))]),
wneuper@59540
   259
      (Free ("id_fun", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])])),
wneuper@59540
   260
        [Free ("y", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]))] ))),
wneuper@59540
   261
    (5, [1], true, "#Given", Cor ((Const ("Biegelinie.AbleitungBiegelinie", Type ("fun", [Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]), Type ("Tools.una", [])])),
wneuper@59540
   262
        [Free ("dy", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]))]),
wneuper@59540
   263
      (Free ("id_abl", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])])),
wneuper@59540
   264
        [Free ("dy", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]))] )))]
wneuper@59540
   265
  else itms
wneuper@59540
   266
(*\\----------- hack for funpack: generalise handling of meths which extend problem items -----//*)
wneuper@59540
   267
wneuper@59540
   268
val itms' = itms @
wneuper@59540
   269
  [(4, [1], true, "#Given", Cor ((@{term "Biegelinie"},
wneuper@59540
   270
      [@{term "y::real \<Rightarrow> real"}]),
wneuper@59540
   271
    (@{term "id_fun::real \<Rightarrow> real"},
wneuper@59540
   272
      [@{term "y::real \<Rightarrow> real"}] ))),
wneuper@59540
   273
  (5, [1], true, "#Given", Cor ((@{term "AbleitungBiegelinie"},
wneuper@59540
   274
      [@{term "dy::real \<Rightarrow> real"}]),
wneuper@59540
   275
    (@{term "id_abl::real \<Rightarrow> real"},
wneuper@59540
   276
      [@{term "dy::real \<Rightarrow> real"}] )))]
wneuper@59540
   277
val itms'' = itms @
wneuper@59540
   278
  [(4, [1], true, "#Given", Cor ((Const ("Biegelinie.Biegelinie", Type ("fun", [Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]), Type ("Tools.una", [])])),
wneuper@59540
   279
      [Free ("y", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]))]),
wneuper@59540
   280
    (Free ("id_fun", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])])),
wneuper@59540
   281
      [Free ("y", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]))] ))),
wneuper@59540
   282
  (5, [1], true, "#Given", Cor ((Const ("Biegelinie.AbleitungBiegelinie", Type ("fun", [Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]), Type ("Tools.una", [])])),
wneuper@59540
   283
      [Free ("dy", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]))]),
wneuper@59540
   284
    (Free ("id_abl", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])])),
wneuper@59540
   285
      [Free ("dy", Type ("fun", [Type ("Real.real", []), Type ("Real.real", [])]))] )))]
wneuper@59540
   286
;
wneuper@59540
   287
if itms' = itms'' then () else error "itms BUIT BY HAND ARE BROKEN";
wneuper@59540
   288
(*//-----------------------------------------^^^ Specify_Method ["Biegelinien", "ausBelastung"]-\\*)
wneuper@59540
   289
wneuper@59540
   290
val (p,_,f,nxt,_,pt) = me nxt''''' p''''' c pt''''';
wneuper@59540
   291
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   292
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   293
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   294
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   295
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   296
(*----------- 30 -----------*)
wneuper@59540
   297
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   298
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   299
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   300
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   301
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   302
(*----------- 40 -----------*)
wneuper@59540
   303
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   304
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   305
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59540
   306
val (p,_,f,nxt,_,pt) = me nxt p c pt;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
(*----------- 50 -----------*)
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
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
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
(*----------- 60 -----------*)
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
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
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
(*----------- 70 -----------*)
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
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
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
(*----------- 80 -----------*)
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@59549
   329
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59549
   330
if p = ([2, 1], Pbl) andalso
wneuper@59549
   331
  f = PpcKF (Problem [], {Find = [Incompl "equality"], Given = [Incompl "functionEq", Incompl "substitution"], Relate = [], Where = [], With = []})
wneuper@59549
   332
then
wneuper@59549
   333
  case nxt of
wneuper@59549
   334
    ("Add_Given", Add_Given "functionEq (hd [])") => ((*here is an error in partial_function*))
wneuper@59549
   335
  | _ => error "me biegelinie changed 1"
wneuper@59549
   336
else error "me biegelinie changed 2";
wneuper@59549
   337
wneuper@59549
   338
val (p,_,f,nxt,_,pt) = me nxt p c pt;
wneuper@59549
   339
nxt;(* = ("Tac ", Tac "[error] appl_add: is_known: seek_oridts: input ('substitution (NTH (1 + -4) [])') not found in oris (typed)")*)
wneuper@59549
   340
(*----- due to problems with generalised handling of meths which extend the model of a probl
wneuper@59540
   341
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
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
(*----------- 90 -----------*)
wneuper@59540
   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
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
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
(*---------- 100 -----------*)
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
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
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
(*---------- 110 -----------*)
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
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
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
(*---------- 120 -----------*)
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
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
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
(*---------- 130 -----------*)
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
val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
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
wneuper@59540
   374
if p = ([3], Pbl)
wneuper@59540
   375
then
wneuper@59540
   376
  case nxt of
wneuper@59540
   377
    ("Add_Given", Add_Given "solveForVars [c_2, c_3, c_4]") => 
wneuper@59540
   378
    (case f of
wneuper@59540
   379
      PpcKF
wneuper@59540
   380
          (Problem [],
wneuper@59540
   381
           {Find = [Incompl "solution []"], Given =
wneuper@59540
   382
            [Correct
wneuper@59540
   383
              "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
   384
             Incompl "solveForVars [c]"],
wneuper@59540
   385
            Relate = [], Where = [], With = []}) => ()
wneuper@59540
   386
    | _ => error "Bsp.7.70 me changed 1")
wneuper@59540
   387
  | _ => error "Bsp.7.70 me changed 2"
wneuper@59540
   388
else error "Bsp.7.70 me changed 3";
wneuper@59549
   389
-----*)
wneuper@59549
   390
(* NOTE: ^^^^^^^^^^^^^^^^^ no progress already in isabisac15, but not noticed ^^^^^^^^^^^^^^^^^ *)
wneuper@59540
   391
wneuper@59540
   392
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. auto ---";
wneuper@59540
   393
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. auto ---";
wneuper@59540
   394
"----------- IntegrierenUndKonstanteBestimmen2: Bsp.7.70. auto ---";
wneuper@59540
   395
(* the error in this test might be independent from introduction of y, dy
wneuper@59540
   396
   as arguments in IntegrierenUndKonstanteBestimmen2,
wneuper@59540
   397
   rather due to so far untested use of "auto" *)
wneuper@59540
   398
val fmz = ["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
wneuper@59540
   399
	     "Randbedingungen [y 0 = 0, y L = 0, M_b 0 = 0, M_b L = 0]",
wneuper@59540
   400
	     "FunktionsVariable x", "GleichungsVariablen [c, c_2, c_3, c_4]",
wneuper@59540
   401
       "AbleitungBiegelinie dy"];
wneuper@59540
   402
val (dI',pI',mI') = ("Biegelinie", ["Biegelinien"],
wneuper@59540
   403
		     ["IntegrierenUndKonstanteBestimmen2"]);
wneuper@59540
   404
wneuper@59540
   405
reset_states ();
wneuper@59540
   406
CalcTree [(fmz, (dI',pI',mI'))];
wneuper@59540
   407
Iterator 1;
wneuper@59540
   408
moveActiveRoot 1;
wneuper@59540
   409
wneuper@59540
   410
(*[], Met*)autoCalculate 1 CompleteCalcHead;
wneuper@59540
   411
(*[1], Pbl*)autoCalculate 1 (Step 1); (* into SubProblem *)
wneuper@59540
   412
(*[1], Res*)autoCalculate 1 CompleteSubpbl; (**)
wneuper@59540
   413
(*[2], Pbl*)autoCalculate 1 (Step 1); (* out of SubProblem *)
wneuper@59540
   414
(*[2], Res*)autoCalculate 1 CompleteSubpbl;
wneuper@59540
   415
(*[3], Pbl*)autoCalculate 1 (Step 1); (* out of SubProblem *)
wneuper@59540
   416
(*[3], Met*)autoCalculate 1 CompleteCalcHead;
wneuper@59540
   417
(*[3, 1], Frm*)autoCalculate 1 (Step 1); (* solve SubProblem *)
wneuper@59540
   418
(*(**)autoCalculate 1 CompleteSubpbl;  error in kernel 4: generate1: not impl.for Empty_Tac_*)
wneuper@59540
   419
(*[3, 1], Res*)autoCalculate 1 (Step 1); (* solve SubProblem *)
wneuper@59540
   420
(*[3, 2], Res*)autoCalculate 1 (Step 1); (* solve SubProblem *)
wneuper@59540
   421
(*[3, 3], Res*)autoCalculate 1 (Step 1); (* solve SubProblem *)
wneuper@59540
   422
(*[3, 4], Res*)autoCalculate 1 (Step 1); (* solve SubProblem *)
wneuper@59540
   423
(*[3, 5], Res*)autoCalculate 1 (Step 1); (* solve SubProblem *)
wneuper@59540
   424
(*[3, 6], Res*)autoCalculate 1 (Step 1); (* solve SubProblem *)
wneuper@59540
   425
(*[3, 7], Res*)autoCalculate 1 (Step 1); (* solve SubProblem *)
wneuper@59540
   426
(*[3, 8], Pbl*)autoCalculate 1 (Step 1); (* solve SubProblem *)
wneuper@59540
   427
(*[3, 8], Met*)autoCalculate 1 CompleteCalcHead;
wneuper@59540
   428
(*[3, 8, 1], Frm*)autoCalculate 1 (Step 1); (* solve SubProblem *)
wneuper@59540
   429
(*[3, 8, 1], Res*)autoCalculate 1 (Step 1); (* solve SubProblem *)
wneuper@59540
   430
(*(**)autoCalculate 1 (Step 1); 
wneuper@59540
   431
*** generate1: not impl.for Empty_Tac_ 
wneuper@59540
   432
val it = <AUTOCALC><CALCID>1</CALCID><CALCMESSAGE>helpless</CALCMESSAGE></AUTOCALC>: XML.tree *)
wneuper@59540
   433
wneuper@59540
   434
val ((pt,_),_) = get_calc 1;
wneuper@59540
   435
val ip = get_pos 1 1;
wneuper@59540
   436
val (Form f, tac, asms) = pt_extract (pt, ip);
wneuper@59540
   437
wneuper@59549
   438
if ip = ([2, 1, 1], Frm) andalso 
wneuper@59549
   439
term2str f  = "hd []"
wneuper@59549
   440
then 
wneuper@59549
   441
  case tac of
wneuper@59549
   442
    SOME Empty_Tac => ()
wneuper@59549
   443
  | _ => error "ERROR biegel.7.70 changed 1"
wneuper@59549
   444
else error "ERROR biegel.7.70 changed 2";
wneuper@59549
   445
wneuper@59549
   446
(*----- this state has been reached shortly after 98298342fb6d:
wneuper@59540
   447
if ip = ([3, 8, 1], Res) andalso 
wneuper@59540
   448
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]"
wneuper@59540
   449
then 
wneuper@59540
   450
  case tac of
wneuper@59540
   451
    SOME (Check_Postcond ["normalise", "4x4", "LINEAR", "system"]) => ()
wneuper@59540
   452
  | _ => error "ERROR biegel.7.70 changed 1"
wneuper@59540
   453
else error "ERROR biegel.7.70 changed 2";
wneuper@59549
   454
*)