equal
deleted
inserted
replaced
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)" |