found error in Biegelinie2 (concerns design-flaw with curried funs in scripts %-( start_Take
authorwneuper
Tue, 05 Sep 2006 15:06:55 +0200
branchstart_Take
changeset 649c1e31800f117
parent 648 434f212ede07
child 650 4a9ff889afaf
found error in Biegelinie2 (concerns design-flaw with curried funs in scripts %-(
src/sml/ME/mathengine.sml
src/smltest/IsacKnowledge/biegel-test-stimmen2.sml
src/smltest/IsacKnowledge/biegelinie.sml
     1.1 --- a/src/sml/ME/mathengine.sml	Tue Sep 05 10:10:27 2006 +0200
     1.2 +++ b/src/sml/ME/mathengine.sml	Tue Sep 05 15:06:55 2006 +0200
     1.3 @@ -89,10 +89,10 @@
     1.4  	   (Error' (Error_ e)) => ERror e
     1.5  	 | _ => Updated ([], [], (pt,p)) end;
     1.6  
     1.7 -fun loc_solve_ m (pt,pos) =
     1.8  (* val (m, pos) = ((mI,m), ip);
     1.9     val (m,(pt,pos) ) = ((mI,m), ptp);
    1.10     *)  
    1.11 +fun loc_solve_ m (pt,pos) =
    1.12      let val (msg, cs') = solve m (pt, pos);
    1.13  (* val (tacis,dels,(pt',p')) = cs';
    1.14     (writeln o istate2str) (get_istate pt' p');
    1.15 @@ -109,10 +109,10 @@
    1.16  
    1.17  (*report applicability of tac in tacis; pt is dropped in setNextTactic*)
    1.18  fun locatetac _ (ptp as (_,([],Res))) = ("end-of-calculation", ([], [], ptp))
    1.19 +(* val ptp as (pt, p) = (pt, ip);
    1.20 +   val ptp as (pt, p) = (pt, p);
    1.21 +   *)
    1.22    | locatetac tac (ptp as (pt, p)) =
    1.23 -(* val ptp as (pt, p) = (pt, p);
    1.24 -   val ptp as (pt, p) = (pt, ip);
    1.25 -   *)
    1.26      let val (mI,m) = mk_tac'_ tac;
    1.27      in case applicable_in p pt m of
    1.28  	   Notappl e => ("not-applicable", ([],[],  ptp):calcstate')
    1.29 @@ -459,11 +459,8 @@
    1.30  fun me ((_,tac):tac'_) (p:pos') (_:NEW(*remove*)) (pt:ptree) =
    1.31      let val (pt, p) = 
    1.32  (* val (msg, (tacis, pos's, (pt',p'))) = locatetac tac (pt,p);
    1.33 -   f2str (TESTg_form (pt', p'));
    1.34 -   (writeln o (itms2str thy)) (get_obj g_pbl pt' (fst p'));
    1.35 -   writeln( istate2str (get_istate pt' ([3],Res)));
    1.36 -   term2str (fst (get_obj g_result pt' [3]));
    1.37 -   val (pt,p) = (pt',p');
    1.38 +   p = ([1, 9], Res);
    1.39 +   (writeln o istate2str) (get_istate pt p);
    1.40     *)
    1.41  	      (*locatetac is here for testing by me; step would suffice in me*)
    1.42  	    case locatetac tac (pt,p) of
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/src/smltest/IsacKnowledge/biegel-test-stimmen2.sml	Tue Sep 05 15:06:55 2006 +0200
     2.3 @@ -0,0 +1,190 @@
     2.4 +(* tests intermediate WN060905
     2.5 +
     2.6 +use"../smltest/IsacKnowledge/biegel-test-stimmen2.sml";
     2.7 +*)
     2.8 +
     2.9 +
    2.10 +"----- met [Biegelinien,ausBelastung] in IntegrierenUndKonstanteBestimmen2";
    2.11 +val fmz = ["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
    2.12 +	     "Randbedingungen [y 0 = 0, y L = 0, M_b 0 = 0, M_b L = 0]",
    2.13 +	     "FunktionsVariable x"];
    2.14 +val (dI',pI',mI') = ("Biegelinie.thy", ["Biegelinien"],
    2.15 +		     ["IntegrierenUndKonstanteBestimmen2"]);
    2.16 +val p = e_pos'; val c = [];
    2.17 +val (p,_,f,nxt,_,pt) = CalcTreeTEST [(fmz, (dI',pI',mI'))];
    2.18 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.19 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.20 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.21 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.22 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.23 +if nxt = ("Apply_Method", Apply_Method ["IntegrierenUndKonstanteBestimmen2"])
    2.24 +then () else raise error "biegelinie.sml met2 a";
    2.25 +
    2.26 +(*** actual arg(s) missing for '["(#Find, (Funktionen, funs_))"]' i.e. should be 'copy-named' by '*_._'
    2.27 +... THIS MEANS: 
    2.28 +#a# "Script Biegelinie2Script ..
    2.29 +\         ... (SubProblem (Biegelinie_,[vonBelastungZu,Biegelinien],      \
    2.30 +\                          [Biegelinien,ausBelastung])                    \
    2.31 +\                          [real_ q_, real_ v_]);                         \
    2.32 +
    2.33 +#b# prep_met ... (["Biegelinien","ausBelastung"],
    2.34 +              ... ("#Given" ,["Streckenlast q_","FunktionsVariable v_"]),
    2.35 +   "Script Belastung2BiegelScript (q_::real) (v_::real) =                 \
    2.36 +
    2.37 +#a#b# BOTH HAVE 2 ARGUMENTS q_ and v_ ...OK
    2.38 +##########################################################################
    2.39 +BUT THE (#Find, (Funktionen, funs_)) IS NOT COPYNAMED BY funs___ !!!3*_!!!
    2.40 +##########################################################################*)
    2.41 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.42 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.43 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.44 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.45 +if nxt = ("Apply_Method", Apply_Method ["Biegelinien", "ausBelastung"])
    2.46 +then () else raise error "biegelinie.sml met2 b";
    2.47 +
    2.48 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =   "q x = q_0";
    2.49 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "- q x = - q_0";
    2.50 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =  "Q' x = - q_0";
    2.51 +case nxt of (_, Subproblem (_, ["named", "integrate", "function"])) => ()
    2.52 +| _ => raise error "biegelinie.sml met2 c";
    2.53 +
    2.54 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.55 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.56 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.57 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.58 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.59 +
    2.60 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "Q x = c + -1 * q_0 * x";
    2.61 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "Q x = c + -1 * q_0 * x";
    2.62 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "M_b' x = c + -1 * q_0 * x";
    2.63 +case nxt of (_,Subproblem (_, ["named", "integrate", "function"])) => ()
    2.64 +| _ => raise error "biegelinie.sml met2 d";
    2.65 +
    2.66 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.67 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.68 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.69 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.70 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = 
    2.71 +		   "M_b x = Integral c + -1 * q_0 * x D x";
    2.72 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = 
    2.73 +		   "M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2";
    2.74 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
    2.75 +		   "M_b x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2";
    2.76 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
    2.77 +		   "- EI * y'' x = c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2";
    2.78 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
    2.79 +		   "y'' x = 1 / - EI * (c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2)";
    2.80 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.81 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.82 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.83 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.84 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
    2.85 +    "y' x = Integral 1 / - EI * (c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2) D x";
    2.86 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
    2.87 +"y' x = Integral 1 / (-1 * EI) * (c_2 + c * x + -1 * q_0 / 2 * x ^^^ 2) D x";
    2.88 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
    2.89 +"y' x =\nc_3 + 1 / (-1 * EI) * (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3)";
    2.90 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
    2.91 +"y' x =\nc_3 + 1 / (-1 * EI) * (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3)";
    2.92 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.93 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.94 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.95 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    2.96 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
    2.97 +"y x =\nIntegral c_3 +\n         1 / (-1 * EI) *\n         (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3) D x";
    2.98 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
    2.99 +"y x =\nc_4 + c_3 * x +\n1 / (-1 * EI) *\n(c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)";
   2.100 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
   2.101 +   "y x =\nc_4 + c_3 * x +\n1 / (-1 * EI) *\n(c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)";
   2.102 +
   2.103 +
   2.104 +(*vvvvvvvvvvvvvvvvvvvvvv@@@@@@@@@@@@@@@@@@@@@@vvvvvvvvvvvvvvvvvvvvvvvvvvvv*)
   2.105 +p = ([1, 9], Res);
   2.106 +(writeln o istate2str) (get_istate pt p);
   2.107 +(writeln o istate2str) (get_istate pt ([1], Res))(*linie2Script: funs_ missg*);
   2.108 +nxt = ("Check_Postcond", Check_Postcond ["vonBelastungZu", "Biegelinien"]);
   2.109 +
   2.110 +(* val (p,_,f,nxt,_,pt) = me nxt p c pt; 
   2.111 +
   2.112 +   f2str f =
   2.113 +   "[Q x = c + -1 * q_0 * x,\n y x =\n c_4 + c_3 * x +\n 1 / (-1 * EI) *\n (c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4),\n y' x =\n c_3 + 1 / (-1 * EI) * (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3),\n y x =\n c_4 + c_3 * x +\n 1 / (-1 * EI) *\n (c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)]";
   2.114 +case nxt of (_,Subproblem (_, ["setzeRandbedingungen", "Biegelinien"])) => ()
   2.115 +| _ => raise error "biegelinie.sml met2 d";
   2.116 +(writeln o istate2str) (get_istate pt p);
   2.117 +show_pt pt;
   2.118 +
   2.119 +val ([(_, Check_Postcond'
   2.120 +               (["vonBelastungZu", "Biegelinien"],
   2.121 +                  vvv),
   2.122 +            _)],
   2.123 +      [],
   2.124 +      _) = xxx;
   2.125 +val (ttt, _) = vvv;
   2.126 +term2str ttt;
   2.127 +
   2.128 +val ScrState (E,l,a,XXX,YYY,b) =  get_istate pt (p,p_); 
   2.129 +val a = Some (str2term "B__::bool"); (*!!!!!!!!!!!!!!!!!!!vvv is M__*)
   2.130 +val is as ScrState (E,l,a,XXX,YYY,b) = ScrState (E,l,a,XXX,YYY,b);
   2.131 +
   2.132 +      val (_,_,(scval,scsaf)) = next_tac (thy',srls) (pt,(p,p_)) sc is;
   2.133 +term2str scval;
   2.134 +writeln (istate2str is);
   2.135 +
   2.136 +THERE IS A PROBLEM WITH @@ and curried functions !!!!!!!!!!!!!^^^
   2.137 +
   2.138 +*)
   2.139 +(*^^^^^^^^^^^^^^^^^^^^^^@@@@@@@@@@@@@@@@@@@@@@^^^^^^^^^^^^^^^^^^^^^^^^^^^^*)
   2.140 +p = ([1], Res);
   2.141 +(writeln o istate2str) (get_istate pt p);
   2.142 +nxt = ("Subproblem",
   2.143 +       Subproblem ("Biegelinie.thy", ["setzeRandbedingungen", "Biegelinien"]));
   2.144 +
   2.145 +
   2.146 +(* 
   2.147 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.148 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.149 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.150 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.151 +*)
   2.152 +(********************************************* setzeRandbedingungenEin !!!!
   2.153 +val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.154 +case nxt of (_, Apply_Method ["Biegelinien", "setzeRandbedingungenEin"]) => ()
   2.155 +| _ => raise error "biegelinie.sml met2 e";
   2.156 +
   2.157 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "y 0 = 0";
   2.158 +(*WN060902 is the ctree ok here?: Take -> SubProblem !*)
   2.159 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.160 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.161 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.162 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.163 +case nxt of (_, Apply_Method ["Equation", "fromFunction"]) => ()
   2.164 +| _ => raise error "biegelinie.sml met2 f";
   2.165 +
   2.166 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.167 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.168 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "0 = c_4 + 0 / (-1 * EI)";
   2.169 +
   2.170 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f = "y L = 0";
   2.171 +val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.172 +(*WN060902 strange msgs *** upd_env_opt: (None,SubProblem (Biegelinie_, [m..*)
   2.173 +val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.174 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.175 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.176 +val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.177 +case nxt of (_, Apply_Method ["Equation", "fromFunction"]) => ()
   2.178 +| _ => raise error "biegelinie.sml met2 g";
   2.179 +
   2.180 +(*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2*)
   2.181 +
   2.182 +val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.183 +nxt = ("Empty_Tac", Empty_Tac) (*true*);
   2.184 +
   2.185 +
   2.186 +(*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@2*)
   2.187 +(*
   2.188 +val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f;
   2.189 +val (p,_,f,nxt,_,pt) = me nxt p c pt;
   2.190 +*)
   2.191 +******************************************************************8*)
   2.192 +
   2.193 +
     3.1 --- a/src/smltest/IsacKnowledge/biegelinie.sml	Tue Sep 05 10:10:27 2006 +0200
     3.2 +++ b/src/smltest/IsacKnowledge/biegelinie.sml	Tue Sep 05 15:06:55 2006 +0200
     3.3 @@ -769,7 +769,7 @@
     3.4  (*---vvv-NOTok--------------------------------------------------------------*)
     3.5  
     3.6  
     3.7 -"----- met [Biegelinien,ausBelastung]";
     3.8 +"----- met [Biegelinien,ausBelastung] in IntegrierenUndKonstanteBestimmen2";
     3.9  val fmz = ["Traegerlaenge L","Streckenlast q_0","Biegelinie y",
    3.10  	     "Randbedingungen [y 0 = 0, y L = 0, M_b 0 = 0, M_b L = 0]",
    3.11  	     "FunktionsVariable x"];
    3.12 @@ -861,10 +861,18 @@
    3.13  "y x =\nc_4 + c_3 * x +\n1 / (-1 * EI) *\n(c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)";
    3.14  val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
    3.15     "y x =\nc_4 + c_3 * x +\n1 / (-1 * EI) *\n(c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)";
    3.16 +
    3.17 +
    3.18 +(*vvvvvvvvvvvvvvvvvvvvvv@@@@@@@@@@@@@@@@@@@@@@vvvvvvvvvvvvvvvvvvvvvvvvvvvv*)
    3.19 +(writeln o istate2str) (get_istate pt p);
    3.20 +
    3.21  val (p,_,f,nxt,_,pt) = me nxt p c pt; f2str f =
    3.22     "[Q x = c + -1 * q_0 * x,\n y x =\n c_4 + c_3 * x +\n 1 / (-1 * EI) *\n (c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4),\n y' x =\n c_3 + 1 / (-1 * EI) * (c_2 * x + c / 2 * x ^^^ 2 + -1 * q_0 / 6 * x ^^^ 3),\n y x =\n c_4 + c_3 * x +\n 1 / (-1 * EI) *\n (c_2 / 2 * x ^^^ 2 + c / 6 * x ^^^ 3 + -1 * q_0 / 24 * x ^^^ 4)]";
    3.23  case nxt of (_,Subproblem (_, ["setzeRandbedingungen", "Biegelinien"])) => ()
    3.24  | _ => raise error "biegelinie.sml met2 d";
    3.25 +(writeln o istate2str) (get_istate pt p);
    3.26 +show_pt pt;
    3.27 +(*^^^^^^^^^^^^^^^^^^^^^^@@@@@@@@@@@@@@@@@@@@@@^^^^^^^^^^^^^^^^^^^^^^^^^^^^*)
    3.28   
    3.29  val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;
    3.30  val (p,_,f,nxt,_,pt) = me nxt p c pt;val (p,_,f,nxt,_,pt) = me nxt p c pt;