| ⊦ ordered≤(rev(ar)) → max(ar) |
ordered≤(rev(ar)), ¬ max(ar) ⊦
| ordered≤(rev(ar)), ¬ max(ar) ⊦ |
ordered≤(rev([])), ¬ max([]) ⊦
ordered≤(rev(i + ar0)), ¬ max(i + ar0) ⊦ ordered≤(rev(ar0)) ∧ ¬ max(ar0)
Used simplifier rules: array freely generated by [], +;;
| ordered≤(rev([])), ¬ max([]) ⊦ |
¬ max([]) ⊦
Used simplifier rules: ⊦ ordered≤([]); (s) ⊦ rev([]) = []; (s)
| ¬ max([]) ⊦ |
⊦ max(ar1) ↔ (∀ ar2. perm(ar1, ar2) → ar2 ≤ ar1)
∃ ar2. ¬(perm([], ar2) → ar2 ≤ []) ⊦
Used terms: []
| ⊦ max(ar1) ↔ (∀ ar2. perm(ar1, ar2) → ar2 ≤ ar1) |
| ∃ ar2. ¬(perm([], ar2) → ar2 ≤ []) ⊦ |
¬ [] ≤ [] ⊦
Used simplifier rules: ⊦ perm([], y) ↔ y = []; (s)
| ¬ [] ≤ [] ⊦ |
⊦ [] ≤ []
Used terms:
| ⊦ [] ≤ [] |
| ordered≤(rev(i + ar0)), ¬ max(i + ar0) ⊦ ordered≤(rev(ar0)) ∧ ¬ max(ar0) |
max(ar0), ordered≤(rev(ar0) + i '), ¬ max(i ' + ar0) ⊦
Used simplifier rules: ⊦ ordered≤(x + y) → ordered≤(x); (s) ⊦ a + x = a ' + x; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[natarray-oarray-sort] ⊦ x + a = x + a '; (s) ⊦ rev(a ' + x) = rev(x) + a; (s)
| max(ar0), ordered≤(rev(ar0) + i '), ¬ max(i ' + ar0) ⊦ |
⊦ max(ar1) ↔ (∀ ar2. perm(ar1, ar2) → ar2 ≤ ar1)
max(ar0), ordered≤(rev(ar0) + i '), ∃ ar2. ¬(perm(i ' + ar0, ar2) → ar2 ≤ i ' + ar0) ⊦
Used terms: i ' + ar0
| ⊦ max(ar1) ↔ (∀ ar2. perm(ar1, ar2) → ar2 ≤ ar1) |
| max(ar0), ordered≤(rev(ar0) + i '), ∃ ar2. ¬(perm(i ' + ar0, ar2) → ar2 ≤ i ' + ar0) ⊦ |
max(ar0), ordered≤(rev(ar0) + i '), perm(i ' + ar0, ar2), ¬ ar2 ≤ i ' + ar0 ⊦
| max(ar0), ordered≤(rev(ar0) + i '), perm(i ' + ar0, ar2), ¬ ar2 ≤ i ' + ar0 ⊦ |
max(ar0), ordered≤(rev(ar0) + i '), perm(i ' + ar0, i0 + ar), ¬ i0 + ar ≤ i ' + ar0, ∀ ar0, i. ¬(max(ar0) ∧ ordered≤(rev(ar0) + i ') ∧ perm(i ' + ar0, ar) ∧ ¬ ar ≤ i ' + ar0) ⊦
Used simplifier rules: array freely generated by [], +;; ⊦ perm(x, []) ↔ x = []; (s) ⊦ x + y = [] ↔ x = [] ∧ y = []; (as) ⊦ a ' ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list[natarray-oarray-sort]
| max(ar0), ordered≤(rev(ar0) + i '), perm(i ' + ar0, i0 + ar), ¬ i0 + ar ≤ i ' + ar0, ∀ ar0, i. ¬(max(ar0) ∧ ordered≤(rev(ar0) + i ') ∧ perm(i ' + ar0, ar) ∧ ¬ ar ≤ i ' + ar0) ⊦ |
max(ar0), ordered≤(rev(ar0) + i '), perm(i ' + ar0, i0 ' + ar), ¬ i0 ' + ar ≤ i ' + ar0, ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1 ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s)
| max(ar0), ordered≤(rev(ar0) + i '), perm(i ' + ar0, i0 ' + ar), ¬ i0 ' + ar ≤ i ' + ar0, ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1 ⊦ |
⊦ n ' + ar1 ≤ m ' + ar2 ↔ (n = m ⊃ ar1 ≤ ar2;n ≤ m)
max(ar0), ordered≤(rev(ar0) + i '), perm(i ' + ar0, i0 ' + ar), (i0 = i ⊃ ¬ ar ≤ ar0;¬ i0 ≤ i), ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1 ⊦
Used terms: i0, ar, i, ar0
| ⊦ n ' + ar1 ≤ m ' + ar2 ↔ (n = m ⊃ ar1 ≤ ar2;n ≤ m) |
| max(ar0), ordered≤(rev(ar0) + i '), perm(i ' + ar0, i0 ' + ar), (i0 = i ⊃ ¬ ar ≤ ar0;¬ i0 ≤ i), ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1 ⊦ |
max(ar0), ordered≤(rev(ar0) + i '), perm(i ' + ar0, i0 ' + ar), (i0 = i ⊃ ¬ ar ≤ ar0;¬ i0 < i), ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1 ⊦
Used simplifier rules: ⊦ m ≠ n → (m ≤ n ↔ m < n); (s)
| max(ar0), ordered≤(rev(ar0) + i '), perm(i ' + ar0, i0 ' + ar), (i0 = i ⊃ ¬ ar ≤ ar0;¬ i0 < i), ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1 ⊦ |
i0 = i, max(ar0), ordered≤(rev(ar0) + i '), perm(i ' + ar0, i0 ' + ar), ¬ ar ≤ ar0, ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1 ⊦
i0 ≠ i, max(ar0), ordered≤(rev(ar0) + i '), perm(i ' + ar0, i0 ' + ar), ¬ i0 < i, ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1 ⊦
| i0 = i, max(ar0), ordered≤(rev(ar0) + i '), perm(i ' + ar0, i0 ' + ar), ¬ ar ≤ ar0, ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1 ⊦ |
max(ar0), ordered≤(rev(ar0) + i '), perm(ar0, ar), ¬ ar ≤ ar0, ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1 ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list[natarray-oarray-sort] ⊦ perm(a ' + x, a ' + y) ↔ perm(x, y); (s)
| max(ar0), ordered≤(rev(ar0) + i '), perm(ar0, ar), ¬ ar ≤ ar0, ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1 ⊦ |
⊦ max(ar1) ↔ (∀ ar2. perm(ar1, ar2) → ar2 ≤ ar1)
ordered≤(rev(ar0) + i '), perm(ar0, ar), ¬ ar ≤ ar0, ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1, ∀ ar2. perm(ar0, ar2) → ar2 ≤ ar0 ⊦
Used terms: ar0
| ⊦ max(ar1) ↔ (∀ ar2. perm(ar1, ar2) → ar2 ≤ ar1) |
| ordered≤(rev(ar0) + i '), perm(ar0, ar), ¬ ar ≤ ar0, ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1, ∀ ar2. perm(ar0, ar2) → ar2 ≤ ar0 ⊦ |
Used terms: ar
| i0 ≠ i, max(ar0), ordered≤(rev(ar0) + i '), perm(i ' + ar0, i0 ' + ar), ¬ i0 < i, ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1 ⊦ |
i0 ≠ i, i < i0, max(ar0), ordered≤(rev(ar0) + i '), perm(i ' + ar0, i0 ' + ar), ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1 ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ a ≠ b → (a < b ↔ ¬ b < a); (ss)
| i0 ≠ i, i < i0, max(ar0), ordered≤(rev(ar0) + i '), perm(i ' + ar0, i0 ' + ar), ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1 ⊦ |
⊦ a ≠ b → (perm(a ' + x, b ' + y) ↔ a ∈ y ∧ b ∈ x ∧ perm(x -1l b, y -1l a))
i0 ≠ i, i < i0, max(ar0), ordered≤(rev(ar0) + i '), perm(ar0 -1l i0, ar -1l i), i ∈ ar, i0 ∈ ar0, ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1 ⊦
Used terms: i, ar0, i0, ar
| ⊦ a ≠ b → (perm(a ' + x, b ' + y) ↔ a ∈ y ∧ b ∈ x ∧ perm(x -1l b, y -1l a)) |
| i0 ≠ i, i < i0, max(ar0), ordered≤(rev(ar0) + i '), perm(ar0 -1l i0, ar -1l i), i ∈ ar, i0 ∈ ar0, ∀ ar1, i1. ¬ max(ar1) ∨ ¬ ordered≤(rev(ar1) + i1 ') ∨ ¬ perm(i1 ' + ar1, ar) ∨ ar ≤ i1 ' + ar1 ⊦ |
⊦ i > j ∧ i ∈ ar1 ∧ j ∈ ar2 → ¬ ordered≤(ar1 + ar2)
Used simplifier rules: ⊦ m > n ↔ n < m; (s) ⊦ a ∈ rev(x) ↔ a ∈ x; (s) ⊦ a ∈ b ' ↔ a = b; (s) Used terms: rev(ar0), i ', i0, i
| ⊦ i > j ∧ i ∈ ar1 ∧ j ∈ ar2 → ¬ ordered≤(ar1 + ar2) |
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.