equal
deleted
inserted
replaced
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 |