src/HOL/Integ/IntDiv.thy
changeset 17084 fb0a80aef0be
parent 16733 236dfafbeb63
child 17085 5b57f995a179
equal deleted inserted replaced
17083:051b0897bc98 17084:fb0a80aef0be
   632 next
   632 next
   633   assume "EX q::int. m = d*q"
   633   assume "EX q::int. m = d*q"
   634   thus "m mod d = 0" by auto
   634   thus "m mod d = 0" by auto
   635 qed
   635 qed
   636 
   636 
   637 declare zmod_eq_0_iff [THEN iffD1, dest!]
   637 lemmas zmod_eq_0D = zmod_eq_0_iff [THEN iffD1]
       
   638 declare zmod_eq_0D [dest!]
   638 
   639 
   639 text{*proving (a+b) div c = a div c + b div c + ((a mod c + b mod c) div c) *}
   640 text{*proving (a+b) div c = a div c + b div c + ((a mod c + b mod c) div c) *}
   640 
   641 
   641 lemma zadd1_lemma:
   642 lemma zadd1_lemma:
   642      "[| quorem((a,c),(aq,ar));  quorem((b,c),(bq,br));  c \<noteq> 0 |]  
   643      "[| quorem((a,c),(aq,ar));  quorem((b,c),(bq,br));  c \<noteq> 0 |]  
  1050 lemma zdvd_zmult2: "k dvd (m::int) ==> k dvd m * n"
  1051 lemma zdvd_zmult2: "k dvd (m::int) ==> k dvd m * n"
  1051   apply (subst mult_commute)
  1052   apply (subst mult_commute)
  1052   apply (erule zdvd_zmult)
  1053   apply (erule zdvd_zmult)
  1053   done
  1054   done
  1054 
  1055 
  1055 lemma [iff]: "(k::int) dvd m * k"
  1056 lemma zdvd_triv_right [iff]: "(k::int) dvd m * k"
  1056   apply (rule zdvd_zmult)
  1057   apply (rule zdvd_zmult)
  1057   apply (rule zdvd_refl)
  1058   apply (rule zdvd_refl)
  1058   done
  1059   done
  1059 
  1060 
  1060 lemma [iff]: "(k::int) dvd k * m"
  1061 lemma zdvd_triv_left [iff]: "(k::int) dvd k * m"
  1061   apply (rule zdvd_zmult2)
  1062   apply (rule zdvd_zmult2)
  1062   apply (rule zdvd_refl)
  1063   apply (rule zdvd_refl)
  1063   done
  1064   done
  1064 
  1065 
  1065 lemma zdvd_zmultD2: "j * k dvd n ==> j dvd (n::int)"
  1066 lemma zdvd_zmultD2: "j * k dvd n ==> j dvd (n::int)"