src/HOL/Nat.thy
changeset 26143 314c0bcb7df7
parent 26101 a657683e902a
child 26149 6094349a4de9
equal deleted inserted replaced
26142:3d5df9a56537 26143:314c0bcb7df7
  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