src/HOL/Tools/lin_arith.ML
changeset 30515 bca05b17b618
parent 30510 4120fc59dd85
child 30528 7173bf123335
equal deleted inserted replaced
30514:9455ecc7796d 30515:bca05b17b618
   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