| ⊦ (hP0 * hP1)[rs, f] ↔ (∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0[rs0, f] ∧ hP1[rs1, f]) |
⊦ ((hP0 * hP1))(mk(rs, f)) ↔ (∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)))
Used simplifier rules: apply: ⊦ hP[rs, f] ↔ hP(mk(rs, f));
| ⊦ ((hP0 * hP1))(mk(rs, f)) ↔ (∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f))) |
((hP0 * hP1))(mk(rs, f)) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f))
¬ ((hP0 * hP1))(mk(rs, f)), ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) ⊦
| ((hP0 * hP1))(mk(rs, f)) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) |
⊦ ((hP0 * hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1))
∃ h0, h1. h0 ⊥ h1 ∧ mk(rs, f) = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f))
Used terms: mk(rs, f), hP1, hP0
| ⊦ ((hP0 * hP1))(h) ↔ (∃ h0, h1. h0 ⊥ h1 ∧ h = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1)) |
| ∃ h0, h1. h0 ⊥ h1 ∧ mk(rs, f) = h0 ∪ h1 ∧ hP0(h0) ∧ hP1(h1) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) |
mk(rs, f) = h0 ∪ h1, hP0(h0), hP1(h1), h0 ⊥ h1 ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f))
| mk(rs, f) = h0 ∪ h1, hP0(h0), hP1(h1), h0 ⊥ h1 ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) |
⊦ ∃ rs, f. h = mk(rs, f)
mk(rs, f) = h0 ∪ h1, hP0(h0), hP1(h1), h0 ⊥ h1, ∃ rs, f. h0 = mk(rs, f) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f))
Used terms: h0
| mk(rs, f) = h0 ∪ h1, hP0(h0), hP1(h1), h0 ⊥ h1, ∃ rs, f. h0 = mk(rs, f) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) |
mk(rs, f) = mk(rs0, f0) ∪ h1, hP0(mk(rs0, f0)), hP1(h1), mk(rs0, f0) ⊥ h1 ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f))
| mk(rs, f) = mk(rs0, f0) ∪ h1, hP0(mk(rs0, f0)), hP1(h1), mk(rs0, f0) ⊥ h1 ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) |
⊦ ∃ rs, f. h = mk(rs, f)
mk(rs, f) = mk(rs0, f0) ∪ h1, hP0(mk(rs0, f0)), hP1(h1), mk(rs0, f0) ⊥ h1, ∃ rs, f. h1 = mk(rs, f) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f))
Used terms: h1
| mk(rs, f) = mk(rs0, f0) ∪ h1, hP0(mk(rs0, f0)), hP1(h1), mk(rs0, f0) ⊥ h1, ∃ rs, f. h1 = mk(rs, f) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) |
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f))
Used simplifier rules: disj: ⊦ mk(rs0, f0) ⊥ mk(rs1, f1) ↔ rs0 ∩ rs1 = ∅;
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) |
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)) ⊦ rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f))
Used terms: rs0, rs1
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)) ⊦ rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) |
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)) ⊦ rs0 ∪ rs1 = rs ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f))
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)) ⊦ rs0 ∪ rs1 = rs ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) |
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, rs0 ∪ rs1 ≠ rs, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)) ⊦
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ¬ hP0(mk(rs0, f)) ⊦
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ¬ hP1(mk(rs1, f)) ⊦
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, rs0 ∪ rs1 ≠ rs, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)) ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r]))
rs0 ∩ rs1 = ∅, rs0 ∪ rs1 ≠ rs, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ∀ r. (r ∈ mk(rs, f) ↔ r ∈ mk(rs0, f0) ∪ mk(rs1, f1)) ∧ (r ∈ mk(rs, f) → mk(rs, f)[r] = (mk(rs0, f0) ∪ mk(rs1, f1))[r]) ⊦
Used terms: mk(rs0, f0) ∪ mk(rs1, f1), mk(rs, f)
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r])) |
| rs0 ∩ rs1 = ∅, rs0 ∪ rs1 ≠ rs, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ∀ r. (r ∈ mk(rs, f) ↔ r ∈ mk(rs0, f0) ∪ mk(rs1, f1)) ∧ (r ∈ mk(rs, f) → mk(rs, f)[r] = (mk(rs0, f0) ∪ mk(rs1, f1))[r]) ⊦ |
rs0 ∩ rs1 = ∅, rs0 ∪ rs1 ≠ rs, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ∀ r. (r ∈ rs ↔ r ∈ rs0 ∨ r ∈ rs1) ∧ (r ∈ rs → f(r) = (mk(rs0, f0) ∪ mk(rs1, f1))[r]) ⊦
Used simplifier rules: in-uni: ⊦ rs0 ∩ rs1 = ∅ → (r ∈ mk(rs0, f0) ∪ mk(rs1, f1) ↔ r ∈ rs0 ∨ r ∈ rs1); in-mk: ⊦ r ∈ mk(rs, f) ↔ r ∈ rs; at-mk: ⊦ r ∈ rs → mk(rs, f)[r] = f(r); int-c: ⊦ s ∩ s0 = s0 ∩ s; from specification set-union[refset] int-a: ⊦ (s ∩ s0) ∩ s1 = s ∩ s0 ∩ s1; from specification set-union[refset]
| rs0 ∩ rs1 = ∅, rs0 ∪ rs1 ≠ rs, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ∀ r. (r ∈ rs ↔ r ∈ rs0 ∨ r ∈ rs1) ∧ (r ∈ rs → f(r) = (mk(rs0, f0) ∪ mk(rs1, f1))[r]) ⊦ |
⊦ s1 = s2 ↔ (∀ a. a ∈ s1 ↔ a ∈ s2)
rs0 ∩ rs1 = ∅, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ∀ r. (r ∈ rs ↔ r ∈ rs0 ∨ r ∈ rs1) ∧ (r ∈ rs → f(r) = (mk(rs0, f0) ∪ mk(rs1, f1))[r]), ∃ a. ¬(a ∈ rs0 ∪ rs1 ↔ a ∈ rs) ⊦
Used terms: rs, rs0 ∪ rs1
| ⊦ s1 = s2 ↔ (∀ a. a ∈ s1 ↔ a ∈ s2) |
| rs0 ∩ rs1 = ∅, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ∀ r. (r ∈ rs ↔ r ∈ rs0 ∨ r ∈ rs1) ∧ (r ∈ rs → f(r) = (mk(rs0, f0) ∪ mk(rs1, f1))[r]), ∃ a. ¬(a ∈ rs0 ∪ rs1 ↔ a ∈ rs) ⊦ |
rs0 ∩ rs1 = ∅, ¬(r ∈ rs0 ∪ rs1 ↔ r ∈ rs), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ∀ r. (r ∈ rs ↔ r ∈ rs0 ∨ r ∈ rs1) ∧ (r ∈ rs → f(r) = (mk(rs0, f0) ∪ mk(rs1, f1))[r]) ⊦
| rs0 ∩ rs1 = ∅, ¬(r ∈ rs0 ∪ rs1 ↔ r ∈ rs), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ∀ r. (r ∈ rs ↔ r ∈ rs0 ∨ r ∈ rs1) ∧ (r ∈ rs → f(r) = (mk(rs0, f0) ∪ mk(rs1, f1))[r]) ⊦ |
Used simplifier rules: ⊦ a ∈ s ∪ s0 ↔ ¬(¬ a ∈ s ∧ ¬ a ∈ s0); (ss) ⊦ ¬ a ∈ s → (a ∈ s ∪ s0 ↔ a ∈ s0); (s) una: ⊦ (s ∪ s0) ∪ s1 = s ∪ s0 ∪ s1; from specification set-union[refset] unc: ⊦ s ∪ s0 = s0 ∪ s; from specification set-union[refset] Used terms: r
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ¬ hP0(mk(rs0, f)) ⊦ |
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, mk(rs0, f) ≠ mk(rs0, f0), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ¬ hP0(mk(rs0, f)) ⊦
Used formulas: mk(rs0, f) = mk(rs0, f0)
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, mk(rs0, f) ≠ mk(rs0, f0), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ¬ hP0(mk(rs0, f)) ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r]))
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ¬ hP0(mk(rs0, f)), ∃ r. ¬((r ∈ mk(rs0, f) ↔ r ∈ mk(rs0, f0)) ∧ (r ∈ mk(rs0, f) → mk(rs0, f)[r] = mk(rs0, f0)[r])) ⊦
Used terms: mk(rs0, f0), mk(rs0, f)
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r])) |
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ¬ hP0(mk(rs0, f)), ∃ r. ¬((r ∈ mk(rs0, f) ↔ r ∈ mk(rs0, f0)) ∧ (r ∈ mk(rs0, f) → mk(rs0, f)[r] = mk(rs0, f0)[r])) ⊦ |
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, f(r) ≠ f0(r), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), r ∈ rs0, ¬ hP0(mk(rs0, f)) ⊦
Used simplifier rules: in-mk: ⊦ r ∈ mk(rs, f) ↔ r ∈ rs; at-mk: ⊦ r ∈ rs → mk(rs, f)[r] = f(r);
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, f(r) ≠ f0(r), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), r ∈ rs0, ¬ hP0(mk(rs0, f)) ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r]))
rs0 ∩ rs1 = ∅, f(r) ≠ f0(r), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), r ∈ rs0, ¬ hP0(mk(rs0, f)), ∀ r. (r ∈ mk(rs, f) ↔ r ∈ mk(rs0, f0) ∪ mk(rs1, f1)) ∧ (r ∈ mk(rs, f) → mk(rs, f)[r] = (mk(rs0, f0) ∪ mk(rs1, f1))[r]) ⊦
Used terms: mk(rs0, f0) ∪ mk(rs1, f1), mk(rs, f)
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r])) |
| rs0 ∩ rs1 = ∅, f(r) ≠ f0(r), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), r ∈ rs0, ¬ hP0(mk(rs0, f)), ∀ r. (r ∈ mk(rs, f) ↔ r ∈ mk(rs0, f0) ∪ mk(rs1, f1)) ∧ (r ∈ mk(rs, f) → mk(rs, f)[r] = (mk(rs0, f0) ∪ mk(rs1, f1))[r]) ⊦ |
rs0 ∩ rs1 = ∅, f(r) ≠ f0(r), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), r ∈ rs0, ¬ hP0(mk(rs0, f)), ∀ r0. (r0 ∈ rs ↔ r0 ∈ rs0 ∨ r0 ∈ rs1) ∧ (r0 ∈ rs → f(r0) = (mk(rs0, f0) ∪ mk(rs1, f1))[r0]) ⊦
Used simplifier rules: in-uni: ⊦ rs0 ∩ rs1 = ∅ → (r ∈ mk(rs0, f0) ∪ mk(rs1, f1) ↔ r ∈ rs0 ∨ r ∈ rs1); in-mk: ⊦ r ∈ mk(rs, f) ↔ r ∈ rs; at-mk: ⊦ r ∈ rs → mk(rs, f)[r] = f(r); int-c: ⊦ s ∩ s0 = s0 ∩ s; from specification set-union[refset] int-a: ⊦ (s ∩ s0) ∩ s1 = s ∩ s0 ∩ s1; from specification set-union[refset]
| rs0 ∩ rs1 = ∅, f(r) ≠ f0(r), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), r ∈ rs0, ¬ hP0(mk(rs0, f)), ∀ r0. (r0 ∈ rs ↔ r0 ∈ rs0 ∨ r0 ∈ rs1) ∧ (r0 ∈ rs → f(r0) = (mk(rs0, f0) ∪ mk(rs1, f1))[r0]) ⊦ |
Used simplifier rules: at-unil: ⊦ rs0 ∩ rs1 = ∅ ∧ r ∈ rs0 → (mk(rs0, f0) ∪ mk(rs1, f1))[r] = f0(r); int-a: ⊦ (s ∩ s0) ∩ s1 = s ∩ s0 ∩ s1; from specification set-union[refset] int-c: ⊦ s ∩ s0 = s0 ∩ s; from specification set-union[refset] Used terms: r
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ¬ hP1(mk(rs1, f)) ⊦ |
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, mk(rs1, f) ≠ mk(rs1, f1), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ¬ hP1(mk(rs1, f)) ⊦
Used formulas: mk(rs1, f) = mk(rs1, f1)
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, mk(rs1, f) ≠ mk(rs1, f1), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ¬ hP1(mk(rs1, f)) ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r]))
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ¬ hP1(mk(rs1, f)), ∃ r. ¬((r ∈ mk(rs1, f) ↔ r ∈ mk(rs1, f1)) ∧ (r ∈ mk(rs1, f) → mk(rs1, f)[r] = mk(rs1, f1)[r])) ⊦
Used terms: mk(rs1, f1), mk(rs1, f)
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r])) |
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ¬ hP1(mk(rs1, f)), ∃ r. ¬((r ∈ mk(rs1, f) ↔ r ∈ mk(rs1, f1)) ∧ (r ∈ mk(rs1, f) → mk(rs1, f)[r] = mk(rs1, f1)[r])) ⊦ |
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, f(r) ≠ f1(r), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), r ∈ rs1, ¬ hP1(mk(rs1, f)) ⊦
Used simplifier rules: in-mk: ⊦ r ∈ mk(rs, f) ↔ r ∈ rs; at-mk: ⊦ r ∈ rs → mk(rs, f)[r] = f(r);
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), rs0 ∩ rs1 = ∅, f(r) ≠ f1(r), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), r ∈ rs1, ¬ hP1(mk(rs1, f)) ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r]))
rs0 ∩ rs1 = ∅, f(r) ≠ f1(r), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), r ∈ rs1, ¬ hP1(mk(rs1, f)), ∀ r. (r ∈ mk(rs, f) ↔ r ∈ mk(rs0, f0) ∪ mk(rs1, f1)) ∧ (r ∈ mk(rs, f) → mk(rs, f)[r] = (mk(rs0, f0) ∪ mk(rs1, f1))[r]) ⊦
Used terms: mk(rs0, f0) ∪ mk(rs1, f1), mk(rs, f)
| ⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0[r] = h1[r])) |
| rs0 ∩ rs1 = ∅, f(r) ≠ f1(r), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), r ∈ rs1, ¬ hP1(mk(rs1, f)), ∀ r. (r ∈ mk(rs, f) ↔ r ∈ mk(rs0, f0) ∪ mk(rs1, f1)) ∧ (r ∈ mk(rs, f) → mk(rs, f)[r] = (mk(rs0, f0) ∪ mk(rs1, f1))[r]) ⊦ |
rs0 ∩ rs1 = ∅, f(r) ≠ f1(r), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), r ∈ rs1, ¬ hP1(mk(rs1, f)), ∀ r0. (r0 ∈ rs ↔ r0 ∈ rs0 ∨ r0 ∈ rs1) ∧ (r0 ∈ rs → f(r0) = (mk(rs0, f0) ∪ mk(rs1, f1))[r0]) ⊦
Used simplifier rules: in-uni: ⊦ rs0 ∩ rs1 = ∅ → (r ∈ mk(rs0, f0) ∪ mk(rs1, f1) ↔ r ∈ rs0 ∨ r ∈ rs1); in-mk: ⊦ r ∈ mk(rs, f) ↔ r ∈ rs; at-mk: ⊦ r ∈ rs → mk(rs, f)[r] = f(r); int-c: ⊦ s ∩ s0 = s0 ∩ s; from specification set-union[refset] int-a: ⊦ (s ∩ s0) ∩ s1 = s ∩ s0 ∩ s1; from specification set-union[refset]
| rs0 ∩ rs1 = ∅, f(r) ≠ f1(r), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), r ∈ rs1, ¬ hP1(mk(rs1, f)), ∀ r0. (r0 ∈ rs ↔ r0 ∈ rs0 ∨ r0 ∈ rs1) ∧ (r0 ∈ rs → f(r0) = (mk(rs0, f0) ∪ mk(rs1, f1))[r0]) ⊦ |
Used simplifier rules: at-unir: ⊦ rs0 ∩ rs1 = ∅ ∧ r ∈ rs1 → (mk(rs0, f0) ∪ mk(rs1, f1))[r] = f1(r); int-a: ⊦ (s ∩ s0) ∩ s1 = s ∩ s0 ∩ s1; from specification set-union[refset] int-c: ⊦ s ∩ s0 = s0 ∩ s; from specification set-union[refset] ⊦ s ∩ s0 = ∅ ∧ a ∈ s → (a ∈ s0 ↔ false); (as) Used terms: r
| ¬ ((hP0 * hP1))(mk(rs, f)), ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ rs0 ∩ rs1 = ∅ ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) ⊦ |
rs0 ∩ rs1 = ∅, hP0(mk(rs0, f)), hP1(mk(rs1, f)), ¬ ((hP0 * hP1))(mk(rs0, f) ∪ mk(rs1, f)) ⊦
Used simplifier rules: uni: ⊦ rs0 ∩ rs1 = ∅ → mk(rs0 ∪ rs1, f) = mk(rs0, f) ∪ mk(rs1, f); unc: ⊦ s ∪ s0 = s0 ∪ s; from specification set-union[refset] una: ⊦ (s ∪ s0) ∪ s1 = s ∪ s0 ∪ s1; from specification set-union[refset] int-c: ⊦ s ∩ s0 = s0 ∩ s; from specification set-union[refset] int-a: ⊦ (s ∩ s0) ∩ s1 = s ∩ s0 ∩ s1; from specification set-union[refset]
| rs0 ∩ rs1 = ∅, hP0(mk(rs0, f)), hP1(mk(rs1, f)), ¬ ((hP0 * hP1))(mk(rs0, f) ∪ mk(rs1, f)) ⊦ |
⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → ((hP0 * hP1))(h0 ∪ h1)
Used simplifier rules: disj: ⊦ mk(rs0, f0) ⊥ mk(rs1, f1) ↔ rs0 ∩ rs1 = ∅; Used terms: mk(rs1, f), mk(rs0, f), hP1, hP0
| ⊦ hP0(h0) ∧ hP1(h1) ∧ h0 ⊥ h1 → ((hP0 * hP1))(h0 ∪ h1) |
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.