equal
deleted
inserted
replaced
1258 by (simp split add: nat_diff_split) |
1258 by (simp split add: nat_diff_split) |
1259 |
1259 |
1260 lemma diffs0_imp_equal: "!!m::nat. [| m-n = 0; n-m = 0 |] ==> m=n" |
1260 lemma diffs0_imp_equal: "!!m::nat. [| m-n = 0; n-m = 0 |] ==> m=n" |
1261 by (simp split add: nat_diff_split) |
1261 by (simp split add: nat_diff_split) |
1262 |
1262 |
|
1263 lemma min_diff: "min (m - (i::nat)) (n - i) = min m n - i" |
|
1264 unfolding min_def by auto |
|
1265 |
|
1266 lemma inj_on_diff_nat: |
|
1267 assumes k_le_n: "\<forall>n \<in> N. k \<le> (n::nat)" |
|
1268 shows "inj_on (\<lambda>n. n - k) N" |
|
1269 proof (rule inj_onI) |
|
1270 fix x y |
|
1271 assume a: "x \<in> N" "y \<in> N" "x - k = y - k" |
|
1272 with k_le_n have "x - k + k = y - k + k" by auto |
|
1273 with a k_le_n show "x = y" by auto |
|
1274 qed |
|
1275 |
1263 text{*Rewriting to pull differences out*} |
1276 text{*Rewriting to pull differences out*} |
1264 |
1277 |
1265 lemma diff_diff_right [simp]: "k\<le>j --> i - (j - k) = i + (k::nat) - j" |
1278 lemma diff_diff_right [simp]: "k\<le>j --> i - (j - k) = i + (k::nat) - j" |
1266 by arith |
1279 by arith |
1267 |
1280 |