equal
deleted
inserted
replaced
121 by (asm_simp_tac (simpset() addsimps [mod_less]) 1); |
121 by (asm_simp_tac (simpset() addsimps [mod_less]) 1); |
122 by (rename_tac "k" 1); |
122 by (rename_tac "k" 1); |
123 by (cut_inst_tac [("m","k*n"),("n","n")] mod_add_self2 1); |
123 by (cut_inst_tac [("m","k*n"),("n","n")] mod_add_self2 1); |
124 by (asm_full_simp_tac (simpset() addsimps [add_commute]) 1); |
124 by (asm_full_simp_tac (simpset() addsimps [add_commute]) 1); |
125 qed "mod_mult_self_is_0"; |
125 qed "mod_mult_self_is_0"; |
126 Addsimps [mod_mult_self_is_0]; |
126 |
|
127 Goal "(n*m) mod n = 0"; |
|
128 by (simp_tac (simpset() addsimps [mult_commute, mod_mult_self_is_0]) 1); |
|
129 qed "mod_mult_self1_is_0"; |
|
130 Addsimps [mod_mult_self_is_0, mod_mult_self1_is_0]; |
127 |
131 |
128 |
132 |
129 (*** Quotient ***) |
133 (*** Quotient ***) |
130 |
134 |
131 Goal "m<n ==> m div n = 0"; |
135 Goal "m<n ==> m div n = 0"; |
349 |
353 |
350 Goal "0<n ==> (m*n) div n = m"; |
354 Goal "0<n ==> (m*n) div n = m"; |
351 by (cut_inst_tac [("m", "m*n"),("n","n")] mod_div_equality 1); |
355 by (cut_inst_tac [("m", "m*n"),("n","n")] mod_div_equality 1); |
352 by (asm_full_simp_tac (simpset() addsimps [mod_mult_self_is_0]) 1); |
356 by (asm_full_simp_tac (simpset() addsimps [mod_mult_self_is_0]) 1); |
353 qed "div_mult_self_is_m"; |
357 qed "div_mult_self_is_m"; |
354 Addsimps [div_mult_self_is_m]; |
358 |
|
359 Goal "0<n ==> (n*m) div n = m"; |
|
360 by (asm_simp_tac (simpset() addsimps [mult_commute, div_mult_self_is_m]) 1); |
|
361 qed "div_mult_self1_is_m"; |
|
362 Addsimps [div_mult_self_is_m, div_mult_self1_is_m]; |
355 |
363 |
356 (*Cancellation law for division*) |
364 (*Cancellation law for division*) |
357 Goal "0<k ==> (k*m) div (k*n) = m div n"; |
365 Goal "0<k ==> (k*m) div (k*n) = m div n"; |
358 by (div_undefined_case_tac "n=0" 1); |
366 by (div_undefined_case_tac "n=0" 1); |
359 by (res_inst_tac [("n","m")] less_induct 1); |
367 by (res_inst_tac [("n","m")] less_induct 1); |