| ((P0 * P1 * true))(H1 ∪ H3) ↔ (∃ H0, H2. H0 ⊥ H2 ∧ H1 ∪ H3 = H0 ∪ H2 ∧ P0(H0) ∧ ((P1 * true))(H2)), H0 ∪ H2 = H1 ∪ H3, ((P0 * P1 * true))(H1 ∪ H3), P0(H0), P1(H1), precise(P1), precise(P0), H0 ⊥ H2, H1 ⊥ H3 ⊦ H0 ⊥ H1 |
H1 ∪ H3 = H ∪ H4, ((P0 * P1 * true))(H ∪ H4), ((P1 * true))(H4), P0(H), P1(H1), precise(P0), precise(P1), H1 ⊥ H3, H ⊥ H4 ⊦ H ⊥ H1
Used simplifier rules: sep-ass: ⊦ (P0 * P1) * P2 = P0 * P1 * P2;%sep-com: ⊦ P0 * P1 = P1 * P0;%true-elim: ⊦ ((P0 * P))(H) → ((true * P))(H);%precise-same: precise(P) ⊦ P(H0) ∧ P(H1) ∧ H0 ⊥ H ∧ H1 ⊥ H2 → (H0 ∪ H = H1 ∪ H2 ↔ H0 = H1 ∧ H = H2);