| r ∈ rs ⊦ (r.==>(o0, a0) * hR)[rs, f(r := o1), g(r := a1)] ↔ (o0 = o1 ∧ a0 = a1) ∧ (r.=>_ * hR)[rs, f, g] |
¬((r.==>(o0, a0) * hR)[rs, f(r := o1), g(r := a1)] ↔ (o0 = o1 ∧ a0 = a1) ∧ (r.=>_ * hR)[rs, f, g]), r ∈ rs ⊦
| ¬((r.==>(o0, a0) * hR)[rs, f(r := o1), g(r := a1)] ↔ (o0 = o1 ∧ a0 = a1) ∧ (r.=>_ * hR)[rs, f, g]), r ∈ rs ⊦ |
# rs ≠ 0, ¬((r => (o0, a0) * hR)[rs, λ r0. ((r = r0 ⊃ o1;f(r0)), (r = r0 ⊃ a1;g(r0)))] ↔ o0 = o1 ∧ a0 = a1 ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))]), rs ≠ ∅, r ∈ rs ⊦
Used simplifier rules: maplet-def: ⊦ r.==>(o, a) = r => (o, a); modifysep-def: ⊦ hP[rs, f, g] ↔ hP[rs, λ r. (f(r), g(r))]; size-zero-01: ⊦ s ≠ ∅ → # s ≠ 0; (forward) from specification set-basic ne-01: ⊦ a ∈ s → s ≠ ∅; (forward) from specification set-basic
| # rs ≠ 0, ¬((r => (o0, a0) * hR)[rs, λ r0. ((r = r0 ⊃ o1;f(r0)), (r = r0 ⊃ a1;g(r0)))] ↔ o0 = o1 ∧ a0 = a1 ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))]), rs ≠ ∅, r ∈ rs ⊦ |
r ∈ rs ⊦ (r => o0 * hP)[rs, f(r := o1)] ↔ o0 = o1 ∧ (r.=>_ * hP)[rs, f]
(r => (o0, a0) * hR)[rs, (λ r. (f(r), g(r)))(r := (o1, a1))] ↔ (o0, a0) = (o1, a1) ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))], # rs ≠ 0, ¬((r => (o0, a0) * hR)[rs, λ r0. ((r = r0 ⊃ o1;f(r0)), (r = r0 ⊃ a1;g(r0)))] ↔ o0 = o1 ∧ a0 = a1 ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))]), rs ≠ ∅, r ∈ rs ⊦
Used terms: rs, r, hR, (o1, a1), (o0, a0), λ r. (f(r), g(r))
| r ∈ rs ⊦ (r => o0 * hP)[rs, f(r := o1)] ↔ o0 = o1 ∧ (r.=>_ * hP)[rs, f] |
| (r => (o0, a0) * hR)[rs, (λ r. (f(r), g(r)))(r := (o1, a1))] ↔ (o0, a0) = (o1, a1) ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))], # rs ≠ 0, ¬((r => (o0, a0) * hR)[rs, λ r0. ((r = r0 ⊃ o1;f(r0)), (r = r0 ⊃ a1;g(r0)))] ↔ o0 = o1 ∧ a0 = a1 ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))]), rs ≠ ∅, r ∈ rs ⊦ |
(r => (o0, a0) * hR)[rs, λ r0. (r0 = r ⊃ (o1, a1);(f(r0), g(r0)))] ↔ (o0, a0) = (o1, a1) ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))], # rs ≠ 0, ¬((r => (o0, a0) * hR)[rs, λ r0. ((r = r0 ⊃ o1;f(r0)), (r = r0 ⊃ a1;g(r0)))] ↔ o0 = o1 ∧ a0 = a1 ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))]), rs ≠ ∅, r ∈ rs ⊦
| (r => (o0, a0) * hR)[rs, λ r0. (r0 = r ⊃ (o1, a1);(f(r0), g(r0)))] ↔ (o0, a0) = (o1, a1) ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))], # rs ≠ 0, ¬((r => (o0, a0) * hR)[rs, λ r0. ((r = r0 ⊃ o1;f(r0)), (r = r0 ⊃ a1;g(r0)))] ↔ o0 = o1 ∧ a0 = a1 ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))]), rs ≠ ∅, r ∈ rs ⊦ |
(r => (o0, a0) * hR)[rs, λ r0. (r0 = r ⊃ (o1, a1);(f(r0), g(r0)))] ↔ (o0 = o1 ∧ a0 = a1) ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))], # rs ≠ 0, ¬((r => (o0, a0) * hR)[rs, λ r0. ((r = r0 ⊃ o1;f(r0)), (r = r0 ⊃ a1;g(r0)))] ↔ o0 = o1 ∧ a0 = a1 ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))]), rs ≠ ∅, r ∈ rs ⊦
| (r => (o0, a0) * hR)[rs, λ r0. (r0 = r ⊃ (o1, a1);(f(r0), g(r0)))] ↔ (o0 = o1 ∧ a0 = a1) ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))], # rs ≠ 0, ¬((r => (o0, a0) * hR)[rs, λ r0. ((r = r0 ⊃ o1;f(r0)), (r = r0 ⊃ a1;g(r0)))] ↔ o0 = o1 ∧ a0 = a1 ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))]), rs ≠ ∅, r ∈ rs ⊦ |
(r => (o0, a0) * hR)[rs, λ r0. (r0 = r ⊃ (o1, a1);(f(r0), g(r0)))] ↔ o0 = o1 ∧ a0 = a1 ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))], # rs ≠ 0, ¬ ((r => (o0, a0) * hR)[rs, λ r0. ((r = r0 ⊃ o1;f(r0)), (r = r0 ⊃ a1;g(r0)))] ↔ (r => (o0, a0) * hR)[rs, λ r0. (r0 = r ⊃ (o1, a1);(f(r0), g(r0)))]), rs ≠ ∅, r ∈ rs ⊦
| (r => (o0, a0) * hR)[rs, λ r0. (r0 = r ⊃ (o1, a1);(f(r0), g(r0)))] ↔ o0 = o1 ∧ a0 = a1 ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))], # rs ≠ 0, ¬ ((r => (o0, a0) * hR)[rs, λ r0. ((r = r0 ⊃ o1;f(r0)), (r = r0 ⊃ a1;g(r0)))] ↔ (r => (o0, a0) * hR)[rs, λ r0. (r0 = r ⊃ (o1, a1);(f(r0), g(r0)))]), rs ≠ ∅, r ∈ rs ⊦ |
(r => (o0, a0) * hR)[rs, λ r0. (r0 = r ⊃ (o1, a1);(f(r0), g(r0)))] ↔ o0 = o1 ∧ a0 = a1 ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))], # rs ≠ 0, (λ r0. ((r = r0 ⊃ o1;f(r0)), (r = r0 ⊃ a1;g(r0)))) ≠ (λ r0. (r0 = r ⊃ (o1, a1);(f(r0), g(r0)))), rs ≠ ∅, r ∈ rs ⊦
| (r => (o0, a0) * hR)[rs, λ r0. (r0 = r ⊃ (o1, a1);(f(r0), g(r0)))] ↔ o0 = o1 ∧ a0 = a1 ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))], # rs ≠ 0, (λ r0. ((r = r0 ⊃ o1;f(r0)), (r = r0 ⊃ a1;g(r0)))) ≠ (λ r0. (r0 = r ⊃ (o1, a1);(f(r0), g(r0)))), rs ≠ ∅, r ∈ rs ⊦ |
(r => (o0, a0) * hR)[rs, λ r0. (r0 = r ⊃ (o1, a1);(f(r0), g(r0)))] ↔ o0 = o1 ∧ a0 = a1 ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))], # rs ≠ 0, ((r = r0 ⊃ o1;f(r0)), (r = r0 ⊃ a1;g(r0))) ≠ (r0 = r ⊃ (o1, a1);(f(r0), g(r0))), rs ≠ ∅, r ∈ rs ⊦
| (r => (o0, a0) * hR)[rs, λ r0. (r0 = r ⊃ (o1, a1);(f(r0), g(r0)))] ↔ o0 = o1 ∧ a0 = a1 ∧ (r.=>_ * hR)[rs, λ r. (f(r), g(r))], # rs ≠ 0, ((r = r0 ⊃ o1;f(r0)), (r = r0 ⊃ a1;g(r0))) ≠ (r0 = r ⊃ (o1, a1);(f(r0), g(r0))), rs ≠ ∅, r ∈ rs ⊦ |
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.