equal
deleted
inserted
replaced
910 |
910 |
911 fun silent_arith_tac ctxt = FIRST' [fast_arith_tac ctxt, |
911 fun silent_arith_tac ctxt = FIRST' [fast_arith_tac ctxt, |
912 ObjectLogic.full_atomize_tac THEN' (REPEAT_DETERM o rtac impI) THEN' raw_arith_tac ctxt false, |
912 ObjectLogic.full_atomize_tac THEN' (REPEAT_DETERM o rtac impI) THEN' raw_arith_tac ctxt false, |
913 more_arith_tacs ctxt]; |
913 more_arith_tacs ctxt]; |
914 |
914 |
915 fun arith_method src = |
915 val arith_method = Args.bang_facts >> |
916 Method.syntax Args.bang_facts src |
916 (fn prems => fn ctxt => METHOD (fn facts => |
917 #> (fn (prems, ctxt) => METHOD (fn facts => |
|
918 HEADGOAL (Method.insert_tac (prems @ ArithFacts.get ctxt @ facts) |
917 HEADGOAL (Method.insert_tac (prems @ ArithFacts.get ctxt @ facts) |
919 THEN' arith_tac ctxt))); |
918 THEN' arith_tac ctxt))); |
920 |
919 |
921 end; |
920 end; |
922 |
921 |
928 Simplifier.map_ss (fn ss => ss addsimprocs [fast_nat_arith_simproc] |
927 Simplifier.map_ss (fn ss => ss addsimprocs [fast_nat_arith_simproc] |
929 addSolver (mk_solver' "lin_arith" |
928 addSolver (mk_solver' "lin_arith" |
930 (add_arith_facts #> Fast_Arith.cut_lin_arith_tac))) #> |
929 (add_arith_facts #> Fast_Arith.cut_lin_arith_tac))) #> |
931 Context.mapping |
930 Context.mapping |
932 (setup_options #> |
931 (setup_options #> |
933 Method.add_methods |
932 Method.setup @{binding arith} arith_method "decide linear arithmetic" #> |
934 [("arith", arith_method, "decide linear arithmetic")] #> |
|
935 Attrib.add_attributes [("arith_split", Attrib.no_args arith_split_add, |
933 Attrib.add_attributes [("arith_split", Attrib.no_args arith_split_add, |
936 "declaration of split rules for arithmetic procedure")]) I; |
934 "declaration of split rules for arithmetic procedure")]) I; |
937 |
935 |
938 end; |
936 end; |
939 |
937 |