src/HOL/Divides.ML
changeset 4358 aa22fcb46a5d
parent 4356 0dfd34f0d33d
child 4385 f6d019eefa1e
equal deleted inserted replaced
4357:b852e2d2a39a 4358:aa22fcb46a5d
   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";