| ⊦ ordered≤(t) → ordered≤(t.toList) |
ordered≤(t), ¬ ordered≤(t.toList) ⊦
| ordered≤(t), ¬ ordered≤(t.toList) ⊦ |
ordered≤(branch(t0, a, t1)), ¬ ordered≤(branch(t0, a, t1).toList) ⊦ ordered≤(t0) ∧ ¬ ordered≤(t0.toList), ordered≤(t1) ∧ ¬ ordered≤(t1.toList)
Used simplifier rules: ordered-base: ⊦ ordered≤(leaf); toList-base: ⊦ leaf.toList = []; tree freely generated by leaf, branch;; ⊦ ordered≤([]); (s)
| ordered≤(branch(t0, a, t1)), ¬ ordered≤(branch(t0, a, t1).toList) ⊦ ordered≤(t0) ∧ ¬ ordered≤(t0.toList), ordered≤(t1) ∧ ¬ ordered≤(t1.toList) |
ordered≤(t0), ordered≤(t1), ordered≤(t1.toList), ordered≤(t0.toList), t0 ≤ a, a ≤ t1, ¬ ordered≤(t0.toList + a ' + t1.toList) ⊦
Used simplifier rules: ordered-rec: ⊦ ordered≤(branch(t0, a, t1)) ↔ ordered≤(t0) ∧ t0 ≤ a ∧ a ≤ t1 ∧ ordered≤(t1); toList-rec: ⊦ branch(t0, a, t1).toList = t0.toList + (a + t1.toList); ⊦ a + x = a ' + x; (s)
| ordered≤(t0), ordered≤(t1), ordered≤(t1.toList), ordered≤(t0.toList), t0 ≤ a, a ≤ t1, ¬ ordered≤(t0.toList + a ' + t1.toList) ⊦ |
⊦ ordered≤(x) ∧ ordered≤(x0) ∧ (x ≠ [] ∧ x0 ≠ [] → ¬ x0.head < x.last) → ordered≤(x + x0)
ordered≤(t0.toList), ordered≤(t1.toList), ordered≤(t1), ordered≤(t0), a ≤ t1, t0 ≤ a, ¬ ordered≤(t0.toList + a ' + t1.toList) ⊦ ordered≤(t0.toList) ∧ ordered≤(a ' + t1.toList) ∧ (t0.toList ≠ [] ∧ a ' + t1.toList ≠ [] → ¬ (a ' + t1.toList).head < t0.toList.last)
Used terms: t0.toList, a ' + t1.toList
| ⊦ ordered≤(x) ∧ ordered≤(x0) ∧ (x ≠ [] ∧ x0 ≠ [] → ¬ x0.head < x.last) → ordered≤(x + x0) |
| ordered≤(t0.toList), ordered≤(t1.toList), ordered≤(t1), ordered≤(t0), a ≤ t1, t0 ≤ a, ¬ ordered≤(t0.toList + a ' + t1.toList) ⊦ ordered≤(t0.toList) ∧ ordered≤(a ' + t1.toList) ∧ (t0.toList ≠ [] ∧ a ' + t1.toList ≠ [] → ¬ (a ' + t1.toList).head < t0.toList.last) |
ordered≤(t0), ordered≤(t1), ordered≤(t1.toList), ordered≤(t0.toList), t0 ≤ a, a ≤ t1, ¬ ordered≤(t0.toList + a ' + t1.toList), ¬ ordered≤(a ' + t1.toList) ⊦
Used simplifier rules: toList-base: ⊦ leaf.toList = []; tree-le-elem-toList-last: t ≠ leaf ⊦ t ≤ a → ¬ a < t.toList.last; a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ (a ' + x).head = a; (s) ⊦ a ' + x ≠ []; (s)
| ordered≤(t0), ordered≤(t1), ordered≤(t1.toList), ordered≤(t0.toList), t0 ≤ a, a ≤ t1, ¬ ordered≤(t0.toList + a ' + t1.toList), ¬ ordered≤(a ' + t1.toList) ⊦ |
⊦ ordered≤(x) ∧ ordered≤(x0) ∧ (x ≠ [] ∧ x0 ≠ [] → ¬ x0.head < x.last) → ordered≤(x + x0)
ordered≤(t0.toList), ordered≤(t1.toList), ordered≤(t1), ordered≤(t0), a ≤ t1, t0 ≤ a, ¬ ordered≤(t0.toList + a ' + t1.toList), ¬ ordered≤(a ' + t1.toList) ⊦ ordered≤(a ') ∧ ordered≤(t1.toList) ∧ (a ' ≠ [] ∧ t1.toList ≠ [] → ¬ t1.toList.head < a '.last)
Used terms: a ', t1.toList
| ⊦ ordered≤(x) ∧ ordered≤(x0) ∧ (x ≠ [] ∧ x0 ≠ [] → ¬ x0.head < x.last) → ordered≤(x + x0) |
| ordered≤(t0.toList), ordered≤(t1.toList), ordered≤(t1), ordered≤(t0), a ≤ t1, t0 ≤ a, ¬ ordered≤(t0.toList + a ' + t1.toList), ¬ ordered≤(a ' + t1.toList) ⊦ ordered≤(a ') ∧ ordered≤(t1.toList) ∧ (a ' ≠ [] ∧ t1.toList ≠ [] → ¬ t1.toList.head < a '.last) |
t1.toList ≠ [], t1.toList.head < a, ordered≤(t0), ordered≤(t1), ordered≤(t1.toList), ordered≤(t0.toList), t0 ≤ a, a ≤ t1, ¬ ordered≤(t0.toList + a ' + t1.toList), ¬ ordered≤(a ' + t1.toList) ⊦
Used simplifier rules: ⊦ a '.last = a; (s) ⊦ a ' ≠ []; (s) ⊦ ordered≤(a '); (s)
| t1.toList ≠ [], t1.toList.head < a, ordered≤(t0), ordered≤(t1), ordered≤(t1.toList), ordered≤(t0.toList), t0 ≤ a, a ≤ t1, ¬ ordered≤(t0.toList + a ' + t1.toList), ¬ ordered≤(a ' + t1.toList) ⊦ |
t1.toList = a0 + x0, t1.toList ≠ [], a0 < a, ordered≤(t0.toList), ordered≤(t1.toList), ordered≤(t1), ordered≤(t0), a ≤ t1, t0 ≤ a, ¬ ordered≤(t0.toList + a ' + t1.toList), ¬ ordered≤(a ' + t1.toList) ⊦
Used simplifier rules: ⊦ x ≠ [] → (head = x.head ∧ tail = x.tail ↔ x = head + tail); (elim) Used terms: t1.toList, a0, tail
| t1.toList = a0 + x0, t1.toList ≠ [], a0 < a, ordered≤(t0.toList), ordered≤(t1.toList), ordered≤(t1), ordered≤(t0), a ≤ t1, t0 ≤ a, ¬ ordered≤(t0.toList + a ' + t1.toList), ¬ ordered≤(a ' + t1.toList) ⊦ |
t1.toList = a0 ' + x0, t1.toList ≠ [], a0 < a, ordered≤(t0.toList), ordered≤(t1.toList), ordered≤(t1), ordered≤(t0), a0 ∈ t1.toList, a ≤ t1, t0 ≤ a, ¬ ordered≤(t0.toList + a ' + t1.toList) ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ b < a ∧ b ∈ x → ¬ ordered≤(a ' + x); (s) in-14: ⊦ a ' + x = y → a ∈ y; (forward) from specification list ⊦ a + x = a ' + x; (s)
| t1.toList = a0 ' + x0, t1.toList ≠ [], a0 < a, ordered≤(t0.toList), ordered≤(t1.toList), ordered≤(t1), ordered≤(t0), a0 ∈ t1.toList, a ≤ t1, t0 ≤ a, ¬ ordered≤(t0.toList + a ' + t1.toList) ⊦ |
⊦ b ∈ t ∧ a ≤ t → ¬ b < a
t1.toList = a0 ' + x0, t1.toList ≠ [], a0 < a, ordered≤(t0), ordered≤(t1), ordered≤(t1.toList), ordered≤(t0.toList), a0 ∈ t1.toList, t0 ≤ a, a ≤ t1, ¬ ordered≤(t0.toList + a ' + t1.toList) ⊦ a0 ∈ t1 ∧ a ≤ t1
Used terms: t1, a0, a
| ⊦ b ∈ t ∧ a ≤ t → ¬ b < a |
| t1.toList = a0 ' + x0, t1.toList ≠ [], a0 < a, ordered≤(t0), ordered≤(t1), ordered≤(t1.toList), ordered≤(t0.toList), a0 ∈ t1.toList, t0 ≤ a, a ≤ t1, ¬ ordered≤(t0.toList + a ' + t1.toList) ⊦ a0 ∈ t1 ∧ a ≤ t1 |
t1.toList = a0 ' + x0, t1.toList ≠ [], a0 < a, ordered≤(t0.toList), ordered≤(t1.toList), ordered≤(t1), ordered≤(t0), a0 ∈ t1.toList, a ≤ t1, t0 ≤ a, ¬ ordered≤(t0.toList + a ' + t1.toList), ¬ a0 ∈ t1 ⊦
| t1.toList = a0 ' + x0, t1.toList ≠ [], a0 < a, ordered≤(t0.toList), ordered≤(t1.toList), ordered≤(t1), ordered≤(t0), a0 ∈ t1.toList, a ≤ t1, t0 ≤ a, ¬ ordered≤(t0.toList + a ' + t1.toList), ¬ a0 ∈ t1 ⊦ |
⊦ a ∈ t ↔ a ∈ t.toList
Used terms: a0, t1
| ⊦ a ∈ t ↔ a ∈ t.toList |
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.