equal
deleted
inserted
replaced
535 goal Arith.thy "!!k. [| m: nat; n: nat |] ==> 0 < m#*n <-> 0<m & 0<n"; |
535 goal Arith.thy "!!k. [| m: nat; n: nat |] ==> 0 < m#*n <-> 0<m & 0<n"; |
536 by (best_tac (!claset addEs [natE] addss (!simpset)) 1); |
536 by (best_tac (!claset addEs [natE] addss (!simpset)) 1); |
537 qed "zero_lt_mult_iff"; |
537 qed "zero_lt_mult_iff"; |
538 |
538 |
539 goal Arith.thy "!!k. [| m: nat; n: nat |] ==> m#*n = 1 <-> m=1 & n=1"; |
539 goal Arith.thy "!!k. [| m: nat; n: nat |] ==> m#*n = 1 <-> m=1 & n=1"; |
540 by (best_tac (!claset addEs [natE] addss (!simpset)) 1); |
540 by (best_tac (!claset addEs [natE] unsafe_addss (!simpset)) 1); |
541 qed "mult_eq_1_iff"; |
541 qed "mult_eq_1_iff"; |
542 |
542 |
543 (*Cancellation law for division*) |
543 (*Cancellation law for division*) |
544 goal Arith.thy |
544 goal Arith.thy |
545 "!!k. [| 0<n; 0<k; k:nat; m:nat; n:nat |] ==> (k#*m) div (k#*n) = m div n"; |
545 "!!k. [| 0<n; 0<k; k:nat; m:nat; n:nat |] ==> (k#*m) div (k#*n) = m div n"; |
574 |
574 |
575 goal Arith.thy "!!m n. [| m = m#*n; m: nat; n: nat |] ==> n=1 | m=0"; |
575 goal Arith.thy "!!m n. [| m = m#*n; m: nat; n: nat |] ==> n=1 | m=0"; |
576 by (rtac disjCI 1); |
576 by (rtac disjCI 1); |
577 by (dtac sym 1); |
577 by (dtac sym 1); |
578 by (rtac Ord_linear_lt 1 THEN REPEAT_SOME (ares_tac [nat_into_Ord,nat_1I])); |
578 by (rtac Ord_linear_lt 1 THEN REPEAT_SOME (ares_tac [nat_into_Ord,nat_1I])); |
579 by (fast_tac (!claset addss (!simpset)) 1); |
579 by (fast_tac (!claset unsafe_addss (!simpset)) 1); |
580 by (fast_tac (le_cs addDs [mono_lemma] |
580 by (fast_tac (le_cs addDs [mono_lemma] |
581 addss (!simpset addsimps [mult_1_right])) 1); |
581 addss (!simpset addsimps [mult_1_right])) 1); |
582 qed "mult_eq_self_implies_10"; |
582 qed "mult_eq_self_implies_10"; |
583 |
583 |
584 |
584 |