neuper@37906: (* tests for ME/script.sml neuper@37906: WN.13.3.00 neuper@37906: neuper@37906: WN050908 OLD FILE, MERGE WITH smltest/ME/script.sml neuper@37906: neuper@37906: use"systest/script.sml"; neuper@37906: use"script.sml"; neuper@37906: *) neuper@37906: neuper@37906: neuper@37906: " scripts: Variante 'funktional' "; neuper@37906: "############## Make_fun_by_new_variable ##############"; neuper@37906: "############## Make_fun_by_explicit ##############"; neuper@37906: "################ Solve_root_equation #################"; neuper@37906: "------- Notlocatable: Free_Solve -------"; neuper@37906: neuper@37906: " --- test100: nxt_tac order------------------------------------ "; neuper@37906: " --- test100: order 1 3 1 2 ----------------------------------- "; neuper@37906: " --- test200: nxt_tac order ------------------------------------- "; neuper@37906: " --- test200: order 3 1 1 2 --------------------------------- "; neuper@37906: neuper@37906: " --- root-equation: nxt_tac order------------------------------ "; neuper@37906: " --- root-equation: 1.norm_equation ------------------------------ "; neuper@37906: (* --- test200: calculate -----------------------------------------*) neuper@37906: " --- check_elementwise ------------------------------ "; neuper@37906: neuper@37906: " --- test 30.4.02 Testterm: Repeat Repeat Or ------------------ "; walther@59637: " --- test 9.5.02 Testeq: While Try Repeat #> ------------------ "; neuper@37906: walther@59823: "--------- from_prog ---------------------------------------------"; neuper@37906: "-----------------------------------------------------------------"; neuper@37906: neuper@37906: neuper@37906: neuper@37906: neuper@37906: neuper@37906: " ################################################# 6.5.03"; neuper@37906: " scripts: Variante 'funktional' 6.5.03"; neuper@37906: " ################################################# 6.5.03 "; neuper@37906: Walther@60458: val c = (the o (TermC.parse Diff_App.thy)) wneuper@59585: "Program Maximum_value(fix_::bool list)(m_::real) (rs_::bool list)\ neuper@37906: \ (v_::real) (itv_::real set) (err_::bool) = \ neuper@37981: \ (let e_e = (hd o (filterVar m_)) rs_; \ neuper@37906: \ t_ = (if 1 < length_ rs_ \ wneuper@59476: \ then (SubProblem (Reals_s,[make,function],[no_met])\ neuper@37984: \ [REAL m_, REAL v_v, BOOL_LIST rs_])\ neuper@37906: \ else (hd rs_)); \ wneuper@59476: \ (mx_::real) = SubProblem (Reals_s,[on_interval,max_of,function], \ neuper@37906: \ [Isac,maximum_on_interval])\ neuper@37984: \ [BOOL t_, REAL v_v, REAL_SET itv_]\ wneuper@59476: \ in ((SubProblem (Reals_s,[find_values,tool],[Isac,find_values]) \ neuper@37984: \ [REAL mx_, REAL (Rhs t_), REAL v_v, REAL m_, \ neuper@37984: \ BOOL_LIST (dropWhile (ident e_e) rs_)])::bool list))"; neuper@37906: neuper@37906: neuper@37906: "################################################### 6.5.03"; neuper@37906: "############## Make_fun_by_new_variable ########### 6.5.03"; neuper@37906: "################################################### 6.5.03"; neuper@37906: Walther@60458: val sc = (the o (TermC.parse Diff_App.thy)) (*start interpretieren*) wneuper@59585: "Program Make_fun_by_new_variable (f_::real) (v_::real) \ neuper@37906: \ (eqs_::bool list) = \ neuper@37906: \(let h_ = (hd o (filterVar f_)) eqs_; \ neuper@37906: \ es_ = dropWhile (ident h_) eqs_; \ neuper@37906: \ vs_ = dropWhile (ident f_) (Vars h_); \ neuper@37906: \ v_1 = nth_ 1 vs_; \ neuper@37906: \ v_2 = nth_ 2 vs_; \ neuper@37906: \ e_1 = (hd o (filterVar v_1)) es_; \ neuper@37906: \ e_2 = (hd o (filterVar v_2)) es_; \ wneuper@59476: \ (s_1::bool list) = (SubProblem (Reals_s,[univar,equation],[no_met])\ neuper@37984: \ [BOOL e_1, REAL v_1]);\ wneuper@59476: \ (s_2::bool list) = (SubProblem (Reals_s,[univar,equation],[no_met])\ neuper@37984: \ [BOOL e_2, REAL v_2])\ neuper@37906: \in Substitute [(v_1 = (rhs o hd) s_1),(v_2 = (rhs o hd) s_2)] h_)"; neuper@37906: Walther@60458: val ags = map (Thm.term_of o the o (TermC.parse Diff_App.thy)) neuper@37906: ["A::real", "alpha::real", wneuper@59582: "[A=a*b, a/2=r*sin alpha, b/2=r*cos (alpha::real)]"]; neuper@37906: val ll = [](*:loc_*); neuper@37906: (* problem with exn PTREE + eval_to ------------------------- neuper@37906: "-------------- subproblem with empty formalizaton -------"; neuper@37906: val (mI1,m1) = neuper@37906: ("Subproblem", tac2tac_ pt p walther@59997: (Subproblem (("Reals",["univar", "equation", "test"], neuper@37906: (""(*"ANDERN !!!!!!!*),"no_met")),[]))); neuper@37906: val (mI2,m2) = (mI1,m1); neuper@37906: val (mI3,m3) = neuper@37906: ("Substitute", tac2tac_ pt p walther@59997: (Substitute [("a", "#2*r*sin alpha"),("b", "#2*r*cos alpha")])); neuper@37906: "------- same_tacpbl + eval_to -------"; neuper@37926: val SOME(l1,t1) = same_tacpbl sc ll (mI1,m1); neuper@37906: loc_2str l1; neuper@37906: (*"[R, R, D, R, D, R, D, R, D, R, D, R, D, R, D, L, R]"*) Walther@60458: Syntax.string_of_term (ThyC.id_to_ctxt "Diff_App") t1; neuper@37906: (*"solve_univar (Reals, [univar, equation], no_met) B.1 B.3 "?6 ?4 *) neuper@37906: neuper@37926: val SOME(l2,t2) = same_tacpbl sc l1 (mI2,m2); neuper@37906: loc_2str l2; neuper@37906: (*"[R, R, D, R, D, R, D, R, D, R, D, R, D, R, D, R, D, L, R]"*) Walther@60458: Syntax.string_of_term (ThyC.id_to_ctxt "Diff_App") t2; neuper@37906: (*"solve_univar (Reals, [univar, equation], no_met) B.1 B.3 "?7 ?3 *) neuper@37906: neuper@37926: val SOME(l3,t3) = same_tacpbl sc l2 (mI3,m3); neuper@37906: loc_2str l3; neuper@37906: (*"[R, R, D, R, D, R, D, R, D, R, D, R, D, R, D, R, D, R, D]"*) Walther@60458: Syntax.string_of_term (ThyC.id_to_ctxt "Diff_App") t3; neuper@37906: (*"Substitute [(v_1, (Rhs o hd) B.1), (v_2, (Rhs o hd) B.0)] B.8"*) neuper@37906: neuper@37906: neuper@37906: "------- eq_tacIDs + eq_consts + eval_args -------"; neuper@37906: val eq_ids = eq_tacIDs (*start-loc_*)[] sc (mI,m) []; neuper@37906: val eq_cons = filter (eq_consts m) eq_ids; neuper@37906: val Ready (l,(_,m)::_,_) = eval_args sc (mI,m) [(1,ags)] eq_cons; neuper@37906: "------- locate -------"; neuper@37906: neuper@37906: neuper@37906: "-------------- subproblem with formalizaton -------"; neuper@37906: val (mI,m) = neuper@37906: ("Subproblem", tac2tac_ pt [] walther@59997: (Subproblem (("Reals",["univar", "equation", "test"], neuper@37906: (""(*"ANDERN !!!!!!!*),"no_met")), walther@59997: ["a//#2=r*sin alpha", "a"]))); neuper@37906: "------- same_tacpbl + eval_to -------"; neuper@37906: neuper@37906: neuper@37906: "------- eq_tacIDs + eq_consts + eval_args -------"; neuper@37906: val eq_ids = eq_tacIDs [] sc (mI,m) []; neuper@37906: val eq_cons = filter (eq_consts m) eq_ids; neuper@37906: val Ready (l,(_,m)::_,_) = eval_args sc (mI,m) [(1,ags)] eq_cons; neuper@37906: neuper@37906: neuper@37906: "------- locate -------"; neuper@37906: -------------------------------------------------------*) neuper@37906: (* use"ME/script.sml"; neuper@37906: use"test-script.sml"; neuper@37906: *) neuper@37906: neuper@37906: neuper@37906: neuper@37906: "############## Make_fun_by_explicit ############## 6.5.03"; neuper@37906: "############## Make_fun_by_explicit ############## 6.5.03"; neuper@37906: "############## Make_fun_by_explicit ############## 6.5.03"; Walther@60458: val c = (the o (TermC.parse Diff_App.thy)) wneuper@59585: "Program Make_fun_by_explicit (f_::real) (v_::real) \ neuper@37906: \ (eqs_::bool list) = \ neuper@37906: \ (let h_ = (hd o (filterVar f_)) eqs_; \ neuper@37906: \ e_1 = hd (dropWhile (ident h_) eqs_); \ neuper@37906: \ vs_ = dropWhile (ident f_) (Vars h_); \ neuper@37981: \ v_1 = hd (dropWhile (ident v_v) vs_); \ wneuper@59476: \ (s_1::bool list)=(SubProblem(Reals_s,[univar,equation],[no_met])\ neuper@37984: \ [BOOL e_1, REAL v_1])\ neuper@37906: \ in Substitute [(v_1 = (rhs o hd) s_1)] h_)"; neuper@37906: neuper@37906: neuper@37906: (*#####################################################--------11.5.02 neuper@37906: "################ Solve_root_equation #################"; neuper@37906: (*#####################################################*) walther@60230: val sc = (Thm.term_of o the o (TermC.parse Test.thy)) wneuper@59585: "Program Solve_root_equation (eq_::bool) (v_::real) (err_::bool) =\ neuper@37981: \ (let e_e = Rewrite square_equation_left True eq_; \ neuper@37981: \ e_e = Rewrite_Set Test_simplify False e_; \ neuper@37981: \ e_e = Rewrite_Set rearrange_assoc False e_; \ neuper@37981: \ e_e = Rewrite_Set isolate_root False e_; \ neuper@37981: \ e_e = Rewrite_Set Test_simplify False e_; \ neuper@37906: neuper@37981: \ e_e = Rewrite square_equation_left True e_; \ neuper@37981: \ e_e = Rewrite_Set Test_simplify False e_; \ neuper@37906: neuper@37981: \ e_e = Rewrite_Set norm_equation False e_; \ neuper@37981: \ e_e = Rewrite_Set Test_simplify False e_; \ wneuper@59497: \ e_e = Rewrite_Set_Inst [(''bdv'',v_)] isolate_bdv False e_;\ neuper@37981: \ e_e = Rewrite_Set Test_simplify False e_e \ neuper@37906: \ in [e_::bool])"; walther@60230: val ags = map (Thm.term_of o the o (TermC.parse Test.thy)) walther@59997: ["sqrt(#9+#4*x)=sqrt x + sqrt(#5+x)", "x::real", "#0"]; neuper@37906: val fmz = neuper@37906: ["equality (sqrt(#9+#4*x)=sqrt x + sqrt(#5+x))", walther@59997: "solveFor x", "errorBound (eps = #0)", "solutions v_i_"]; neuper@37906: ----------------------------------------------------------------11.5.02...*) neuper@37906: neuper@37906: walther@59814: (*################################# me raises exception with not-locatable neuper@37906: "--------------------- Notlocatable: Free_Solve ---------------------"; neuper@37906: "--------------------- Notlocatable: Free_Solve ---------------------"; neuper@37906: "--------------------- Notlocatable: Free_Solve ---------------------"; neuper@37906: val fmz = []; neuper@37906: val (dI',pI',mI') = walther@59997: ("Test",["sqroot-test", "univariate", "equation", "test"], walther@59997: ["Test", "sqrt-equ-test"]); Walther@60571: val (p,_,f,nxt,_,pt) = Test_Code.init_calc @{context} [(fmz, (dI',pI',mI'))]; neuper@37906: val nxt = ("Model_Problem", walther@59997: Model_Problem ["sqroot-test", "univariate", "equation", "test"]); neuper@37906: val (p,_,f,nxt,_,pt) = me nxt p [1] pt; neuper@37906: val nxt = neuper@37906: ("Add_Given", neuper@37906: Add_Given "equality (sqrt (9 + 4 * x) = sqrt x + sqrt (5 + x))"); neuper@37906: val (p,_,f,nxt,_,pt) = me nxt p [1] pt; neuper@37906: val nxt = ("Add_Given",Add_Given "solveFor x"); neuper@37906: val (p,_,f,nxt,_,pt) = me nxt p [1] pt; neuper@37906: val nxt = ("Add_Given",Add_Given "errorBound (eps = 0)"); neuper@37906: val (p,_,f,nxt,_,pt) = me nxt p [1] pt; neuper@37906: val nxt = ("Add_Find",Add_Find "solutions v_i_"); neuper@37906: val (p,_,f,nxt,_,pt) = me nxt p [1] pt; neuper@38058: val nxt = ("Specify_Theory",Specify_Theory "Test"); neuper@37906: val (p,_,f,nxt,_,pt) = me nxt p [1] pt; neuper@37906: val nxt = walther@59997: ("Specify_Problem",Specify_Problem ["sqroot-test", "univariate", "equation", "test"]); neuper@37906: val (p,_,f,nxt,_,pt) = me nxt p [1] pt; walther@59997: val nxt = ("Specify_Method",Specify_Method ["Test", "sqrt-equ-test"]); neuper@37906: val (p,_,f,nxt,_,pt) = me nxt p [1] pt; neuper@37906: neuper@37906: "--- -1 ---"; neuper@37906: val nxt = ("Free_Solve",Free_Solve); neuper@37906: val (p,_,f,nxt,_,pt) = me nxt p [] pt; neuper@37906: neuper@37906: "--- 0 ---"; neuper@37906: val nxt = ("Take",Take "sqrt(9+4*x)=sqrt x + sqrt(5+x)"); neuper@37906: val (p,_,f,nxt,_,pt) = me nxt p [] pt; neuper@37906: (*me ("Begin_Trans" ////*) neuper@37906: neuper@37906: "--- 1 ---"; walther@59997: val nxt = ("Rewrite_Asm",Rewrite_Asm ("square_equation_left", "")); neuper@37906: val (p,_,f,nxt,_,pt) = me nxt p [] pt; neuper@37906: neuper@37906: "--- 2 ---"; neuper@37906: val nxt = ("Rewrite_Set",Rewrite_Set "Test_simplify"); neuper@37906: val (p,_,f,nxt,_,pt) = me nxt p [] pt; neuper@37906: neuper@37906: "--- 3 ---"; neuper@37906: val nxt = ("Rewrite_Set",Rewrite_Set "rearrange_assoc"); neuper@37906: val (p,_,f,nxt,_,pt) = me nxt p [] pt; neuper@37906: if f = Form' walther@59959: (Test_Out.FormKF neuper@37906: (~1,EdUndef,1,Nundef, walther@60242: "9 + 4 * x = 5 + 2 * x + 2 * sqrt (x \ 2 + 5 * x)")) neuper@38031: then () else error "behaviour in root-expl. Free_Solve changed"; Walther@60608: writeln (pr_ctree ctxt pr_short pt); walther@59814: ---------------------------------me raises exception with not-locatable*) neuper@37906: neuper@37906: walther@59852: val d = Rule_Set.empty; neuper@37906: neuper@37906: " --- test100: nxt_tac order------------------------------------ "; neuper@37906: " --- test100: nxt_tac order------------------------------------ "; neuper@37906: Walther@60586: val program as (Prog sc) = Prog (((inst_abs Test.thy) walther@60230: o Thm.term_of o the o (TermC.parse thy)) wneuper@59585: "Program Testeq (e_e::bool) = \ neuper@37981: \(While (contains_root e_e) Do \ walther@59637: \((Try (Repeat (Rewrite rroot_square_inv))) #> \ walther@59637: \ (Try (Repeat (Rewrite square_equation_left))) #> \ walther@59635: \ (Try (Repeat (Rewrite radd_0)))))\ neuper@37981: \ e_e "); Walther@60650: TermC.atom_trace_detail @{context} sc; walther@59997: val (dI',pI',mI') = ("Test",["sqroot-test", "univariate", "equation", "test"], walther@59997: ["Test", "sqrt-equ-test"]); walther@59926: val c = []; Walther@60571: val (p,_,_,_,_,pt) = Test_Code.init_calc @{context} [([], (dI',pI',mI')))]; neuper@38058: val nxt = ("Specify_Theory",Specify_Theory "Test"); neuper@37906: val (p,_,_,_,_,pt) = me nxt p c pt; walther@59997: val nxt = ("Specify_Method",Specify_Method ["Test", "sqrt-equ-test"]); (*for asm in square_equation_left*) neuper@37906: val (p,_,_,_,_,pt) = me nxt p c pt; neuper@37906: val p = ([1],Res):pos'; walther@60230: val eq_ = (Thm.term_of o the o (TermC.parse thy))"e_::bool"; neuper@37906: walther@60242: val ct = "0+(sqrt(sqrt(sqrt a)) \ 2) \ 2=0"; walther@60340: val ve0_= (Thm.term_of o the o (TermC.parse thy)) ct; walther@59997: val ets0=[([],(Tac_(Program.thy,"BS", "", ""),[(eq_,ve0_)],[(eq_,ve0_)], walther@59861: TermC.empty,TermC.empty,Safe)), walther@59861: ([],(User', [], [], TermC.empty, TermC.empty,Sundef))]:ets; neuper@37906: val l0 = []; neuper@37906: " --------------- 1. ---------------------------------------------"; Walther@60565: val (pt,_) = cappend_atomic pt[1]Istate.empty TermC.empty(Rewrite("test", ""))(TermC.parse_test @{context} ct,[])Complete; neuper@37906: (*12.10.03:*** Unknown theorem(s) "rroot_square_inv" walther@59997: val Applicable.Yes m' = Step.check (Rewrite("rroot_square_inv", "")) (pt, p); neuper@37906: *) neuper@37906: neuper@37906: Walther@60586: val program as (Prog sc) = walther@60230: Prog (((inst_abs Test.thy) o Thm.term_of o the o (TermC.parse thy)) wneuper@59585: "Program Testterm (g_::real) = (Calculate cancel g_)"); neuper@37906: (* Walther@60586: val program as (Prog sc) = walther@60230: Prog (((inst_abs Test.thy) o Thm.term_of o the o (TermC.parse thy)) wneuper@59585: "Program Testterm (g_::real) = (Calculate power g_)"); Walther@60586: val program as (Prog sc) = walther@60230: Prog (((inst_abs Test.thy) o Thm.term_of o the o (TermC.parse thy)) wneuper@59585: "Program Testterm (g_::real) = (Calculate pow g_)"); neuper@37906: ..............................................................*) neuper@37906: writeln neuper@37906: "%%%%%%%%%%TODO 7.9.00---vvvvvv--- conflicts with Isa-types \n\ neuper@37906: \ (Repeat (Calculate cancel g_)) Or \n\ neuper@37906: \ (Repeat (Calculate power g_)) Or \n\ walther@60242: \%%%%%%%%%%%%%%%%%%%%%--- \ \ --- conflicts with Isa-types \n\ neuper@37906: \%%%%%%%%%%%%%%%%%%%%%TODO before Detail Rewrite_Set"; neuper@37906: neuper@37906: walther@59823: "--------- from_prog ---------------------------------------------"; walther@59823: "--------- from_prog ---------------------------------------------"; walther@59823: "--------- from_prog ---------------------------------------------"; neuper@42438: (* mv test/../script.sml: -----> *) walther@59823: "----------- fun from_prog ---------------------------------------" neuper@37906: