src/Tools/isac/Interpret/mathengine.sml
branchdecompose-isar
changeset 41973 bf17547ce960
parent 41972 22c5483e9bfb
child 41975 61f358925792
     1.1 --- a/src/Tools/isac/Interpret/mathengine.sml	Wed May 04 09:01:10 2011 +0200
     1.2 +++ b/src/Tools/isac/Interpret/mathengine.sml	Wed May 04 14:04:53 2011 +0200
     1.3 @@ -163,33 +163,30 @@
     1.4  
     1.5  (*iterated by nxt_me; there (the resulting) ptp dropped
     1.6    may call nxt_solve Apply_Method --- thus evaluated here after solve.sml*)
     1.7 -(* val (ptp as (pt, pos as (p,p_))) = ptp;
     1.8 -   val (ptp as (pt, pos as (p,p_))) = (pt,ip);
     1.9 -   *)
    1.10  fun nxt_specify_ (ptp as (pt, pos as (p,p_))) =
    1.11 -    let val pblobj as (PblObj{meth,origin=origin as (oris,(dI',pI',mI'),_),
    1.12 -			      probl,spec=(dI,pI,mI),...}) = get_obj I pt p;
    1.13 -    in if just_created_ pblobj (*by Subproblem*) andalso origin <> e_origin
    1.14 -       then case mI' of
    1.15 -	 ["no_met"] => nxt_specif (Refine_Tacitly pI') (pt, (p, Pbl))
    1.16 -       | _ => nxt_specif Model_Problem (pt, (p,Pbl))
    1.17 -       else let val cpI = if pI = e_pblID then pI' else pI;
    1.18 -		val cmI = if mI = e_metID then mI' else mI;
    1.19 -		val {ppc,prls,where_,...} = get_pbt cpI;
    1.20 -		val pre = check_preconds "thy 100820" prls where_ probl;
    1.21 -		val pb = foldl and_ (true, map fst pre);
    1.22 -		(*FIXME.WN0308:    ~~~~~: just check true in itms of pbl/met?*)
    1.23 -		val (_,tac) =
    1.24 -		    nxt_spec p_ pb oris (dI',pI',mI') (probl, meth) 
    1.25 -			     (ppc, (#ppc o get_met) cmI) (dI, pI, mI);
    1.26 +  let val pblobj as (PblObj{meth,origin=origin as (oris,(dI',pI',mI'),_),
    1.27 +			  probl,spec=(dI,pI,mI),...}) = get_obj I pt p;
    1.28 +  in 
    1.29 +    if just_created_ pblobj (*by Subproblem*) andalso origin <> e_origin
    1.30 +    then 
    1.31 +      case mI' of
    1.32 +	      ["no_met"] => nxt_specif (Refine_Tacitly pI') (pt, (p, Pbl))
    1.33 +      | _ => nxt_specif Model_Problem (pt, (p,Pbl))
    1.34 +    else 
    1.35 +      let 
    1.36 +        val cpI = if pI = e_pblID then pI' else pI;
    1.37 +		    val cmI = if mI = e_metID then mI' else mI;
    1.38 +		    val {ppc, prls, where_, ...} = get_pbt cpI;
    1.39 +		    val pre = check_preconds "thy 100820" prls where_ probl;
    1.40 +		    val pb = foldl and_ (true, map fst pre);
    1.41 +		    (*FIXME.WN0308:    ~~~~~: just check true in itms of pbl/met?*)
    1.42 +		    val (_,tac) = nxt_spec p_ pb oris (dI',pI',mI') (probl, meth) 
    1.43 +			    (ppc, (#ppc o get_met) cmI) (dI, pI, mI);
    1.44  	    in case tac of
    1.45 -		   Apply_Method mI => 
    1.46 -(* val Apply_Method mI = tac;
    1.47 -   *)
    1.48 -		   nxt_solv (Apply_Method' (mI, NONE, e_istate, e_ctxt)) (e_istate, e_ctxt) ptp
    1.49 -		 | _ => nxt_specif tac ptp end
    1.50 -    end;
    1.51 -
    1.52 +		       Apply_Method mI => 
    1.53 +		         nxt_solv (Apply_Method' (mI, NONE, e_istate, e_ctxt)) (e_istate, e_ctxt) ptp
    1.54 +		     | _ => nxt_specif tac ptp end
    1.55 +   end;
    1.56  
    1.57  (*.specify a new method;
    1.58     WN0512 impl.incomplete, see 'nxt_specif (Specify_Method ' .*)