src/HOL/Nat.thy
changeset 57492 74bf65a1910a
parent 57200 aab87ffa60cc
child 57512 cc97b347b301
equal deleted inserted replaced
57491:9eedaafc05c8 57492:74bf65a1910a
  1166 lemma nat_diff_split:
  1166 lemma nat_diff_split:
  1167   "P(a - b::nat) = ((a<b --> P 0) & (ALL d. a = b + d --> P d))"
  1167   "P(a - b::nat) = ((a<b --> P 0) & (ALL d. a = b + d --> P d))"
  1168     -- {* elimination of @{text -} on @{text nat} *}
  1168     -- {* elimination of @{text -} on @{text nat} *}
  1169 by (cases "a < b")
  1169 by (cases "a < b")
  1170   (auto simp add: diff_is_0_eq [THEN iffD2] diff_add_inverse
  1170   (auto simp add: diff_is_0_eq [THEN iffD2] diff_add_inverse
  1171     not_less le_less dest!: sym [of a] sym [of b] add_eq_self_zero)
  1171     not_less le_less dest!: add_eq_self_zero add_eq_self_zero[OF sym])
  1172 
  1172 
  1173 lemma nat_diff_split_asm:
  1173 lemma nat_diff_split_asm:
  1174   "P(a - b::nat) = (~ (a < b & ~ P 0 | (EX d. a = b + d & ~ P d)))"
  1174   "P(a - b::nat) = (~ (a < b & ~ P 0 | (EX d. a = b + d & ~ P d)))"
  1175     -- {* elimination of @{text -} on @{text nat} in assumptions *}
  1175     -- {* elimination of @{text -} on @{text nat} in assumptions *}
  1176 by (auto split: nat_diff_split)
  1176 by (auto split: nat_diff_split)