| ⊦ nextperm(ar1, ar2) → greaterPerms(ar1) = greaterPerms(ar2) ++ ar2 |
greaterPerms(ar1) ≠ greaterPerms(ar2) ++ ar2, nextperm(ar1, ar2) ⊦
| greaterPerms(ar1) ≠ greaterPerms(ar2) ++ ar2, nextperm(ar1, ar2) ⊦ |
⊦ nextperm(ar1, ar2) ↔ perm(ar1, ar2) ∧ ar1 ≠ ar2 ∧ ar1 ≤ ar2 ∧ (∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬(ar1 ≤ ar3 ∧ ar3 ≤ ar2))
ar1 ≠ ar2, greaterPerms(ar1) ≠ greaterPerms(ar2) ++ ar2, perm(ar1, ar2), ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬(ar1 ≤ ar3 ∧ ar3 ≤ ar2) ⊦
Used terms: ar1, ar2
| ⊦ nextperm(ar1, ar2) ↔ perm(ar1, ar2) ∧ ar1 ≠ ar2 ∧ ar1 ≤ ar2 ∧ (∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬(ar1 ≤ ar3 ∧ ar3 ≤ ar2)) |
| ar1 ≠ ar2, greaterPerms(ar1) ≠ greaterPerms(ar2) ++ ar2, perm(ar1, ar2), ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬(ar1 ≤ ar3 ∧ ar3 ≤ ar2) ⊦ |
ar1 ≠ ar2, greaterPerms(ar1) ≠ greaterPerms(ar2) ++ ar2, perm(ar1, ar2), ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦
| ar1 ≠ ar2, greaterPerms(ar1) ≠ greaterPerms(ar2) ++ ar2, perm(ar1, ar2), ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦ |
⊦ s1 = s2 ↔ (∀ a. a ∈ s1 ↔ a ∈ s2)
ar1 ≠ ar2, perm(ar1, ar2), ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2, ∃ a. ¬(a ∈ greaterPerms(ar1) ↔ a ∈ greaterPerms(ar2) ++ ar2) ⊦
Used terms: greaterPerms(ar1), greaterPerms(ar2) ++ ar2
| ⊦ s1 = s2 ↔ (∀ a. a ∈ s1 ↔ a ∈ s2) |
| ar1 ≠ ar2, perm(ar1, ar2), ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2, ∃ a. ¬(a ∈ greaterPerms(ar1) ↔ a ∈ greaterPerms(ar2) ++ ar2) ⊦ |
¬(ar1 ≠ ar ∧ perm(ar1, ar) ∧ ar1 ≤ ar ↔ ar = ar2 ∨ perm(ar2, ar) ∧ ar2 ≤ ar), ar1 ≠ ar2, perm(ar1, ar2), ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦
Used simplifier rules: greater-perms: ⊦ ar0 ∈ greaterPerms(ar) ↔ ar ≠ ar0 ∧ perm(ar, ar0) ∧ ar ≤ ar0; ⊦ a ∈ s ++ b ↔ a = b ∨ a ∈ s; (s)
| ¬(ar1 ≠ ar ∧ perm(ar1, ar) ∧ ar1 ≤ ar ↔ ar = ar2 ∨ perm(ar2, ar) ∧ ar2 ≤ ar), ar1 ≠ ar2, perm(ar1, ar2), ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦ |
¬(ar1 ≠ ar ∧ perm(ar1, ar) ∧ ar1 ≤ ar ↔ ar = ar2 ∨ perm(ar2, ar) ∧ ar2 ≤ ar), ar1 ≠ ar2, perm(ar1, ar2), perm(ar1, ar), ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦
Used simplifier rules: array-le-trans: ⊦ ar0 ≤ ar1 ∧ ar1 ≤ ar2 → ar0 ≤ ar2; ⊦ perm(x, y) ∧ ¬ perm(x0, y) → x ≠ x0; (s) trans: ⊦ perm(x, y) ∧ perm(y, z) → perm(x, z); (forward) from specification list-perm[natarray-oarray-sort] Used formulas: perm(ar1, ar)
| ¬(ar1 ≠ ar ∧ perm(ar1, ar) ∧ ar1 ≤ ar ↔ ar = ar2 ∨ perm(ar2, ar) ∧ ar2 ≤ ar), ar1 ≠ ar2, perm(ar1, ar2), perm(ar1, ar), ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦ |
¬(ar1 ≠ ar ∧ ar1 ≤ ar ↔ ar = ar2 ∨ perm(ar2, ar) ∧ ar2 ≤ ar), ar1 ≠ ar2, perm(ar1, ar), perm(ar1, ar2), ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦
| ¬(ar1 ≠ ar ∧ ar1 ≤ ar ↔ ar = ar2 ∨ perm(ar2, ar) ∧ ar2 ≤ ar), ar1 ≠ ar2, perm(ar1, ar), perm(ar1, ar2), ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦ |
¬(ar1 ≠ ar ∧ ar1 ≤ ar ↔ ar = ar2 ∨ perm(ar2, ar) ∧ ar2 ≤ ar), ar ≠ ar2, ar1 ≠ ar2, perm(ar1, ar2), perm(ar1, ar), ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦
Used formulas: ar = ar2
| ¬(ar1 ≠ ar ∧ ar1 ≤ ar ↔ ar = ar2 ∨ perm(ar2, ar) ∧ ar2 ≤ ar), ar ≠ ar2, ar1 ≠ ar2, perm(ar1, ar2), perm(ar1, ar), ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦ |
ar ≠ ar2, ar1 ≠ ar2, ar1 ≠ ar, perm(ar1, ar), perm(ar1, ar2), ar1 ≤ ar2, ar1 ≤ ar, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦ perm(ar2, ar) ∧ ar2 ≤ ar
Used simplifier rules: array-le-trans: ⊦ ar0 ≤ ar1 ∧ ar1 ≤ ar2 → ar0 ≤ ar2; array-neg-le-eq-2: ⊦ ar0 ≠ ar1 ∧ ar0 ≤ ar1 → ¬ ar1 ≤ ar0;
| ar ≠ ar2, ar1 ≠ ar2, ar1 ≠ ar, perm(ar1, ar), perm(ar1, ar2), ar1 ≤ ar2, ar1 ≤ ar, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦ perm(ar2, ar) ∧ ar2 ≤ ar |
⊦ perm(x, y) ∧ perm(y, z) → perm(x, z)
ar ≠ ar2, ar1 ≠ ar2, ar1 ≠ ar, perm(ar1, ar2), perm(ar1, ar), ar1 ≤ ar, ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦ perm(ar2, ar) ∧ ar2 ≤ ar, perm(ar2, ar1) ∧ perm(ar1, ar)
ar ≠ ar2, ar1 ≠ ar2, ar1 ≠ ar, perm(ar1, ar2), perm(ar2, ar1), perm(ar1, ar), ar1 ≤ ar, ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦ true ∧ ar2 ≤ ar
Used terms: ar1, ar2, ar
| ⊦ perm(x, y) ∧ perm(y, z) → perm(x, z) |
| ar ≠ ar2, ar1 ≠ ar2, ar1 ≠ ar, perm(ar1, ar2), perm(ar1, ar), ar1 ≤ ar, ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦ perm(ar2, ar) ∧ ar2 ≤ ar, perm(ar2, ar1) ∧ perm(ar1, ar) |
ar ≠ ar2, ar1 ≠ ar2, ar1 ≠ ar, perm(ar1, ar), perm(ar1, ar2), ar1 ≤ ar2, ar1 ≤ ar, ¬ perm(ar2, ar1), ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦ perm(ar2, ar) ∧ ar2 ≤ ar
| ar ≠ ar2, ar1 ≠ ar2, ar1 ≠ ar, perm(ar1, ar), perm(ar1, ar2), ar1 ≤ ar2, ar1 ≤ ar, ¬ perm(ar2, ar1), ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦ perm(ar2, ar) ∧ ar2 ≤ ar |
⊦ perm(x, y) ↔ perm(y, x)
Used terms: ar1, ar2
| ⊦ perm(x, y) ↔ perm(y, x) |
| ar ≠ ar2, ar1 ≠ ar2, ar1 ≠ ar, perm(ar1, ar2), perm(ar2, ar1), perm(ar1, ar), ar1 ≤ ar, ar1 ≤ ar2, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦ true ∧ ar2 ≤ ar |
ar ≠ ar2, ar1 ≠ ar, ar1 ≠ ar2, perm(ar2, ar), perm(ar1, ar2), perm(ar2, ar1), perm(ar1, ar), ar1 ≤ ar, ar1 ≤ ar2, ¬ ar2 ≤ ar, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦
Used simplifier rules: trans: ⊦ perm(x, y) ∧ perm(y, z) → perm(x, z); (forward) from specification list-perm[natarray-oarray-sort] ⊦ perm(x, x); (s)
| ar ≠ ar2, ar1 ≠ ar, ar1 ≠ ar2, perm(ar2, ar), perm(ar1, ar2), perm(ar2, ar1), perm(ar1, ar), ar1 ≤ ar, ar1 ≤ ar2, ¬ ar2 ≤ ar, ∀ ar3. perm(ar1, ar3) ∧ ar3 ≠ ar1 ∧ ar3 ≠ ar2 → ¬ ar1 ≤ ar3 ∨ ¬ ar3 ≤ ar2 ⊦ |
Used simplifier rules: array-neg-le-eq: ⊦ ar0 ≠ ar1 ∧ ¬ ar1 ≤ ar0 → ar0 ≤ ar1; Used terms: ar
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.