| r ∈ rs ⊦ (r ==>_ * hR)[rs, f(r; o), g(r; a)] ↔ (r ==>(o, a) * hR)[rs, f(r; o), g(r; a)] |
¬((r ==>_ * hR)[rs, f(r; o), g(r; a)] ↔ (r ==>(o, a) * hR)[rs, f(r; o), g(r; a)]), r ∈ rs ⊦
| ¬((r ==>_ * hR)[rs, f(r; o), g(r; a)] ↔ (r ==>(o, a) * hR)[rs, f(r; o), g(r; a)]), r ∈ rs ⊦ |
⊦ hP[rs, f, g] ↔ hP[rs, λ r. f(r) ×× g(r)]__
¬((r ==>_ * hR)[rs, λ r0. f(r; o)(r0) ×× g(r; a)(r0)]__ ↔ (r ==>(o, a) * hR)[rs, f(r; o), g(r; a)]), r ∈ rs ⊦
Used terms: r ==>_ * hR, rs, f(r; o), g(r; a)
| ⊦ hP[rs, f, g] ↔ hP[rs, λ r. f(r) ×× g(r)]__ |
| ¬((r ==>_ * hR)[rs, λ r0. f(r; o)(r0) ×× g(r; a)(r0)]__ ↔ (r ==>(o, a) * hR)[rs, f(r; o), g(r; a)]), r ∈ rs ⊦ |
r ∈ rs ⊦ (r ==>_ * hP)[rs, f(r; o)]__ ↔ (r __=>(o) * hP)[rs, f(r; o)]__
(r ==>_ * hR)[rs, (λ r0. f(r; o)(r0) ×× g(r; a)(r0))(r; o ×× a)]__ ↔ (r __=>(o ×× a) * hR)[rs, (λ r0. f(r; o)(r0) ×× g(r; a)(r0))(r; o ×× a)]__, ¬((r ==>_ * hR)[rs, λ r0. f(r; o)(r0) ×× g(r; a)(r0)]__ ↔ (r ==>(o, a) * hR)[rs, f(r; o), g(r; a)]), r ∈ rs ⊦
Used terms: hR, r, rs, o ×× a, λ r0. f(r; o)(r0) ×× g(r; a)(r0)
| r ∈ rs ⊦ (r ==>_ * hP)[rs, f(r; o)]__ ↔ (r __=>(o) * hP)[rs, f(r; o)]__ |
| (r ==>_ * hR)[rs, (λ r0. f(r; o)(r0) ×× g(r; a)(r0))(r; o ×× a)]__ ↔ (r __=>(o ×× a) * hR)[rs, (λ r0. f(r; o)(r0) ×× g(r; a)(r0))(r; o ×× a)]__, ¬((r ==>_ * hR)[rs, λ r0. f(r; o)(r0) ×× g(r; a)(r0)]__ ↔ (r ==>(o, a) * hR)[rs, f(r; o), g(r; a)]), r ∈ rs ⊦ |
(r ==>_ * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__, ¬ (r __=>(o ×× a) * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__, (r ==>_ * hR)[rs, λ r1. (r1 = r ⊃ o ×× a;f(r1) ×× g(r1))]__ → (r __=>(o ×× a) * hR)[rs, λ r1. (r1 = r ⊃ o ×× a;f(r1) ×× g(r1))]__ ⊦
Used simplifier rules: maplet-def: ⊦ r ==>(o, a) = r __=>(o ×× a); modifysep-def: ⊦ hP[rs, f, g] ↔ hP[rs, λ r. f(r) ×× g(r)]__; ⊦ (r ==>_ * hP)[rs, f]__ → r ∈ rs; (s) sep-com: ⊦ hP0 * hP1 = hP1 * hP0; from specification heap-sep[heap-aux-inst] sep-ass: ⊦ (hP0 * hP1) * hP2 = hP0 * hP1 * hP2; from specification heap-sep[heap-aux-inst] ⊦ (r __=>(o) * hP)[rs, f]__ → (r ==>_ * hP)[rs, f]__; (s)
| (r ==>_ * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__, ¬ (r __=>(o ×× a) * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__, (r ==>_ * hR)[rs, λ r1. (r1 = r ⊃ o ×× a;f(r1) ×× g(r1))]__ → (r __=>(o ×× a) * hR)[rs, λ r1. (r1 = r ⊃ o ×× a;f(r1) ×× g(r1))]__ ⊦ |
(r ==>_ * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__, ¬ (r ==>_ * hR)[rs, λ r1. (r1 = r ⊃ o ×× a;f(r1) ×× g(r1))]__, ¬ (r __=>(o ×× a) * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__ ⊦
(r ==>_ * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__, (r __=>(o ×× a) * hR)[rs, λ r1. (r1 = r ⊃ o ×× a;f(r1) ×× g(r1))]__, ¬ (r __=>(o ×× a) * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__ ⊦
| (r ==>_ * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__, ¬ (r ==>_ * hR)[rs, λ r1. (r1 = r ⊃ o ×× a;f(r1) ×× g(r1))]__, ¬ (r __=>(o ×× a) * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__ ⊦ |
(λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))) ≠ (λ r1. (r1 = r ⊃ o ×× a;f(r1) ×× g(r1))), (r ==>_ * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__, ¬ (r __=>(o ×× a) * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__ ⊦
| (λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))) ≠ (λ r1. (r1 = r ⊃ o ×× a;f(r1) ×× g(r1))), (r ==>_ * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__, ¬ (r __=>(o ×× a) * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__ ⊦ |
(r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0)) ≠ (r0 = r ⊃ o ×× a;f(r0) ×× g(r0)), (r ==>_ * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__, ¬ (r __=>(o ×× a) * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__ ⊦
| (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0)) ≠ (r0 = r ⊃ o ×× a;f(r0) ×× g(r0)), (r ==>_ * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__, ¬ (r __=>(o ×× a) * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__ ⊦ |
| (r ==>_ * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__, (r __=>(o ×× a) * hR)[rs, λ r1. (r1 = r ⊃ o ×× a;f(r1) ×× g(r1))]__, ¬ (r __=>(o ×× a) * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__ ⊦ |
(λ r1. (r1 = r ⊃ o ×× a;f(r1) ×× g(r1))) ≠ (λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))), (r __=>(o ×× a) * hR)[rs, λ r1. (r1 = r ⊃ o ×× a;f(r1) ×× g(r1))]__, (r ==>_ * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__ ⊦
| (λ r1. (r1 = r ⊃ o ×× a;f(r1) ×× g(r1))) ≠ (λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))), (r __=>(o ×× a) * hR)[rs, λ r1. (r1 = r ⊃ o ×× a;f(r1) ×× g(r1))]__, (r ==>_ * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__ ⊦ |
(r1 = r ⊃ o ×× a;f(r1) ×× g(r1)) ≠ (r = r1 ⊃ o;f(r1)) ×× (r = r1 ⊃ a;g(r1)), (r ==>_ * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__, (r __=>(o ×× a) * hR)[rs, λ r1. (r1 = r ⊃ o ×× a;f(r1) ×× g(r1))]__ ⊦
| (r1 = r ⊃ o ×× a;f(r1) ×× g(r1)) ≠ (r = r1 ⊃ o;f(r1)) ×× (r = r1 ⊃ a;g(r1)), (r ==>_ * hR)[rs, λ r0. (r = r0 ⊃ o;f(r0)) ×× (r = r0 ⊃ a;g(r0))]__, (r __=>(o ×× a) * hR)[rs, λ r1. (r1 = r ⊃ o ×× a;f(r1) ×× g(r1))]__ ⊦ |
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.