863 subsection \<open>differentiate\<close> |
863 subsection \<open>differentiate\<close> |
864 setup \<open>KEStore_Elems.add_mets |
864 setup \<open>KEStore_Elems.add_mets |
865 [Specify.prep_met @{theory "Diff"} "met_test" [] Celem.e_metID |
865 [Specify.prep_met @{theory "Diff"} "met_test" [] Celem.e_metID |
866 (["Test"], [], |
866 (["Test"], [], |
867 {rew_ord'="tless_true",rls'=Atools_erls,calc = [], srls = Rule.e_rls, prls=Rule.e_rls, |
867 {rew_ord'="tless_true",rls'=Atools_erls,calc = [], srls = Rule.e_rls, prls=Rule.e_rls, |
868 crls=Atools_erls, errpats = [], nrls = Rule.e_rls}, "empty_script")] |
868 crls=Atools_erls, errpats = [], nrls = Rule.e_rls}, @{thm refl})] |
869 \<close> |
869 \<close> |
870 (*ok |
870 |
871 partial_function (tailrec) solve_linear :: "bool \<Rightarrow> real \<Rightarrow> bool list" |
871 partial_function (tailrec) solve_linear :: "bool \<Rightarrow> real \<Rightarrow> bool list" |
872 where |
872 where |
873 "solve_linear e_e v_v = |
873 "solve_linear e_e v_v = |
874 (let e_e = |
874 (let e_e = |
875 Repeat |
875 Repeat |
876 (((Rewrite_Set_Inst [(''bdv'', v_v)] ''isolate_bdv'' False) @@ |
876 (((Rewrite_Set_Inst [(''bdv'', v_v)] ''isolate_bdv'' False) @@ |
877 (Rewrite_Set ''Test_simplify'' False))) e_e |
877 (Rewrite_Set ''Test_simplify'' False))) e_e |
878 in [e_e])" |
878 in [e_e])" |
879 *) |
|
880 setup \<open>KEStore_Elems.add_mets |
879 setup \<open>KEStore_Elems.add_mets |
881 [Specify.prep_met thy "met_test_solvelin" [] Celem.e_metID |
880 [Specify.prep_met thy "met_test_solvelin" [] Celem.e_metID |
882 (["Test","solve_linear"], |
881 (["Test","solve_linear"], |
883 [("#Given" ,["equality e_e","solveFor v_v"]), |
882 [("#Given" ,["equality e_e","solveFor v_v"]), |
884 ("#Where" ,["matches (?a = ?b) e_e"]), |
883 ("#Where" ,["matches (?a = ?b) e_e"]), |
885 ("#Find" ,["solutions v_v'i'"])], |
884 ("#Find" ,["solutions v_v'i'"])], |
886 {rew_ord' = "e_rew_ord", rls' = tval_rls, srls = Rule.e_rls, |
885 {rew_ord' = "e_rew_ord", rls' = tval_rls, srls = Rule.e_rls, |
887 prls = assoc_rls' @{theory} "matches", calc = [], crls = tval_rls, errpats = [], |
886 prls = assoc_rls' @{theory} "matches", calc = [], crls = tval_rls, errpats = [], |
888 nrls = Test_simplify}, |
887 nrls = Test_simplify}, |
889 "Script Solve_linear (e_e::bool) (v_v::real)= " ^ |
888 @{thm solve_linear.simps} |
|
889 (*"Script Solve_linear (e_e::bool) (v_v::real)= " ^ |
890 "(let e_e = " ^ |
890 "(let e_e = " ^ |
891 " Repeat " ^ |
891 " Repeat " ^ |
892 " (((Rewrite_Set_Inst [(''bdv'',v_v::real)] ''isolate_bdv'' False) @@ " ^ |
892 " (((Rewrite_Set_Inst [(''bdv'',v_v::real)] ''isolate_bdv'' False) @@ " ^ |
893 " (Rewrite_Set ''Test_simplify'' False))) e_e" ^ |
893 " (Rewrite_Set ''Test_simplify'' False))) e_e" ^ |
894 " in [e_e::bool])")] |
894 " in [e_e::bool])"*))] |
895 \<close> |
895 \<close> |
896 subsection \<open>root equation\<close> |
896 subsection \<open>root equation\<close> |
897 (*ok |
897 |
898 partial_function (tailrec) solve_root_equ :: "bool \<Rightarrow> real \<Rightarrow> bool list" |
898 partial_function (tailrec) solve_root_equ :: "bool \<Rightarrow> real \<Rightarrow> bool list" |
899 where |
899 where |
900 "solve_root_equ e_e v_v = |
900 "solve_root_equ e_e v_v = |
901 (let e_e = |
901 (let e_e = |
902 ((While (contains_root e_e) Do |
902 ((While (contains_root e_e) Do |
923 [Rule.Calc ("Test.contains'_root",eval_contains_root "")], |
922 [Rule.Calc ("Test.contains'_root",eval_contains_root "")], |
924 prls = Rule.append_rls "prls_contains_root" Rule.e_rls |
923 prls = Rule.append_rls "prls_contains_root" Rule.e_rls |
925 [Rule.Calc ("Test.contains'_root",eval_contains_root "")], |
924 [Rule.Calc ("Test.contains'_root",eval_contains_root "")], |
926 calc=[], crls=tval_rls, errpats = [], nrls = Rule.e_rls (*,asm_rls=[], |
925 calc=[], crls=tval_rls, errpats = [], nrls = Rule.e_rls (*,asm_rls=[], |
927 asm_thm=[("square_equation_left",""), ("square_equation_right","")]*)}, |
926 asm_thm=[("square_equation_left",""), ("square_equation_right","")]*)}, |
928 "Script Solve_root_equation (e_e::bool) (v_v::real) = " ^ |
927 @{thm solve_root_equ.simps} |
|
928 (*"Script Solve_root_equation (e_e::bool) (v_v::real) = " ^ |
929 "(let e_e = " ^ |
929 "(let e_e = " ^ |
930 " ((While (contains_root e_e) Do" ^ |
930 " ((While (contains_root e_e) Do" ^ |
931 " ((Rewrite ''square_equation_left'' True) @@" ^ |
931 " ((Rewrite ''square_equation_left'' True) @@" ^ |
932 " (Try (Rewrite_Set ''Test_simplify'' False)) @@" ^ |
932 " (Try (Rewrite_Set ''Test_simplify'' False)) @@" ^ |
933 " (Try (Rewrite_Set ''rearrange_assoc'' False)) @@" ^ |
933 " (Try (Rewrite_Set ''rearrange_assoc'' False)) @@" ^ |
986 " L_L = Tac solve_equation_dummy " ^ |
986 " L_L = Tac solve_equation_dummy " ^ |
987 " in Check_elementwise L_L {(v_v::real). Assumptions})")] |
987 " in Check_elementwise L_L {(v_v::real). Assumptions})")] |
988 \<close> |
988 \<close> |
989 *) |
989 *) |
990 |
990 |
991 (*ok |
991 partial_function (tailrec) minisubpbl :: |
992 partial_function (tailrec) solve_root_equation :: |
|
993 "bool \<Rightarrow> real \<Rightarrow> bool list" |
992 "bool \<Rightarrow> real \<Rightarrow> bool list" |
994 where "minisubpbl e_e v_v = |
993 where "minisubpbl e_e v_v = |
995 (let e_e = ((Try (Rewrite_Set ''norm_equation'' False)) @@ |
994 (let e_e = ((Try (Rewrite_Set ''norm_equation'' False)) @@ |
996 (Try (Rewrite_Set ''Test_simplify'' False))) e_e; |
995 (Try (Rewrite_Set ''Test_simplify'' False))) e_e; |
997 (L_L::bool list) = |
996 (L_L::bool list) = |
998 SubProblem (''TestX'', [''LINEAR'', ''univariate'', ''equation'', ''test''], |
997 SubProblem (''TestX'', [''LINEAR'', ''univariate'', ''equation'', ''test''], |
999 [''Test'', ''solve_linear'']) [BOOL e_e, REAL v_v] |
998 [''Test'', ''solve_linear'']) [BOOL e_e, REAL v_v] |
1000 in Check_elementwise L_L {(v_v::real). Assumptions})" |
999 in Check_elementwise L_L {(v_v::real). Assumptions})" |
1001 *) |
|
1002 setup \<open>KEStore_Elems.add_mets |
1000 setup \<open>KEStore_Elems.add_mets |
1003 [Specify.prep_met thy "met_test_squ_sub" [] Celem.e_metID |
1001 [Specify.prep_met thy "met_test_squ_sub" [] Celem.e_metID |
1004 (*tests subproblem fixed linear*) |
1002 (*tests subproblem fixed linear*) |
1005 (["Test","squ-equ-test-subpbl1"], |
1003 (["Test","squ-equ-test-subpbl1"], |
1006 [("#Given" ,["equality e_e","solveFor v_v"]), |
1004 [("#Given" ,["equality e_e","solveFor v_v"]), |
1008 ("#Find" ,["solutions v_v'i'"])], |
1006 ("#Find" ,["solutions v_v'i'"])], |
1009 {rew_ord' = "e_rew_ord", rls' = tval_rls, srls = Rule.e_rls, |
1007 {rew_ord' = "e_rew_ord", rls' = tval_rls, srls = Rule.e_rls, |
1010 prls = Rule.append_rls "prls_met_test_squ_sub" Rule.e_rls |
1008 prls = Rule.append_rls "prls_met_test_squ_sub" Rule.e_rls |
1011 [Rule.Calc ("Test.precond'_rootmet", eval_precond_rootmet "")], |
1009 [Rule.Calc ("Test.precond'_rootmet", eval_precond_rootmet "")], |
1012 calc=[], crls=tval_rls, errpats = [], nrls = Test_simplify}, |
1010 calc=[], crls=tval_rls, errpats = [], nrls = Test_simplify}, |
1013 "Script Solve_root_equation (e_e::bool) (v_v::real) = " ^ |
1011 @{thm minisubpbl.simps} |
|
1012 (*"Script Solve_root_equation (e_e::bool) (v_v::real) = " ^ |
1014 " (let e_e = ((Try (Rewrite_Set ''norm_equation'' False)) @@ " ^ |
1013 " (let e_e = ((Try (Rewrite_Set ''norm_equation'' False)) @@ " ^ |
1015 " (Try (Rewrite_Set ''Test_simplify'' False))) e_e; " ^ |
1014 " (Try (Rewrite_Set ''Test_simplify'' False))) e_e; " ^ |
1016 " (L_L::bool list) = " ^ |
1015 " (L_L::bool list) = " ^ |
1017 " (SubProblem (''Test'', " ^ |
1016 " (SubProblem (''Test'', " ^ |
1018 " [''LINEAR'', ''univariate'', ''equation'', ''test''], " ^ |
1017 " [''LINEAR'', ''univariate'', ''equation'', ''test''], " ^ |
1019 " [''Test'', ''solve_linear'']) " ^ |
1018 " [''Test'', ''solve_linear'']) " ^ |
1020 " [BOOL e_e, REAL v_v]) " ^ |
1019 " [BOOL e_e, REAL v_v]) " ^ |
1021 " in Check_elementwise L_L {(v_v::real). Assumptions}) ")] |
1020 " in Check_elementwise L_L {(v_v::real). Assumptions}) "*))] |
1022 \<close> |
1021 \<close> |
1023 (*ok |
1022 |
1024 partial_function (tailrec) solve_root_equ2 :: "bool \<Rightarrow> real \<Rightarrow> bool list" |
1023 partial_function (tailrec) solve_root_equ2 :: "bool \<Rightarrow> real \<Rightarrow> bool list" |
1025 where "solve_root_equ e_e v_v = |
1024 where "solve_root_equ2 e_e v_v = |
1026 (let e_e = |
1025 (let e_e = |
1027 ((While (contains_root e_e) Do |
1026 ((While (contains_root e_e) Do |
1028 ((Rewrite ''square_equation_left'' True) @@ |
1027 ((Rewrite ''square_equation_left'' True) @@ |
1029 (Try (Rewrite_Set ''Test_simplify'' False)) @@ |
1028 (Try (Rewrite_Set ''Test_simplify'' False)) @@ |
1030 (Try (Rewrite_Set ''rearrange_assoc'' False)) @@ |
1029 (Try (Rewrite_Set ''rearrange_assoc'' False)) @@ |
1033 (Try (Rewrite_Set ''norm_equation'' False)) @@ |
1032 (Try (Rewrite_Set ''norm_equation'' False)) @@ |
1034 (Try (Rewrite_Set ''Test_simplify'' False))) e_e; |
1033 (Try (Rewrite_Set ''Test_simplify'' False))) e_e; |
1035 L_L = SubProblem (''Test'', [''LINEAR'', ''univariate'', ''equation'', ''test''], |
1034 L_L = SubProblem (''Test'', [''LINEAR'', ''univariate'', ''equation'', ''test''], |
1036 [''Test'', ''solve_linear'']) [BOOL e_e, REAL v_v] |
1035 [''Test'', ''solve_linear'']) [BOOL e_e, REAL v_v] |
1037 in Check_elementwise L_L {(v_v::real). Assumptions}) " |
1036 in Check_elementwise L_L {(v_v::real). Assumptions}) " |
1038 *) |
|
1039 setup \<open>KEStore_Elems.add_mets |
1037 setup \<open>KEStore_Elems.add_mets |
1040 [Specify.prep_met thy "met_test_eq1" [] Celem.e_metID |
1038 [Specify.prep_met thy "met_test_eq1" [] Celem.e_metID |
1041 (*root-equation1:*) |
1039 (*root-equation1:*) |
1042 (["Test","square_equation1"], |
1040 (["Test","square_equation1"], |
1043 [("#Given" ,["equality e_e","solveFor v_v"]), |
1041 [("#Given" ,["equality e_e","solveFor v_v"]), |
1045 {rew_ord'="e_rew_ord",rls'=tval_rls, |
1043 {rew_ord'="e_rew_ord",rls'=tval_rls, |
1046 srls = Rule.append_rls "srls_contains_root" Rule.e_rls |
1044 srls = Rule.append_rls "srls_contains_root" Rule.e_rls |
1047 [Rule.Calc ("Test.contains'_root",eval_contains_root"")], prls=Rule.e_rls, calc=[], crls=tval_rls, |
1045 [Rule.Calc ("Test.contains'_root",eval_contains_root"")], prls=Rule.e_rls, calc=[], crls=tval_rls, |
1048 errpats = [], nrls = Rule.e_rls(*,asm_rls=[], asm_thm=[("square_equation_left",""), |
1046 errpats = [], nrls = Rule.e_rls(*,asm_rls=[], asm_thm=[("square_equation_left",""), |
1049 ("square_equation_right","")]*)}, |
1047 ("square_equation_right","")]*)}, |
1050 "Script Solve_root_equation (e_e::bool) (v_v::real) = " ^ |
1048 @{thm solve_root_equ2.simps} |
|
1049 (*"Script Solve_root_equation (e_e::bool) (v_v::real) = " ^ |
1051 "(let e_e = " ^ |
1050 "(let e_e = " ^ |
1052 " ((While (contains_root e_e) Do" ^ |
1051 " ((While (contains_root e_e) Do" ^ |
1053 " ((Rewrite ''square_equation_left'' True) @@" ^ |
1052 " ((Rewrite ''square_equation_left'' True) @@" ^ |
1054 " (Try (Rewrite_Set ''Test_simplify'' False)) @@" ^ |
1053 " (Try (Rewrite_Set ''Test_simplify'' False)) @@" ^ |
1055 " (Try (Rewrite_Set ''rearrange_assoc'' False)) @@" ^ |
1054 " (Try (Rewrite_Set ''rearrange_assoc'' False)) @@" ^ |
1058 " (Try (Rewrite_Set ''norm_equation'' False)) @@" ^ |
1057 " (Try (Rewrite_Set ''norm_equation'' False)) @@" ^ |
1059 " (Try (Rewrite_Set ''Test_simplify'' False)))" ^ |
1058 " (Try (Rewrite_Set ''Test_simplify'' False)))" ^ |
1060 " e_e;" ^ |
1059 " e_e;" ^ |
1061 " (L_L::bool list) = (SubProblem (''Test'',[''LINEAR'',''univariate'',''equation'',''test'']," ^ |
1060 " (L_L::bool list) = (SubProblem (''Test'',[''LINEAR'',''univariate'',''equation'',''test'']," ^ |
1062 " [''Test'',''solve_linear'']) [BOOL e_e, REAL v_v])" ^ |
1061 " [''Test'',''solve_linear'']) [BOOL e_e, REAL v_v])" ^ |
1063 " in Check_elementwise L_L {(v_v::real). Assumptions})")] |
1062 " in Check_elementwise L_L {(v_v::real). Assumptions})"*))] |
1064 \<close> |
1063 \<close> |
1065 (*ok |
1064 |
1066 partial_function (tailrec) solve_root_equ3 :: "bool \<Rightarrow> real \<Rightarrow> bool list" |
1065 partial_function (tailrec) solve_root_equ3 :: "bool \<Rightarrow> real \<Rightarrow> bool list" |
1067 where |
1066 where |
1068 "solve_root_equ e_e v_v = |
1067 "solve_root_equ3 e_e v_v = |
1069 (let e_e = |
1068 (let e_e = |
1070 ((While (contains_root e_e) Do |
1069 ((While (contains_root e_e) Do |
1071 (((Rewrite ''square_equation_left'' True) Or |
1070 (((Rewrite ''square_equation_left'' True) Or |
1072 (Rewrite ''square_equation_right'' True)) @@ |
1071 (Rewrite ''square_equation_right'' True)) @@ |
1073 (Try (Rewrite_Set ''Test_simplify'' False)) @@ |
1072 (Try (Rewrite_Set ''Test_simplify'' False)) @@ |
1077 (Try (Rewrite_Set ''norm_equation'' False)) @@ |
1076 (Try (Rewrite_Set ''norm_equation'' False)) @@ |
1078 (Try (Rewrite_Set ''Test_simplify'' False))) e_e; |
1077 (Try (Rewrite_Set ''Test_simplify'' False))) e_e; |
1079 L_L = SubProblem (''Test'', [''plain_square'', ''univariate'', ''equation'', ''test''], |
1078 L_L = SubProblem (''Test'', [''plain_square'', ''univariate'', ''equation'', ''test''], |
1080 [''Test'', ''solve_plain_square'']) [BOOL e_e, REAL v_v] |
1079 [''Test'', ''solve_plain_square'']) [BOOL e_e, REAL v_v] |
1081 in Check_elementwise L_L {(v_v::real). Assumptions})" |
1080 in Check_elementwise L_L {(v_v::real). Assumptions})" |
1082 *) |
|
1083 setup \<open>KEStore_Elems.add_mets |
1081 setup \<open>KEStore_Elems.add_mets |
1084 [Specify.prep_met thy "met_test_squ2" [] Celem.e_metID |
1082 [Specify.prep_met thy "met_test_squ2" [] Celem.e_metID |
1085 (*root-equation2*) |
1083 (*root-equation2*) |
1086 (["Test","square_equation2"], |
1084 (["Test","square_equation2"], |
1087 [("#Given" ,["equality e_e","solveFor v_v"]), |
1085 [("#Given" ,["equality e_e","solveFor v_v"]), |
1089 {rew_ord'="e_rew_ord",rls'=tval_rls, |
1087 {rew_ord'="e_rew_ord",rls'=tval_rls, |
1090 srls = Rule.append_rls "srls_contains_root" Rule.e_rls |
1088 srls = Rule.append_rls "srls_contains_root" Rule.e_rls |
1091 [Rule.Calc ("Test.contains'_root",eval_contains_root"")], |
1089 [Rule.Calc ("Test.contains'_root",eval_contains_root"")], |
1092 prls=Rule.e_rls,calc=[], crls=tval_rls, errpats = [], nrls = Rule.e_rls(*,asm_rls=[], |
1090 prls=Rule.e_rls,calc=[], crls=tval_rls, errpats = [], nrls = Rule.e_rls(*,asm_rls=[], |
1093 asm_thm=[("square_equation_left",""), ("square_equation_right","")]*)}, |
1091 asm_thm=[("square_equation_left",""), ("square_equation_right","")]*)}, |
1094 "Script Solve_root_equation (e_e::bool) (v_v::real) = " ^ |
1092 @{thm solve_root_equ3.simps} |
|
1093 (*"Script Solve_root_equation (e_e::bool) (v_v::real) = " ^ |
1095 "(let e_e = " ^ |
1094 "(let e_e = " ^ |
1096 " ((While (contains_root e_e) Do" ^ |
1095 " ((While (contains_root e_e) Do" ^ |
1097 " (((Rewrite ''square_equation_left'' True) Or " ^ |
1096 " (((Rewrite ''square_equation_left'' True) Or " ^ |
1098 " (Rewrite ''square_equation_right'' True)) @@" ^ |
1097 " (Rewrite ''square_equation_right'' True)) @@" ^ |
1099 " (Try (Rewrite_Set ''Test_simplify'' False)) @@" ^ |
1098 " (Try (Rewrite_Set ''Test_simplify'' False)) @@" ^ |
1103 " (Try (Rewrite_Set ''norm_equation'' False)) @@" ^ |
1102 " (Try (Rewrite_Set ''norm_equation'' False)) @@" ^ |
1104 " (Try (Rewrite_Set ''Test_simplify'' False)))" ^ |
1103 " (Try (Rewrite_Set ''Test_simplify'' False)))" ^ |
1105 " e_e;" ^ |
1104 " e_e;" ^ |
1106 " (L_L::bool list) = (SubProblem (''Test'',[''plain_square'',''univariate'',''equation'',''test'']," ^ |
1105 " (L_L::bool list) = (SubProblem (''Test'',[''plain_square'',''univariate'',''equation'',''test'']," ^ |
1107 " [''Test'',''solve_plain_square'']) [BOOL e_e, REAL v_v])" ^ |
1106 " [''Test'',''solve_plain_square'']) [BOOL e_e, REAL v_v])" ^ |
1108 " in Check_elementwise L_L {(v_v::real). Assumptions})")] |
1107 " in Check_elementwise L_L {(v_v::real). Assumptions})"*))] |
1109 \<close> |
1108 \<close> |
1110 (*ok |
1109 |
1111 partial_function (tailrec) solve_root_equ4 :: "bool \<Rightarrow> real \<Rightarrow> bool list" |
1110 partial_function (tailrec) solve_root_equ4 :: "bool \<Rightarrow> real \<Rightarrow> bool list" |
1112 where |
1111 where |
1113 "solve_root_equ e_e v_v = |
1112 "solve_root_equ4 e_e v_v = |
1114 (let e_e = |
1113 (let e_e = |
1115 ((While (contains_root e_e) Do |
1114 ((While (contains_root e_e) Do |
1116 (((Rewrite ''square_equation_left'' True) Or |
1115 (((Rewrite ''square_equation_left'' True) Or |
1117 (Rewrite ''square_equation_right'' True)) @@ |
1116 (Rewrite ''square_equation_right'' True)) @@ |
1118 (Try (Rewrite_Set ''Test_simplify'' False)) @@ |
1117 (Try (Rewrite_Set ''Test_simplify'' False)) @@ |
1134 {rew_ord'="e_rew_ord",rls'=tval_rls, |
1132 {rew_ord'="e_rew_ord",rls'=tval_rls, |
1135 srls = Rule.append_rls "srls_contains_root" Rule.e_rls |
1133 srls = Rule.append_rls "srls_contains_root" Rule.e_rls |
1136 [Rule.Calc ("Test.contains'_root",eval_contains_root"")], |
1134 [Rule.Calc ("Test.contains'_root",eval_contains_root"")], |
1137 prls=Rule.e_rls,calc=[], crls=tval_rls, errpats = [], nrls = Rule.e_rls (*,asm_rls=[], |
1135 prls=Rule.e_rls,calc=[], crls=tval_rls, errpats = [], nrls = Rule.e_rls (*,asm_rls=[], |
1138 asm_thm=[("square_equation_left",""), ("square_equation_right","")]*)}, |
1136 asm_thm=[("square_equation_left",""), ("square_equation_right","")]*)}, |
1139 "Script Solve_root_equation (e_e::bool) (v_v::real) = " ^ |
1137 @{thm solve_root_equ4.simps} |
|
1138 (*"Script Solve_root_equation (e_e::bool) (v_v::real) = " ^ |
1140 "(let e_e = " ^ |
1139 "(let e_e = " ^ |
1141 " ((While (contains_root e_e) Do" ^ |
1140 " ((While (contains_root e_e) Do" ^ |
1142 " (((Rewrite ''square_equation_left'' True) Or" ^ |
1141 " (((Rewrite ''square_equation_left'' True) Or" ^ |
1143 " (Rewrite ''square_equation_right'' True)) @@" ^ |
1142 " (Rewrite ''square_equation_right'' True)) @@" ^ |
1144 " (Try (Rewrite_Set ''Test_simplify'' False)) @@" ^ |
1143 " (Try (Rewrite_Set ''Test_simplify'' False)) @@" ^ |
1148 " (Try (Rewrite_Set ''norm_equation'' False)) @@" ^ |
1147 " (Try (Rewrite_Set ''norm_equation'' False)) @@" ^ |
1149 " (Try (Rewrite_Set ''Test_simplify'' False)))" ^ |
1148 " (Try (Rewrite_Set ''Test_simplify'' False)))" ^ |
1150 " e_e;" ^ |
1149 " e_e;" ^ |
1151 " (L_L::bool list) = (SubProblem (''Test'',[''univariate'',''equation'',''test'']," ^ |
1150 " (L_L::bool list) = (SubProblem (''Test'',[''univariate'',''equation'',''test'']," ^ |
1152 " [''no_met'']) [BOOL e_e, REAL v_v])" ^ |
1151 " [''no_met'']) [BOOL e_e, REAL v_v])" ^ |
1153 " in Check_elementwise L_L {(v_v::real). Assumptions})")] |
1152 " in Check_elementwise L_L {(v_v::real). Assumptions})"*))] |
1154 \<close> |
1153 \<close> |
1155 (*ok |
1154 |
1156 partial_function (tailrec) solve_plain_square :: "bool \<Rightarrow> real \<Rightarrow> bool list" |
1155 partial_function (tailrec) solve_plain_square :: "bool \<Rightarrow> real \<Rightarrow> bool list" |
1157 where |
1156 where |
1158 "solve_plain_square e_e v_v = |
1157 "solve_plain_square e_e v_v = |
1159 (let e_e = ((Try (Rewrite_Set ''isolate_bdv'' False)) @@ |
1158 (let e_e = ((Try (Rewrite_Set ''isolate_bdv'' False)) @@ |
1160 (Try (Rewrite_Set ''Test_simplify'' False)) @@ |
1159 (Try (Rewrite_Set ''Test_simplify'' False)) @@ |
1161 ((Rewrite ''square_equality_0'' False) Or |
1160 ((Rewrite ''square_equality_0'' False) Or |
1162 (Rewrite ''square_equality'' True)) @@ |
1161 (Rewrite ''square_equality'' True)) @@ |
1163 (Try (Rewrite_Set ''tval_rls'' False))) e_e |
1162 (Try (Rewrite_Set ''tval_rls'' False))) e_e |
1164 in Or_to_List e_e)" |
1163 in Or_to_List e_e)" |
1165 *) |
|
1166 setup \<open>KEStore_Elems.add_mets |
1164 setup \<open>KEStore_Elems.add_mets |
1167 [Specify.prep_met thy "met_test_eq_plain" [] Celem.e_metID |
1165 [Specify.prep_met thy "met_test_eq_plain" [] Celem.e_metID |
1168 (*solve_plain_square*) |
1166 (*solve_plain_square*) |
1169 (["Test","solve_plain_square"], |
1167 (["Test","solve_plain_square"], |
1170 [("#Given",["equality e_e","solveFor v_v"]), |
1168 [("#Given",["equality e_e","solveFor v_v"]), |
1174 "(matches ( v_v ^^^2 = 0) e_e)"]), |
1172 "(matches ( v_v ^^^2 = 0) e_e)"]), |
1175 ("#Find" ,["solutions v_v'i'"])], |
1173 ("#Find" ,["solutions v_v'i'"])], |
1176 {rew_ord'="e_rew_ord",rls'=tval_rls,calc=[],srls=Rule.e_rls, |
1174 {rew_ord'="e_rew_ord",rls'=tval_rls,calc=[],srls=Rule.e_rls, |
1177 prls = assoc_rls' @{theory} "matches", crls=tval_rls, errpats = [], nrls = Rule.e_rls(*, |
1175 prls = assoc_rls' @{theory} "matches", crls=tval_rls, errpats = [], nrls = Rule.e_rls(*, |
1178 asm_rls=[],asm_thm=[]*)}, |
1176 asm_rls=[],asm_thm=[]*)}, |
1179 "Script Solve_plain_square (e_e::bool) (v_v::real) = " ^ |
1177 @{thm solve_plain_square.simps} |
|
1178 (*"Script Solve_plain_square (e_e::bool) (v_v::real) = " ^ |
1180 " (let e_e = ((Try (Rewrite_Set ''isolate_bdv'' False)) @@ " ^ |
1179 " (let e_e = ((Try (Rewrite_Set ''isolate_bdv'' False)) @@ " ^ |
1181 " (Try (Rewrite_Set ''Test_simplify'' False)) @@ " ^ |
1180 " (Try (Rewrite_Set ''Test_simplify'' False)) @@ " ^ |
1182 " ((Rewrite ''square_equality_0'' False) Or " ^ |
1181 " ((Rewrite ''square_equality_0'' False) Or " ^ |
1183 " (Rewrite ''square_equality'' True)) @@ " ^ |
1182 " (Rewrite ''square_equality'' True)) @@ " ^ |
1184 " (Try (Rewrite_Set ''tval_rls'' False))) e_e " ^ |
1183 " (Try (Rewrite_Set ''tval_rls'' False))) e_e " ^ |
1185 " in ((Or_to_List e_e)::bool list))")] |
1184 " in ((Or_to_List e_e)::bool list))"*))] |
1186 \<close> |
1185 \<close> |
1187 subsection \<open>polynomial equation\<close> |
1186 subsection \<open>polynomial equation\<close> |
1188 (*ok |
1187 |
1189 partial_function (tailrec) norm_univariate_equ :: "bool \<Rightarrow> real \<Rightarrow> bool list" |
1188 partial_function (tailrec) norm_univariate_equ :: "bool \<Rightarrow> real \<Rightarrow> bool list" |
1190 where |
1189 where |
1191 "norm_univariate_equ e_e v_v = |
1190 "norm_univariate_equ e_e v_v = |
1192 (let e_e = ((Try (Rewrite ''rnorm_equation_add'' False)) @@ |
1191 (let e_e = ((Try (Rewrite ''rnorm_equation_add'' False)) @@ |
1193 (Try (Rewrite_Set ''Test_simplify'' False))) e_e |
1192 (Try (Rewrite_Set ''Test_simplify'' False))) e_e |
1194 in SubProblem (''Test'', [''univariate'', ''equation'', ''test''], |
1193 in SubProblem (''Test'', [''univariate'', ''equation'', ''test''], |
1195 [''no_met'']) [BOOL e_e, REAL v_v])" |
1194 [''no_met'']) [BOOL e_e, REAL v_v])" |
1196 *) |
|
1197 setup \<open>KEStore_Elems.add_mets |
1195 setup \<open>KEStore_Elems.add_mets |
1198 [Specify.prep_met thy "met_test_norm_univ" [] Celem.e_metID |
1196 [Specify.prep_met thy "met_test_norm_univ" [] Celem.e_metID |
1199 (["Test","norm_univar_equation"], |
1197 (["Test","norm_univar_equation"], |
1200 [("#Given",["equality e_e","solveFor v_v"]), |
1198 [("#Given",["equality e_e","solveFor v_v"]), |
1201 ("#Where" ,[]), |
1199 ("#Where" ,[]), |
1202 ("#Find" ,["solutions v_v'i'"])], |
1200 ("#Find" ,["solutions v_v'i'"])], |
1203 {rew_ord'="e_rew_ord",rls'=tval_rls,srls = Rule.e_rls,prls=Rule.e_rls, calc=[], crls=tval_rls, |
1201 {rew_ord'="e_rew_ord",rls'=tval_rls,srls = Rule.e_rls,prls=Rule.e_rls, calc=[], crls=tval_rls, |
1204 errpats = [], nrls = Rule.e_rls}, |
1202 errpats = [], nrls = Rule.e_rls}, |
1205 "Script Norm_univar_equation (e_e::bool) (v_v::real) = " ^ |
1203 @{thm norm_univariate_equ.simps} |
|
1204 (*"Script Norm_univar_equation (e_e::bool) (v_v::real) = " ^ |
1206 " (let e_e = ((Try (Rewrite ''rnorm_equation_add'' False)) @@ " ^ |
1205 " (let e_e = ((Try (Rewrite ''rnorm_equation_add'' False)) @@ " ^ |
1207 " (Try (Rewrite_Set ''Test_simplify'' False))) e_e " ^ |
1206 " (Try (Rewrite_Set ''Test_simplify'' False))) e_e " ^ |
1208 " in (SubProblem (''Test'',[''univariate'',''equation'',''test''], " ^ |
1207 " in (SubProblem (''Test'',[''univariate'',''equation'',''test''], " ^ |
1209 " [''no_met'']) [BOOL e_e, REAL v_v]))")] |
1208 " [''no_met'']) [BOOL e_e, REAL v_v]))"*))] |
1210 \<close> |
1209 \<close> |
1211 subsection \<open>diophantine equation\<close> |
1210 subsection \<open>diophantine equation\<close> |
1212 (*ok |
1211 |
1213 partial_function (tailrec) test_simplify :: "int \<Rightarrow> int" |
1212 partial_function (tailrec) test_simplify :: "int \<Rightarrow> int" |
1214 where |
1213 where |
1215 "test_simplify t_t = |
1214 "test_simplify t_t = |
1216 (Repeat |
1215 (Repeat |
1217 ((Try (Calculate ''PLUS'')) @@ |
1216 ((Try (Calculate ''PLUS'')) @@ |
1218 (Try (Calculate ''TIMES''))) t_t)" |
1217 (Try (Calculate ''TIMES''))) t_t)" |
1219 *) |
|
1220 setup \<open>KEStore_Elems.add_mets |
1218 setup \<open>KEStore_Elems.add_mets |
1221 [Specify.prep_met thy "met_test_intsimp" [] Celem.e_metID |
1219 [Specify.prep_met thy "met_test_intsimp" [] Celem.e_metID |
1222 (["Test","intsimp"], |
1220 (["Test","intsimp"], |
1223 [("#Given" ,["intTestGiven t_t"]), |
1221 [("#Given" ,["intTestGiven t_t"]), |
1224 ("#Where" ,[]), |
1222 ("#Where" ,[]), |
1225 ("#Find" ,["intTestFind s_s"])], |
1223 ("#Find" ,["intTestFind s_s"])], |
1226 {rew_ord' = "e_rew_ord", rls' = tval_rls, srls = Rule.e_rls, prls = Rule.e_rls, calc = [], |
1224 {rew_ord' = "e_rew_ord", rls' = tval_rls, srls = Rule.e_rls, prls = Rule.e_rls, calc = [], |
1227 crls = tval_rls, errpats = [], nrls = Test_simplify}, |
1225 crls = tval_rls, errpats = [], nrls = Test_simplify}, |
1228 "Script STest_simplify (t_t::int) = " ^ |
1226 @{thm test_simplify.simps} |
|
1227 (*"Script STest_simplify (t_t::int) = " ^ |
1229 "(Repeat " ^ |
1228 "(Repeat " ^ |
1230 " ((Try (Calculate ''PLUS'')) @@ " ^ |
1229 " ((Try (Calculate ''PLUS'')) @@ " ^ |
1231 " (Try (Calculate ''TIMES''))) t_t::int)")] |
1230 " (Try (Calculate ''TIMES''))) t_t::int)"*))] |
1232 \<close> |
1231 \<close> |
1233 |
1232 |
1234 end |
1233 end |