| ⊦ (hP0 * hP1)[rs, f] ↔ (∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ disjoint(rs0, rs1) ∧ hP0[rs0, f] ∧ hP1[rs1, f]) |
⊦ (hP0 * hP1)(mk(rs, f)) ↔ (∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ disjoint(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 ∧ disjoint(rs0, rs1) ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f))) |
(hP0 * hP1)(mk(rs, f)) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ disjoint(rs0, rs1) ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f))
¬ (hP0 * hP1)(mk(rs, f)), ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ disjoint(rs0, rs1) ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) ⊦
| (hP0 * hP1)(mk(rs, f)) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ disjoint(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 ∧ disjoint(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 ∧ disjoint(rs0, rs1) ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) |
mk(rs, f) = h0 ∪ h1, h0 ⊥ h1, hP0(h0), hP1(h1) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ disjoint(rs0, rs1) ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f))
| mk(rs, f) = h0 ∪ h1, h0 ⊥ h1, hP0(h0), hP1(h1) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ disjoint(rs0, rs1) ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) |
⊦ ∃ rs, f. h = mk(rs, f)
mk(rs, f) = h0 ∪ h1, h0 ⊥ h1, hP0(h0), hP1(h1), ∃ rs, f. h0 = mk(rs, f) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ disjoint(rs0, rs1) ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f))
Used terms: h0
| mk(rs, f) = h0 ∪ h1, h0 ⊥ h1, hP0(h0), hP1(h1), ∃ rs, f. h0 = mk(rs, f) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ disjoint(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 ∧ disjoint(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 ∧ disjoint(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 ∧ disjoint(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 ∧ disjoint(rs0, rs1) ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) |
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), disjoint(rs0, rs1), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ disjoint(rs0, rs1) ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f))
Used simplifier rules: disj: ⊦ mk(rs0, f0) ⊥ mk(rs1, f1) ↔ rs0 ∩ rs1 = ∅; int-c: ⊦ s ∩ s0 = s0 ∩ s; from specification set-union int-a: ⊦ (s ∩ s0) ∩ s1 = s ∩ s0 ∩ s1; from specification set-union ⊦ s1 ∩ s2 = ∅ ↔ disjoint(s1, s2); (s)
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), disjoint(rs0, rs1), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)) ⊦ ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ disjoint(rs0, rs1) ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) |
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), disjoint(rs0, rs1), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)) ⊦ rs0 ∪ rs1 = rs ∧ disjoint(rs0, rs1) ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f))
Used terms: rs0, rs1
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), disjoint(rs0, rs1), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)) ⊦ rs0 ∪ rs1 = rs ∧ disjoint(rs0, rs1) ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) |
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), disjoint(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), disjoint(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 ≠ rs, disjoint(rs0, rs1), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)) ⊦
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), disjoint(rs0, rs1), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ¬ hP0(mk(rs0, f)) ⊦
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), disjoint(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 ≠ rs, disjoint(rs0, rs1), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)) ⊦ |
⊦ h0 = h1 ↔ (∀ r. (r ∈ h0 ↔ r ∈ h1) ∧ (r ∈ h0 → h0(r) = h1(r)))
rs0 ∪ rs1 ≠ rs, disjoint(rs0, rs1), 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 ≠ rs, disjoint(rs0, rs1), 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 ≠ rs, disjoint(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)) ⊦
Used simplifier rules: in-uni: ⊦ disjoint(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);
| rs0 ∪ rs1 ≠ rs, disjoint(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)) ⊦ |
⊦ s1 = s2 ↔ (∀ a. a ∈ s1 ↔ a ∈ s2)
disjoint(rs0, rs1), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ∃ a. ¬(a ∈ rs0 ∪ rs1 ↔ a ∈ rs), ∀ r. (r ∈ rs ↔ r ∈ rs0 ∨ r ∈ rs1) ∧ (r ∈ rs → f(r) = (mk(rs0, f0) ∪ mk(rs1, f1))(r)) ⊦
Used terms: rs0 ∪ rs1, rs
| ⊦ s1 = s2 ↔ (∀ a. a ∈ s1 ↔ a ∈ s2) |
| disjoint(rs0, rs1), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ∃ a. ¬(a ∈ rs0 ∪ rs1 ↔ a ∈ rs), ∀ r. (r ∈ rs ↔ r ∈ rs0 ∨ r ∈ rs1) ∧ (r ∈ rs → f(r) = (mk(rs0, f0) ∪ mk(rs1, f1))(r)) ⊦ |
¬(r ∈ rs0 ∨ r ∈ rs1 ↔ r ∈ rs), disjoint(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)) ⊦
Used simplifier rules: unc: ⊦ s ∪ s0 = s0 ∪ s; from specification set-union una: ⊦ (s ∪ s0) ∪ s1 = s ∪ s0 ∪ s1; from specification set-union ⊦ a ∈ s1 ∪ s2 ↔ a ∈ s1 ∨ a ∈ s2; (s)
| ¬(r ∈ rs0 ∨ r ∈ rs1 ↔ r ∈ rs), disjoint(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)) ⊦ |
Used terms: r
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), disjoint(rs0, rs1), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ¬ hP0(mk(rs0, f)) ⊦ |
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), mk(rs0, f) ≠ mk(rs0, f0), disjoint(rs0, rs1), 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), mk(rs0, f) ≠ mk(rs0, f0), disjoint(rs0, rs1), 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), disjoint(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), disjoint(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 ≠ 0, f(r) ≠ f0(r), rs0 ≠ ∅, disjoint(rs0, rs1), 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); size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic ne-01: ⊦ a ∈ s → s ≠ ∅; (forward) from specification set-basic
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), # rs0 ≠ 0, f(r) ≠ f0(r), rs0 ≠ ∅, disjoint(rs0, rs1), 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 ≠ 0, f(r) ≠ f0(r), rs0 ≠ ∅, disjoint(rs0, rs1), 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 ≠ 0, f(r) ≠ f0(r), rs0 ≠ ∅, disjoint(rs0, rs1), 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 ≠ 0, f(r) ≠ f0(r), rs0 ≠ ∅, disjoint(rs0, rs1), 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: ⊦ disjoint(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);
| # rs0 ≠ 0, f(r) ≠ f0(r), rs0 ≠ ∅, disjoint(rs0, rs1), 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: ⊦ disjoint(rs0, rs1) ∧ r ∈ rs0 → (mk(rs0, f0) ∪ mk(rs1, f1))(r) = f0(r); Used terms: r
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), disjoint(rs0, rs1), hP0(mk(rs0, f0)), hP1(mk(rs1, f1)), ¬ hP1(mk(rs1, f)) ⊦ |
mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), mk(rs1, f) ≠ mk(rs1, f1), disjoint(rs0, rs1), 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), mk(rs1, f) ≠ mk(rs1, f1), disjoint(rs0, rs1), 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), disjoint(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), disjoint(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), # rs1 ≠ 0, f(r) ≠ f1(r), rs1 ≠ ∅, disjoint(rs0, rs1), 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); size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic ne-01: ⊦ a ∈ s → s ≠ ∅; (forward) from specification set-basic
| mk(rs, f) = mk(rs0, f0) ∪ mk(rs1, f1), # rs1 ≠ 0, f(r) ≠ f1(r), rs1 ≠ ∅, disjoint(rs0, rs1), 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)))
# rs1 ≠ 0, f(r) ≠ f1(r), rs1 ≠ ∅, disjoint(rs0, rs1), 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))) |
| # rs1 ≠ 0, f(r) ≠ f1(r), rs1 ≠ ∅, disjoint(rs0, rs1), 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)) ⊦ |
# rs1 ≠ 0, f(r) ≠ f1(r), rs1 ≠ ∅, disjoint(rs0, rs1), 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: ⊦ disjoint(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);
| # rs1 ≠ 0, f(r) ≠ f1(r), rs1 ≠ ∅, disjoint(rs0, rs1), 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: ⊦ disjoint(rs0, rs1) ∧ r ∈ rs1 → (mk(rs0, f0) ∪ mk(rs1, f1))(r) = f1(r); ⊦ disjoint(s, s0) ∧ a ∈ s0 → (a ∈ s ↔ false); (as) Used terms: r
| ¬ (hP0 * hP1)(mk(rs, f)), ∃ rs0, rs1. rs0 ∪ rs1 = rs ∧ disjoint(rs0, rs1) ∧ hP0(mk(rs0, f)) ∧ hP1(mk(rs1, f)) ⊦ |
disjoint(rs0, rs1), hP0(mk(rs0, f)), hP1(mk(rs1, f)), ¬ (hP0 * hP1)(mk(rs0, f) ∪ mk(rs1, f)) ⊦
Used simplifier rules: uni: ⊦ disjoint(rs0, rs1) → mk(rs0 ∪ rs1, f) = mk(rs0, f) ∪ mk(rs1, f); unc: ⊦ s ∪ s0 = s0 ∪ s; from specification set-union una: ⊦ (s ∪ s0) ∪ s1 = s ∪ s0 ∪ s1; from specification set-union
| disjoint(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 = ∅; ⊦ s1 ∩ s2 = ∅ ↔ disjoint(s1, s2); (s) int-a: ⊦ (s ∩ s0) ∩ s1 = s ∩ s0 ∩ s1; from specification set-union int-c: ⊦ s ∩ s0 = s0 ∩ s; from specification set-union Used terms: hP0, mk(rs0, f), hP1, mk(rs1, f)
| ⊦ 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.