equal
deleted
inserted
replaced
401 by (simp_tac (!simpset addsimps [diff_add_assoc]) 1); |
401 by (simp_tac (!simpset addsimps [diff_add_assoc]) 1); |
402 qed "diff_add_inverse2"; |
402 qed "diff_add_inverse2"; |
403 Addsimps [diff_add_inverse2]; |
403 Addsimps [diff_add_inverse2]; |
404 |
404 |
405 goal Arith.thy "!!i j k::nat. i<=j ==> (j-i=k) = (j=k+i)"; |
405 goal Arith.thy "!!i j k::nat. i<=j ==> (j-i=k) = (j=k+i)"; |
406 by (Step_tac 1); |
406 by Safe_tac; |
407 by (ALLGOALS Asm_simp_tac); |
407 by (ALLGOALS Asm_simp_tac); |
408 qed "le_imp_diff_is_add"; |
408 qed "le_imp_diff_is_add"; |
409 |
409 |
410 val [prem] = goal Arith.thy "m < Suc(n) ==> m-n = 0"; |
410 val [prem] = goal Arith.thy "m < Suc(n) ==> m-n = 0"; |
411 by (rtac (prem RS rev_mp) 1); |
411 by (rtac (prem RS rev_mp) 1); |
544 qed "mult_less_cancel1"; |
544 qed "mult_less_cancel1"; |
545 Addsimps [mult_less_cancel1, mult_less_cancel2]; |
545 Addsimps [mult_less_cancel1, mult_less_cancel2]; |
546 |
546 |
547 goal Arith.thy "!!k. 0<k ==> (m*k = n*k) = (m=n)"; |
547 goal Arith.thy "!!k. 0<k ==> (m*k = n*k) = (m=n)"; |
548 by (cut_facts_tac [less_linear] 1); |
548 by (cut_facts_tac [less_linear] 1); |
549 by (Step_tac 1); |
549 by Safe_tac; |
550 by (assume_tac 2); |
550 by (assume_tac 2); |
551 by (ALLGOALS (dtac mult_less_mono1 THEN' assume_tac)); |
551 by (ALLGOALS (dtac mult_less_mono1 THEN' assume_tac)); |
552 by (ALLGOALS Asm_full_simp_tac); |
552 by (ALLGOALS Asm_full_simp_tac); |
553 qed "mult_cancel2"; |
553 qed "mult_cancel2"; |
554 |
554 |