| ∀ s1, P. # s1 < #(s0 ++ a) → true → # s1 = 0 ∨ s1 = ∅ ∨ (λ a. P) ∧_ s1 = P ⊦ ((P ∧ (λ a. P) ∧_ s0))(H) ↔ P(H), a ∈ s0 |
P(H), ∀ s1, P. # s1 < #(s0 ++ a) → true → # s1 = 0 ∨ s1 = ∅ ∨ (λ a. P) ∧_ s1 = P ⊦ a ∈ s0, (((λ a. P) ∧_ s0))(H)
Used simplifier rules: and-com: ⊦ (P0 ∧ P1) = (P1 ∧ P0); from specification heap-sep%and-ass: ⊦ ((P0 ∧ P1) ∧ P2) = (P0 ∧ P1 ∧ P2); from specification heap-sep% ⊦ ((P0 ∧ P1))(H) ↔ P0(H) ∧ P1(H); (s)