| ⊦ dlls(r, r0, null, x) = dll(r, r0, x) |
dlls(r, r0, null, x) ≠ dll(r, r0, x) ⊦
| dlls(r, r0, null, x) ≠ dll(r, r0, x) ⊦ |
dlls(r, r0, null, a + x0) ≠ dll(r, r0, a + x0), ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0) ⊦
Used simplifier rules: dlls-base: ⊦ dlls(r, r0, r1, []) = (emp ∧ ⌜r = r1⌝ ); List[A] freely generated by [], +; ⊦ dll(r, r0, []) = (emp ∧ ⌜r = null⌝ ); (s) ⊦ hP0 = hP1 → ((hP ∧ hP0) = (hP ∧ hP1) ↔ true); (ss) and-ass: ⊦ ((hP0 ∧ hP1) ∧ hP2) = (hP0 ∧ hP1 ∧ hP2); from specification map-sep and-com: ⊦ (hP0 ∧ hP1) = (hP1 ∧ hP0); from specification map-sep
| dlls(r, r0, null, a + x0) ≠ dll(r, r0, a + x0), ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0) ⊦ |
_∃(λ r2. r => mknode(r0, a, r2) * dlls(r2, r, null, x0)) ≠ _∃(λ r1. r => mknode(r0, a, r1) * dll(r1, r, x0)), ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0) ⊦
Used simplifier rules: dlls-rec: ⊦ dlls(r, r0, r1, a ' + x) = _∃(λ r2. r => mknode(r0, a, r2) * dlls(r2, r, r1, x)); a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ dll(r, r0, a ' + x) = _∃(λ r1. r => mknode(r0, a, r1) * dll(r1, r, x)); (s) ⊦ a + x = a ' + x; (s)
| _∃(λ r2. r => mknode(r0, a, r2) * dlls(r2, r, null, x0)) ≠ _∃(λ r1. r => mknode(r0, a, r1) * dll(r1, r, x0)), ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0) ⊦ |
¬((_∃(λ r2. r => mknode(r0, a, r2) * dlls(r2, r, null, x0)))(h) ↔ (_∃(λ r1. r => mknode(r0, a, r1) * dll(r1, r, x0)))(h)), ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0) ⊦
| ¬((_∃(λ r2. r => mknode(r0, a, r2) * dlls(r2, r, null, x0)))(h) ↔ (_∃(λ r1. r => mknode(r0, a, r1) * dll(r1, r, x0)))(h)), ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0) ⊦ |
∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0) ⊦ (∃ r1. (r => mknode(r0, a, r1) * dlls(r1, r, null, x0))(h)) ↔ (∃ r1. (r => mknode(r0, a, r1) * dll(r1, r, x0))(h))
Used simplifier rules: ⊦ (_∃ bP)(h) ↔ (∃ b. bP(b)(h)); (s)
| ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0) ⊦ (∃ r1. (r => mknode(r0, a, r1) * dlls(r1, r, null, x0))(h)) ↔ (∃ r1. (r => mknode(r0, a, r1) * dll(r1, r, x0))(h)) |
∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0), ∃ r1. (r => mknode(r0, a, r1) * dlls(r1, r, null, x0))(h) ⊦ ∃ r1. (r => mknode(r0, a, r1) * dll(r1, r, x0))(h)
∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0), ∃ r1. (r => mknode(r0, a, r1) * dll(r1, r, x0))(h) ⊦ ∃ r1. (r => mknode(r0, a, r1) * dlls(r1, r, null, x0))(h)
| ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0), ∃ r1. (r => mknode(r0, a, r1) * dlls(r1, r, null, x0))(h) ⊦ ∃ r1. (r => mknode(r0, a, r1) * dll(r1, r, x0))(h) |
(r => mknode(r0, a, r1) * dlls(r1, r, null, x0))(h), ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0) ⊦ ∃ r1. (r => mknode(r0, a, r1) * dll(r1, r, x0))(h)
| (r => mknode(r0, a, r1) * dlls(r1, r, null, x0))(h), ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0) ⊦ ∃ r1. (r => mknode(r0, a, r1) * dll(r1, r, x0))(h) |
(r => mknode(r0, a, r1) * dlls(r1, r, null, x0))(h), ¬ (r => mknode(r0, a, r1) * dll(r1, r, x0))(h), ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0) ⊦
Used terms: r1
| (r => mknode(r0, a, r1) * dlls(r1, r, null, x0))(h), ¬ (r => mknode(r0, a, r1) * dll(r1, r, x0))(h), ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0) ⊦ |
Used terms: r1, r
| ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0), ∃ r1. (r => mknode(r0, a, r1) * dll(r1, r, x0))(h) ⊦ ∃ r1. (r => mknode(r0, a, r1) * dlls(r1, r, null, x0))(h) |
(r => mknode(r0, a, r1) * dll(r1, r, x0))(h), ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0) ⊦ ∃ r1. (r => mknode(r0, a, r1) * dlls(r1, r, null, x0))(h)
| (r => mknode(r0, a, r1) * dll(r1, r, x0))(h), ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0) ⊦ ∃ r1. (r => mknode(r0, a, r1) * dlls(r1, r, null, x0))(h) |
(r => mknode(r0, a, r1) * dll(r1, r, x0))(h), ¬ (r => mknode(r0, a, r1) * dlls(r1, r, null, x0))(h), ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0) ⊦
Used terms: r1
| (r => mknode(r0, a, r1) * dll(r1, r, x0))(h), ¬ (r => mknode(r0, a, r1) * dlls(r1, r, null, x0))(h), ∀ r, r0. dlls(r, r0, null, x0) = dll(r, r0, x0) ⊦ |
Used terms: r1, r
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.