105 by (case_tac "k<n" 1); |
105 by (case_tac "k<n" 1); |
106 by (ALLGOALS (asm_simp_tac(simpset() addsimps ([add_assoc] @ |
106 by (ALLGOALS (asm_simp_tac(simpset() addsimps ([add_assoc] @ |
107 [mod_less, mod_geq, div_less, div_geq, |
107 [mod_less, mod_geq, div_less, div_geq, |
108 add_diff_inverse, diff_less])))); |
108 add_diff_inverse, diff_less])))); |
109 qed "mod_div_equality"; |
109 qed "mod_div_equality"; |
|
110 |
|
111 (* a simple rearrangement of mod_div_equality: *) |
|
112 goal thy "!!k. 0<k ==> k*(m div k) = m - (m mod k)"; |
|
113 by(dres_inst_tac [("m","m")] mod_div_equality 1); |
|
114 by (EVERY1[etac subst, simp_tac (simpset() addsimps mult_ac), |
|
115 K(IF_UNSOLVED no_tac)]); |
|
116 qed "mult_div_cancel"; |
110 |
117 |
111 goal thy "m div 1 = m"; |
118 goal thy "m div 1 = m"; |
112 by (induct_tac "m" 1); |
119 by (induct_tac "m" 1); |
113 by (ALLGOALS (asm_simp_tac (simpset() addsimps [div_less, div_geq]))); |
120 by (ALLGOALS (asm_simp_tac (simpset() addsimps [div_less, div_geq]))); |
114 qed "div_1"; |
121 qed "div_1"; |