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