test/Tools/isac/Knowledge/diffapp.sml
branchisac-update-Isa09-2
changeset 37984 972a73d7c50b
parent 37981 b2877b9d455a
child 37991 028442673981
equal deleted inserted replaced
37983:03bfbc480107 37984:972a73d7c50b
   446   "Script Maximum_value(fix_::bool list)(m_::real) (rs_::bool list)\
   446   "Script Maximum_value(fix_::bool list)(m_::real) (rs_::bool list)\
   447    \      (v_::real) (itv_::real set) (err_::bool) =          \ 
   447    \      (v_::real) (itv_::real set) (err_::bool) =          \ 
   448    \ (let e_e = (hd o (filterVar m_)) rs_;              \
   448    \ (let e_e = (hd o (filterVar m_)) rs_;              \
   449    \      t_ = (if 1 < length_ rs_                            \
   449    \      t_ = (if 1 < length_ rs_                            \
   450    \           then (SubProblem (Reals_,[make,function],[no_met])\
   450    \           then (SubProblem (Reals_,[make,function],[no_met])\
   451    \                     [real_ m_, real_ v_v, bool_list_ rs_])\
   451    \                     [REAL m_, REAL v_v, BOOL_LIST rs_])\
   452    \           else (hd rs_));                                \
   452    \           else (hd rs_));                                \
   453    \      (mx_::real) = SubProblem (Reals_,[on_interval,max_of,function], \
   453    \      (mx_::real) = SubProblem (Reals_,[on_interval,max_of,function], \
   454    \                                [Isac,maximum_on_interval])\
   454    \                                [Isac,maximum_on_interval])\
   455    \                               [bool_ t_, real_ v_v, real_set_ itv_]\
   455    \                               [BOOL t_, REAL v_v, REAL_SET itv_]\
   456    \ in ((SubProblem (Reals_,[find_values,tool],[Isac,find_values])   \
   456    \ in ((SubProblem (Reals_,[find_values,tool],[Isac,find_values])   \
   457    \      [real_ mx_, real_ (Rhs t_), real_ v_v, real_ m_,     \
   457    \      [REAL mx_, REAL (Rhs t_), REAL v_v, REAL m_,     \
   458    \       bool_list_ (dropWhile (ident e_e) rs_)])::bool list))";
   458    \       BOOL_LIST (dropWhile (ident e_e) rs_)])::bool list))";
   459 
   459 
   460 val fix_ = (str2term "fix_::bool list", 
   460 val fix_ = (str2term "fix_::bool list", 
   461 	    str2term "[r=Arbfix]");
   461 	    str2term "[r=Arbfix]");
   462 val m_   = (str2term "m_::real", 
   462 val m_   = (str2term "m_::real", 
   463 	    str2term "A");
   463 	    str2term "A");
   492 
   492 
   493 (*--- 2.line in script ---*)
   493 (*--- 2.line in script ---*)
   494 val t = str2term 
   494 val t = str2term 
   495 	    "(if 1 < length_ rs_                            \
   495 	    "(if 1 < length_ rs_                            \
   496    \           then (SubProblem (Reals_,[make,function],[no_met])\
   496    \           then (SubProblem (Reals_,[make,function],[no_met])\
   497    \                     [real_ m_, real_ v_v, bool_list_ rs_])\
   497    \                     [REAL m_, REAL v_v, BOOL_LIST rs_])\
   498    \           else (hd rs_))";
   498    \           else (hd rs_))";
   499 val s = subst_atomic env t;
   499 val s = subst_atomic env t;
   500 term2str s;
   500 term2str s;
   501 "if 1 < length_ [A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2]\
   501 "if 1 < length_ [A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2]\
   502 \then SubProblem (Reals_, [make, function], [no_met])\
   502 \then SubProblem (Reals_, [make, function], [no_met])\
   503 \      [real_ A, real_ b,\
   503 \      [REAL A, REAL b,\
   504 \       bool_list_ [A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2]]\
   504 \       BOOL_LIST [A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2]]\
   505 \else hd [A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2]";
   505 \else hd [A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2]";
   506 val SOME (s',_) = rewrite_set_ thy false list_rls s;
   506 val SOME (s',_) = rewrite_set_ thy false list_rls s;
   507 val s'' = term2str s';
   507 val s'' = term2str s';
   508 if s'' = 
   508 if s'' = 
   509 "SubProblem (Reals_, [make, function], [no_met])\n\
   509 "SubProblem (Reals_, [make, function], [no_met])\n\
   510 \ [real_ A, real_ b,\n\
   510 \ [REAL A, REAL b,\n\
   511 \  bool_list_ [A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2]]" then ()
   511 \  BOOL_LIST [A = a * b, (a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2]]" then ()
   512 else raise error "new behaviour with list_rls 1.3.";
   512 else raise error "new behaviour with list_rls 1.3.";
   513 val env = env @ [(str2term "t_::bool",
   513 val env = env @ [(str2term "t_::bool",
   514 		  str2term "A = (2*sqrt(r^^^2-(b/2)^^^2)) * b")];
   514 		  str2term "A = (2*sqrt(r^^^2-(b/2)^^^2)) * b")];
   515 
   515 
   516 
   516 
   524    \ (let h_  = (hd o (filterVar f_)) eqs_;                   \
   524    \ (let h_  = (hd o (filterVar f_)) eqs_;                   \
   525    \      e_1 = hd (dropWhile (ident h_) eqs_);               \
   525    \      e_1 = hd (dropWhile (ident h_) eqs_);               \
   526    \      vs_ = dropWhile (ident f_) (Vars h_);                \
   526    \      vs_ = dropWhile (ident f_) (Vars h_);                \
   527    \      v_1 = hd (dropWhile (ident v_v) vs_);                \
   527    \      v_1 = hd (dropWhile (ident v_v) vs_);                \
   528    \      (s_1::bool list)=(SubProblem(Reals_,[univar,equation],[no_met])\
   528    \      (s_1::bool list)=(SubProblem(Reals_,[univar,equation],[no_met])\
   529    \                          [bool_ e_1, real_ v_1])\
   529    \                          [BOOL e_1, REAL v_1])\
   530    \ in Substitute [(v_1 = (rhs o hd) s_1)] h_)";
   530    \ in Substitute [(v_1 = (rhs o hd) s_1)] h_)";
   531 val f_ = (str2term "f_::real", 
   531 val f_ = (str2term "f_::real", 
   532 	  str2term "A");
   532 	  str2term "A");
   533 val v_v = (str2term "v_::real", 
   533 val v_v = (str2term "v_::real", 
   534 	  str2term "b");
   534 	  str2term "b");
   582 if s' = "a" then () else raise error "new behaviour with list_rls 2.4.";
   582 if s' = "a" then () else raise error "new behaviour with list_rls 2.4.";
   583 val env = env @ [(str2term "v_1::real", str2term s')];
   583 val env = env @ [(str2term "v_1::real", str2term s')];
   584 
   584 
   585 (*--- 5.line in script ---*)
   585 (*--- 5.line in script ---*)
   586 val t = str2term "(SubProblem(Reals_,[univar,equation],[no_met])\
   586 val t = str2term "(SubProblem(Reals_,[univar,equation],[no_met])\
   587 		 \           [bool_ e_1, real_ v_1])";
   587 		 \           [BOOL e_1, REAL v_1])";
   588 val s = subst_atomic env t;
   588 val s = subst_atomic env t;
   589 term2str s;
   589 term2str s;
   590 "SubProblem (Reals_, [univar, equation], [no_met])\n\
   590 "SubProblem (Reals_, [univar, equation], [no_met])\n\
   591 \ [bool_ ((a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2), real_ a]";
   591 \ [BOOL ((a / 2) ^^^ 2 + (b / 2) ^^^ 2 = r ^^^ 2), REAL a]";
   592 val env = env @ [(str2term "s_1::bool list", 
   592 val env = env @ [(str2term "s_1::bool list", 
   593 		  str2term "[a = 2 * sqrt (r^^^2 - (b/2)^^^2)]")];
   593 		  str2term "[a = 2 * sqrt (r^^^2 - (b/2)^^^2)]")];
   594 
   594 
   595 (*--- 6.line in script ---*)
   595 (*--- 6.line in script ---*)
   596 val t = str2term "Substitute [(v_1 = (rhs o hd) (s_1::bool list))] (h_::bool)";
   596 val t = str2term "Substitute [(v_1 = (rhs o hd) (s_1::bool list))] (h_::bool)";
   618    \     v_1 = nth_ 1 vs_;                                   \
   618    \     v_1 = nth_ 1 vs_;                                   \
   619    \     v_2 = nth_ 2 vs_;                                   \
   619    \     v_2 = nth_ 2 vs_;                                   \
   620    \     e_1 = (hd o (filterVar v_1)) es_;            \
   620    \     e_1 = (hd o (filterVar v_1)) es_;            \
   621    \     e_2 = (hd o (filterVar v_2)) es_;            \
   621    \     e_2 = (hd o (filterVar v_2)) es_;            \
   622    \  (s_1::bool list) = (SubProblem (Reals_,[univar,equation],[no_met])\
   622    \  (s_1::bool list) = (SubProblem (Reals_,[univar,equation],[no_met])\
   623    \                    [bool_ e_1, real_ v_1]);\
   623    \                    [BOOL e_1, REAL v_1]);\
   624    \  (s_2::bool list) = (SubProblem (Reals_,[univar,equation],[no_met])\
   624    \  (s_2::bool list) = (SubProblem (Reals_,[univar,equation],[no_met])\
   625    \                    [bool_ e_2, real_ v_2])\
   625    \                    [BOOL e_2, REAL v_2])\
   626    \in Substitute [(v_1 = (rhs o hd) s_1),(v_2 = (rhs o hd) s_2)] h_)";
   626    \in Substitute [(v_1 = (rhs o hd) s_1),(v_2 = (rhs o hd) s_2)] h_)";
   627 val f_ = (str2term "f_::real", 
   627 val f_ = (str2term "f_::real", 
   628 	  str2term "A");
   628 	  str2term "A");
   629 val v_v = (str2term "v_::real", 
   629 val v_v = (str2term "v_::real", 
   630 	  str2term "alpha");
   630 	  str2term "alpha");
   713 else raise error "new behaviour with list_rls 3.7.";
   713 else raise error "new behaviour with list_rls 3.7.";
   714 val env = env @ [(str2term "e_2::bool", str2term s')];
   714 val env = env @ [(str2term "e_2::bool", str2term s')];
   715 
   715 
   716 (*--- 8.line in script ---*)
   716 (*--- 8.line in script ---*)
   717 val t = str2term "(SubProblem (Reals_,[univar,equation],[no_met])\
   717 val t = str2term "(SubProblem (Reals_,[univar,equation],[no_met])\
   718 		 \            [bool_ e_1, real_ v_1])";
   718 		 \            [BOOL e_1, REAL v_1])";
   719 val s = subst_atomic env t;
   719 val s = subst_atomic env t;
   720 term2str s;
   720 term2str s;
   721 "SubProblem (Reals_, [univar, equation], [no_met])\
   721 "SubProblem (Reals_, [univar, equation], [no_met])\
   722 	    \ [bool_ (a / 2 = r * sin alpha), real_ a]";
   722 	    \ [BOOL (a / 2 = r * sin alpha), REAL a]";
   723 val s_1 = str2term "[a = 2*r*sin alpha]";
   723 val s_1 = str2term "[a = 2*r*sin alpha]";
   724 val env = env @ [(str2term "s_1::bool list", s_1)];
   724 val env = env @ [(str2term "s_1::bool list", s_1)];
   725 
   725 
   726 (*--- 9.line in script ---*)
   726 (*--- 9.line in script ---*)
   727 val t = str2term "(SubProblem (Reals_,[univar,equation],[no_met])\
   727 val t = str2term "(SubProblem (Reals_,[univar,equation],[no_met])\
   728    \                    [bool_ e_2, real_ v_2])";
   728    \                    [BOOL e_2, REAL v_2])";
   729 val s = subst_atomic env t;
   729 val s = subst_atomic env t;
   730 term2str s;
   730 term2str s;
   731 "SubProblem (Reals_, [univar, equation], [no_met])\
   731 "SubProblem (Reals_, [univar, equation], [no_met])\
   732 	    \ [bool_ (b / 2 = r * cos alpha), real_ b]";
   732 	    \ [BOOL (b / 2 = r * cos alpha), REAL b]";
   733 val s_2 = str2term "[b = 2*r*cos alpha]";
   733 val s_2 = str2term "[b = 2*r*cos alpha]";
   734 val env = env @ [(str2term "s_2::bool list", s_2)];
   734 val env = env @ [(str2term "s_2::bool list", s_2)];
   735 
   735 
   736 (*--- 10.line in script ---*)
   736 (*--- 10.line in script ---*)
   737 val t = str2term 
   737 val t = str2term