src/HOL/Number_Theory/Cong.thy
changeset 55321 eadea363deb6
parent 55242 413ec965f95d
child 55337 5d45fb978d5a
equal deleted inserted replaced
55320:8a6ee5c1f2e0 55321:eadea363deb6
   152 lemma cong_diff_int:
   152 lemma cong_diff_int:
   153     "[(a::int) = b] (mod m) \<Longrightarrow> [c = d] (mod m) \<Longrightarrow> [a - c = b - d] (mod m)"
   153     "[(a::int) = b] (mod m) \<Longrightarrow> [c = d] (mod m) \<Longrightarrow> [a - c = b - d] (mod m)"
   154   unfolding cong_int_def  by (metis mod_diff_cong) 
   154   unfolding cong_int_def  by (metis mod_diff_cong) 
   155 
   155 
   156 lemma cong_diff_aux_int:
   156 lemma cong_diff_aux_int:
   157   "(a::int) >= c \<Longrightarrow> b >= d \<Longrightarrow> [(a::int) = b] (mod m) \<Longrightarrow>
   157   "[(a::int) = b] (mod m) \<Longrightarrow> [c = d] (mod m) \<Longrightarrow>
   158       [c = d] (mod m) \<Longrightarrow> [tsub a c = tsub b d] (mod m)"
   158    (a::int) >= c \<Longrightarrow> b >= d \<Longrightarrow> [tsub a c = tsub b d] (mod m)"
   159   by (metis cong_diff_int tsub_eq)
   159   by (metis cong_diff_int tsub_eq)
   160 
   160 
   161 lemma cong_diff_nat:
   161 lemma cong_diff_nat:
   162   assumes "(a::nat) >= c" and "b >= d" and "[a = b] (mod m)" and
   162   assumes"[a = b] (mod m)" "[c = d] (mod m)" "(a::nat) >= c" "b >= d" 
   163     "[c = d] (mod m)"
       
   164   shows "[a - c = b - d] (mod m)"
   163   shows "[a - c = b - d] (mod m)"
   165   using assms by (rule cong_diff_aux_int [transferred]);
   164   using assms by (rule cong_diff_aux_int [transferred]);
   166 
   165 
   167 lemma cong_mult_nat:
   166 lemma cong_mult_nat:
   168     "[(a::nat) = b] (mod m) \<Longrightarrow> [c = d] (mod m) \<Longrightarrow> [a * c = b * d] (mod m)"
   167     "[(a::nat) = b] (mod m) \<Longrightarrow> [c = d] (mod m) \<Longrightarrow> [a * c = b * d] (mod m)"