src/HOL/Presburger.thy
changeset 30510 4120fc59dd85
parent 30242 aea5d7fa7ef5
child 30549 d2d7874648bd
equal deleted inserted replaced
30509:e19d5b459a61 30510:4120fc59dd85
   458   fn src => Method.syntax 
   458   fn src => Method.syntax 
   459    ((Scan.optional (simple_keyword elimN >> K false) true) -- 
   459    ((Scan.optional (simple_keyword elimN >> K false) true) -- 
   460     (Scan.optional (keyword addN |-- thms) []) -- 
   460     (Scan.optional (keyword addN |-- thms) []) -- 
   461     (Scan.optional (keyword delN |-- thms) [])) src 
   461     (Scan.optional (keyword delN |-- thms) [])) src 
   462   #> (fn (((elim, add_ths), del_ths),ctxt) => 
   462   #> (fn (((elim, add_ths), del_ths),ctxt) => 
   463          Method.SIMPLE_METHOD' (Presburger.cooper_tac elim add_ths del_ths ctxt))
   463          SIMPLE_METHOD' (Presburger.cooper_tac elim add_ths del_ths ctxt))
   464 end
   464 end
   465 *} "Cooper's algorithm for Presburger arithmetic"
   465 *} "Cooper's algorithm for Presburger arithmetic"
   466 
   466 
   467 lemma [presburger, algebra]: "m mod 2 = (1::nat) \<longleftrightarrow> \<not> 2 dvd m " by presburger
   467 lemma [presburger, algebra]: "m mod 2 = (1::nat) \<longleftrightarrow> \<not> 2 dvd m " by presburger
   468 lemma [presburger, algebra]: "m mod 2 = Suc 0 \<longleftrightarrow> \<not> 2 dvd m " by presburger
   468 lemma [presburger, algebra]: "m mod 2 = Suc 0 \<longleftrightarrow> \<not> 2 dvd m " by presburger