| ⊦ # ar3 = n0 + m + 1 ∧ subarray(ar1, 0, m) = subarray(ar3, 0, m) ∧ m + 1 < # ar3 ∧ n0 ≠ 0 ∧ ar1 ≠ ar3 ∧ perm(ar1, ar2) ∧ perm(ar2, ar3) ∧ ar1 ≤ ar2 ∧ ar2 ≤ ar3 ∧ ar2 ≠ ar1 ∧ ar2 ≠ ar3 → subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar3 = n0 + m + 1, subarray(ar1, 0, m) = subarray(ar3, 0, m), ar1 ≠ ar3, ar2 ≠ ar3, ar2 ≠ ar1, n0 ≠ 0, m + 1 < # ar3, perm(ar1, ar2), perm(ar2, ar3), ar1 ≤ ar2, ar2 ≤ ar3 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
| # ar3 = n0 + m + 1, subarray(ar1, 0, m) = subarray(ar3, 0, m), ar1 ≠ ar3, ar2 ≠ ar3, ar2 ≠ ar1, n0 ≠ 0, m + 1 < # ar3, perm(ar1, ar2), perm(ar2, ar3), ar1 ≤ ar2, ar2 ≤ ar3 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
⊦ ar1 ≤ ar2 ∧ ar2 ≤ ar3 ∧ subarray(ar1, 0, m) = subarray(ar3, 0, m) ∧ perm(ar1, ar2) ∧ perm(ar2, ar3) ∧ m < # ar1 → subarray(ar1, 0, m) = subarray(ar2, 0, m)
# ar3 = n0 + m + 1, subarray(ar1, 0, m) = subarray(ar3, 0, m), ar1 ≠ ar3, ar2 ≠ ar3, ar2 ≠ ar1, n0 ≠ 0, m + 1 < # ar3, perm(ar2, ar3), perm(ar1, ar2), ar2 ≤ ar3, ar1 ≤ ar2, ar1 ≤ ar2 ∧ ar2 ≤ ar3 ∧ subarray(ar1, 0, m) = subarray(ar3, 0, m) ∧ perm(ar1, ar2) ∧ perm(ar2, ar3) ∧ m < # ar1 → subarray(ar1, 0, m) = subarray(ar2, 0, m) ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used terms: ar1, ar2, ar3, m
| ⊦ ar1 ≤ ar2 ∧ ar2 ≤ ar3 ∧ subarray(ar1, 0, m) = subarray(ar3, 0, m) ∧ perm(ar1, ar2) ∧ perm(ar2, ar3) ∧ m < # ar1 → subarray(ar1, 0, m) = subarray(ar2, 0, m) |
| # ar3 = n0 + m + 1, subarray(ar1, 0, m) = subarray(ar3, 0, m), ar1 ≠ ar3, ar2 ≠ ar3, ar2 ≠ ar1, n0 ≠ 0, m + 1 < # ar3, perm(ar2, ar3), perm(ar1, ar2), ar2 ≤ ar3, ar1 ≤ ar2, ar1 ≤ ar2 ∧ ar2 ≤ ar3 ∧ subarray(ar1, 0, m) = subarray(ar3, 0, m) ∧ perm(ar1, ar2) ∧ perm(ar2, ar3) ∧ m < # ar1 → subarray(ar1, 0, m) = subarray(ar2, 0, m) ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar3 = n0 + m + 1, subarray(ar1, 0, m) = subarray(ar3, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, m + 1 < # ar3, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, m < # ar1 → subarray(ar3, 0, m) = subarray(ar2, 0, m) ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used simplifier rules: array-le-trans: ⊦ ar0 ≤ ar1 ∧ ar1 ≤ ar2 → ar0 ≤ ar2; c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ 1 = m + 1 ↔ m = 0; (s) ⊦ m + 1 ≠ 0; (s) ⊦ 1 < m ↔ ¬(m = 0 ∨ m = 1); (s) ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ # x = 0 ↔ x = []; (s) trans: ⊦ perm(x, y) ∧ perm(y, z) → perm(x, z); (forward) from specification list-perm[natarray-oarray-sort] lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| # ar3 = n0 + m + 1, subarray(ar1, 0, m) = subarray(ar3, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, m + 1 < # ar3, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, m < # ar1 → subarray(ar3, 0, m) = subarray(ar2, 0, m) ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
⊦ perm(x, y) → (# x = # y ↔ true)
# ar3 = n0 + m + 1, subarray(ar1, 0, m) = subarray(ar3, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, m + 1 < # ar3, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, m < # ar1 → subarray(ar3, 0, m) = subarray(ar2, 0, m), perm(ar1, ar3) → (# ar1 = # ar3 ↔ true) ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used terms: ar1, ar3
| ⊦ perm(x, y) → (# x = # y ↔ true) |
| # ar3 = n0 + m + 1, subarray(ar1, 0, m) = subarray(ar3, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, m + 1 < # ar3, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, m < # ar1 → subarray(ar3, 0, m) = subarray(ar2, 0, m), perm(ar1, ar3) → (# ar1 = # ar3 ↔ true) ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar3 = n0 + m + 1, # ar1 = # ar3, subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, m < # ar3, m + 1 < # ar3, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ ¬ m + n < m; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic ⊦ ¬ m < n → ¬ m + m0 < n; (s)
| # ar3 = n0 + m + 1, # ar1 = # ar3, subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, m < # ar3, m + 1 < # ar3, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
m < # ar ⊦ ar = subarray(ar, 0, m) + subarray(ar, m, # ar - m)
# ar1 = # ar3, # ar3 = n0 + m + 1, ar3 = subarray(ar3, 0, m) + subarray(ar3, m, # ar3 - m), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, m + 1 < # ar3, m < # ar3, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used terms: m, ar3
| m < # ar ⊦ ar = subarray(ar, 0, m) + subarray(ar, m, # ar - m) |
| # ar1 = # ar3, # ar3 = n0 + m + 1, ar3 = subarray(ar3, 0, m) + subarray(ar3, m, # ar3 - m), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, m + 1 < # ar3, m < # ar3, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar3 = n0 + m + 1, # ar1 = # ar3, ar3 = subarray(ar2, 0, m) + subarray(ar3, m, # ar3 - m), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, m < # ar3, m + 1 < # ar3, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
| # ar3 = n0 + m + 1, # ar1 = # ar3, ar3 = subarray(ar2, 0, m) + subarray(ar3, m, # ar3 - m), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, m < # ar3, m + 1 < # ar3, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar1 = # ar3, # ar3 = n0 + m + 1, # ar3 = n1 + m, ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, m + 1 < # ar3, m < # ar3, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, m ≤ # ar3 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used simplifier rules: ⊦ m < n → m ≤ n; (s) n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: # ar3, m, n
| # ar1 = # ar3, # ar3 = n0 + m + 1, # ar3 = n1 + m, ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, m + 1 < # ar3, m < # ar3, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, m ≤ # ar3 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar1 = # ar3, # ar3 = (n0 + 1) + m, ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ 1 = m + 1 ↔ m = 0; (s) ⊦ m + 1 ≠ 0; (s) ⊦ 1 < m ↔ ¬(m = 0 ∨ m = 1); (s) ⊦ m + n < m + n0 ↔ n < n0; (s) ⊦ ¬ m + n < m; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m + n = 1 ↔ m = 0 ∧ n = 1 ∨ n = 0 ∧ m = 1; (ws) ⊦ m < m + n ↔ n ≠ 0; (s) ⊦ m < n → n ≠ 0; (s) ⊦ m + n = m + n0 ↔ n = n0; (s) lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m < n → m ≤ n; (s)
| # ar1 = # ar3, # ar3 = (n0 + 1) + m, ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
m < # ar ⊦ ar = subarray(ar, 0, m) + subarray(ar, m, # ar - m)
# ar3 = (n0 + 1) + m, # ar1 = # ar3, ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, ¬ m < # ar1 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
# ar3 = (n0 + 1) + m, # ar1 = # ar3, ar1 = subarray(ar1, 0, m) + subarray(ar1, m, # ar1 - m), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used terms: m, ar1
| m < # ar ⊦ ar = subarray(ar, 0, m) + subarray(ar, m, # ar - m) |
| # ar3 = (n0 + 1) + m, # ar1 = # ar3, ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, ¬ m < # ar1 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar1 = # ar3, # ar3 = (n0 + 1) + m, ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, # ar3 ≤ m ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # ar1 = # ar3, # ar3 = (n0 + 1) + m, ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, # ar3 ≤ m ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
⊦ m ≤ n ↔ (∃ n0. m + n0 = n)
Used simplifier rules: ⊦ m = m + n ↔ n = 0; (s) ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: # ar3, m
| ⊦ m ≤ n ↔ (∃ n0. m + n0 = n) |
| # ar3 = (n0 + 1) + m, # ar1 = # ar3, ar1 = subarray(ar1, 0, m) + subarray(ar1, m, # ar1 - m), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar1 = # ar3, # ar3 = (n0 + 1) + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, # ar3 - m), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
| # ar1 = # ar3, # ar3 = (n0 + 1) + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, # ar3 - m), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar3 = (n0 + 1) + m, # ar1 = # ar3, # ar3 = n1 + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, m ≤ # ar3 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used simplifier rules: ⊦ m ≤ n ↔ ¬ n < m; (ss) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lel: ⊦ a < b ∧ a = c → c < b; (forward) from specification oelem[natarray] ⊦ m < n → n ≠ 0; (s) ⊦ ¬ m + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: # ar3, m, n
| # ar3 = (n0 + 1) + m, # ar1 = # ar3, # ar3 = n1 + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, m ≤ # ar3 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar3 = # ar1, # ar1 = (n0 + 1) + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ m + n; (s) ⊦ m + n = m + n0 ↔ n = n0; (s)
| # ar3 = # ar1, # ar1 = (n0 + 1) + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
m < # ar ⊦ ar = subarray(ar, 0, m) + subarray(ar, m, # ar - m)
# ar1 = (n0 + 1) + m, # ar3 = # ar1, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, ¬ m < # ar2 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
# ar1 = (n0 + 1) + m, # ar3 = # ar1, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, # ar2 - m), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used terms: ar2, m
| m < # ar ⊦ ar = subarray(ar, 0, m) + subarray(ar, m, # ar - m) |
| # ar1 = (n0 + 1) + m, # ar3 = # ar1, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, ¬ m < # ar2 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar3 = # ar1, # ar1 = (n0 + 1) + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, # ar2 ≤ m ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| # ar3 = # ar1, # ar1 = (n0 + 1) + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, # ar2 ≤ m ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
⊦ perm(x, y) → (# x = # y ↔ true)
# ar1 = (n0 + 1) + m, # ar3 = # ar1, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), # ar2 ≤ m, ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, perm(ar2, ar3) → (# ar2 = # ar3 ↔ true) ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used terms: ar2, ar3
| ⊦ perm(x, y) → (# x = # y ↔ true) |
| # ar1 = (n0 + 1) + m, # ar3 = # ar1, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), # ar2 ≤ m, ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, perm(ar2, ar3) → (# ar2 = # ar3 ↔ true) ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar3 = # ar1, # ar1 = (n0 + 1) + m, # ar2 = # ar1, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, # ar1 ≤ m ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
| # ar3 = # ar1, # ar1 = (n0 + 1) + m, # ar2 = # ar1, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, # ar1 ≤ m ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
⊦ m ≤ n ↔ (∃ n0. m + n0 = n)
Used simplifier rules: ⊦ m = m + n ↔ n = 0; (s) ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: # ar1, m
| ⊦ m ≤ n ↔ (∃ n0. m + n0 = n) |
| # ar1 = (n0 + 1) + m, # ar3 = # ar1, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, # ar2 - m), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
⊦ ar1 = ar + ar11 ∧ ar2 = ar + ar22 → (ar1 ≤ ar2 ↔ ar11 ≤ ar22)
# ar3 = # ar1, # ar1 = (n0 + 1) + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, # ar2 - m), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1) ∧ ar2 = subarray(ar2, 0, m) + subarray(ar2, m, # ar2 - m) → (ar1 ≤ ar2 ↔ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, # ar2 - m)) ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used terms: subarray(ar2, m, # ar2 - m), subarray(ar2, 0, m), ar2, ar1, subarray(ar1, m, n0 + 1)
| ⊦ ar1 = ar + ar11 ∧ ar2 = ar + ar22 → (ar1 ≤ ar2 ↔ ar11 ≤ ar22) |
| # ar3 = # ar1, # ar1 = (n0 + 1) + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, # ar2 - m), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1) ∧ ar2 = subarray(ar2, 0, m) + subarray(ar2, m, # ar2 - m) → (ar1 ≤ ar2 ↔ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, # ar2 - m)) ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar1 = (n0 + 1) + m, # ar3 = # ar1, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, # ar2 - m), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, # ar2 - m) ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
| # ar1 = (n0 + 1) + m, # ar3 = # ar1, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, # ar2 - m), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, # ar2 - m) ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
⊦ perm(x, y) → (# x = # y ↔ true)
# ar3 = # ar1, # ar1 = (n0 + 1) + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, # ar2 - m), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, # ar2 - m), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, perm(ar1, ar2) → (# ar1 = # ar2 ↔ true) ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used terms: ar1, ar2
| ⊦ perm(x, y) → (# x = # y ↔ true) |
| # ar3 = # ar1, # ar1 = (n0 + 1) + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, # ar2 - m), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, # ar2 - m), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, perm(ar1, ar2) → (# ar1 = # ar2 ↔ true) ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar2 = (n0 + 1) + m, # ar3 = # ar2, # ar1 = # ar2, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, # ar2 - m), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, # ar2 - m) ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
| # ar2 = (n0 + 1) + m, # ar3 = # ar2, # ar1 = # ar2, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, # ar2 - m), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, # ar2 - m) ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar1 = # ar2, # ar3 = # ar2, # ar2 = (n0 + 1) + m, # ar2 = n1 + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n1), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, m ≤ # ar2 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used simplifier rules: ⊦ m ≤ n ↔ ¬ n < m; (ss) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic lel: ⊦ a < b ∧ a = c → c < b; (forward) from specification oelem[natarray] ⊦ m < n → n ≠ 0; (s) ⊦ ¬ m + n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: # ar2, m, n
| # ar1 = # ar2, # ar3 = # ar2, # ar2 = (n0 + 1) + m, # ar2 = n1 + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n1), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, m ≤ # ar2 ⊦ subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar3 = # ar2, # ar1 = # ar2, # ar2 = (n0 + 1) + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ⊦ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m ≤ m + n; (s) ⊦ m + n = m + n0 ↔ n = n0; (s)
| # ar3 = # ar2, # ar1 = # ar2, # ar2 = (n0 + 1) + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1) ⊦ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
⊦ ar1 = ar + ar11 ∧ ar2 = ar + ar22 → (ar1 ≤ ar2 ↔ ar11 ≤ ar22)
# ar2 = (n0 + 1) + m, # ar1 = # ar2, # ar3 = # ar2, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1) ∧ ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1) → (ar2 ≤ ar3 ↔ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1)) ⊦ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used terms: subarray(ar3, m, n0 + 1), subarray(ar2, 0, m), ar3, ar2, subarray(ar2, m, n0 + 1)
| ⊦ ar1 = ar + ar11 ∧ ar2 = ar + ar22 → (ar1 ≤ ar2 ↔ ar11 ≤ ar22) |
| # ar2 = (n0 + 1) + m, # ar1 = # ar2, # ar3 = # ar2, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1) ∧ ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1) → (ar2 ≤ ar3 ↔ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1)) ⊦ subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ∧ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar3 = # ar2, # ar1 = # ar2, # ar2 = (n0 + 1) + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1), subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar1, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ⊦ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1)
Used simplifier rules: array-le-trans: ⊦ ar0 ≤ ar1 ∧ ar1 ≤ ar2 → ar0 ≤ ar2;
| # ar3 = # ar2, # ar1 = # ar2, # ar2 = (n0 + 1) + m, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1), subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar1, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1) ⊦ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ∧ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ∧ subarray(ar1, m, n0 + 1) ≠ subarray(ar2, m, n0 + 1) ∧ subarray(ar2, m, n0 + 1) ≠ subarray(ar3, m, n0 + 1) |
# ar2 = (n0 + 1) + m, # ar1 = # ar2, # ar3 = # ar2, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), subarray(ar1, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, ¬ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ⊦
# ar2 = (n0 + 1) + m, # ar1 = # ar2, # ar3 = # ar2, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), subarray(ar1, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, ¬ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ⊦
Used simplifier rules: array-le-trans: ⊦ ar0 ≤ ar1 ∧ ar1 ≤ ar2 → ar0 ≤ ar2; array-le-refl: ⊦ ar ≤ ar;
| # ar2 = (n0 + 1) + m, # ar1 = # ar2, # ar3 = # ar2, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), subarray(ar1, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, ¬ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ⊦ |
⊦ perm(x + y, x + z) ↔ perm(y, z)
# ar3 = # ar2, # ar1 = # ar2, # ar2 = (n0 + 1) + m, perm(subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1)) ↔ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)), ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1), subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar1, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), ¬ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ⊦
Used terms: subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1), subarray(ar2, 0, m)
| ⊦ perm(x + y, x + z) ↔ perm(y, z) |
| # ar3 = # ar2, # ar1 = # ar2, # ar2 = (n0 + 1) + m, perm(subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1)) ↔ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)), ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1), subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar1, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), ¬ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ⊦ |
# ar2 = (n0 + 1) + m, # ar1 = # ar2, # ar3 = # ar2, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), subarray(ar1, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, ¬ perm(subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1)), ¬ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ⊦
| # ar2 = (n0 + 1) + m, # ar1 = # ar2, # ar3 = # ar2, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), subarray(ar1, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, ¬ perm(subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1)), ¬ perm(subarray(ar1, m, n0 + 1), subarray(ar2, m, n0 + 1)) ⊦ |
Used simplifier rules: ⊦ perm(x, y) ∧ ¬ perm(x0, y) → x ≠ x0; (s)
| # ar2 = (n0 + 1) + m, # ar1 = # ar2, # ar3 = # ar2, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), subarray(ar1, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, ¬ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ⊦ |
⊦ perm(x + y, x + z) ↔ perm(y, z)
# ar3 = # ar2, # ar1 = # ar2, # ar2 = (n0 + 1) + m, perm(subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1)) ↔ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)), ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1), subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar1, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), ¬ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ⊦
Used terms: subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1), subarray(ar2, 0, m)
| ⊦ perm(x + y, x + z) ↔ perm(y, z) |
| # ar3 = # ar2, # ar1 = # ar2, # ar2 = (n0 + 1) + m, perm(subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1)) ↔ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)), ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar1, 0, m) = subarray(ar2, 0, m), subarray(ar3, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar2), perm(ar2, ar3), perm(ar1, ar3), ar1 ≤ ar2, ar2 ≤ ar3, ar1 ≤ ar3, subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1), subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar1, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), ¬ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ⊦ |
# ar2 = (n0 + 1) + m, # ar1 = # ar2, # ar3 = # ar2, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), subarray(ar1, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, ¬ perm(subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1)), ¬ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ⊦
| # ar2 = (n0 + 1) + m, # ar1 = # ar2, # ar3 = # ar2, ar1 = subarray(ar2, 0, m) + subarray(ar1, m, n0 + 1), ar2 = subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), ar3 = subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1), subarray(ar3, 0, m) = subarray(ar2, 0, m), subarray(ar1, 0, m) = subarray(ar2, 0, m), ar1 ≠ ar3, ar2 ≠ ar1, ar2 ≠ ar3, ar3 ≠ [], n0 ≠ 0, perm(ar1, ar3), perm(ar2, ar3), perm(ar1, ar2), subarray(ar1, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar2, m, n0 + 1) ≤ subarray(ar3, m, n0 + 1), subarray(ar1, m, n0 + 1) ≤ subarray(ar2, m, n0 + 1), ar1 ≤ ar3, ar2 ≤ ar3, ar1 ≤ ar2, ¬ perm(subarray(ar2, 0, m) + subarray(ar2, m, n0 + 1), subarray(ar2, 0, m) + subarray(ar3, m, n0 + 1)), ¬ perm(subarray(ar2, m, n0 + 1), subarray(ar3, m, n0 + 1)) ⊦ |
Used simplifier rules: ⊦ perm(x, y) ∧ ¬ perm(x0, y) → x ≠ x0; (s)
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.