equal
deleted
inserted
replaced
267 (** Inequality reasoning **) |
267 (** Inequality reasoning **) |
268 |
268 |
269 Goal "(m*n = (#0::int)) = (m = #0 | n = #0)"; |
269 Goal "(m*n = (#0::int)) = (m = #0 | n = #0)"; |
270 by (stac (int_0 RS sym) 1 THEN rtac zmult_eq_int0_iff 1); |
270 by (stac (int_0 RS sym) 1 THEN rtac zmult_eq_int0_iff 1); |
271 qed "zmult_eq_0_iff"; |
271 qed "zmult_eq_0_iff"; |
|
272 |
|
273 Goal "((#0::int) = m*n) = (#0 = m | #0 = n)"; |
|
274 by (stac eq_commute 1 THEN stac zmult_eq_0_iff 1); |
|
275 by Auto_tac; |
|
276 qed "zmult_0_eq_iff"; |
|
277 |
|
278 Addsimps [zmult_eq_0_iff, zmult_0_eq_iff]; |
272 |
279 |
273 Goal "(w < z + (#1::int)) = (w<z | w=z)"; |
280 Goal "(w < z + (#1::int)) = (w<z | w=z)"; |
274 by (simp_tac (simpset() addsimps [zless_add_int_Suc_eq]) 1); |
281 by (simp_tac (simpset() addsimps [zless_add_int_Suc_eq]) 1); |
275 qed "zless_add1_eq"; |
282 qed "zless_add1_eq"; |
276 |
283 |