| perm(ints0, ints1 + ints), i ≤ j, ints = [] ∨ j < min(ints), ints1 = [] ∨ max(ints1) ≤ j ⊦ perm(i ' + ints0, (i + ints1) + ints) ∧ (i + ints1 = [] ∨ max(i + ints1) ≤ j) ∧ (ints = [] ∨ j < min(ints)) |
perm(ints0, ints1 + ints), i ≤ j, j < max(i ' + ints1), max(ints1) ≤ j, i < max(i ' + ints1), max(ints1) < max(i ' + ints1), ints = [] ∨ j < min(ints) ⊦ ints1 = []
Used simplifier rules: max-one: ⊦ max(i ') = i;%forward-lels: ⊦ i ≤ j ∧ j < j0 → i < j0; (forward) from specification int-abs%lenls: ⊦ i ≤ j → ¬ j < i; from specification int-abs%app: ⊦ ints + [] = ints; from specification list[intlista]%lels-01: ⊦ ¬ i ≤ j ↔ j < i; from specification int-abs%e-01: ⊦ i ' + ints ≠ []; from specification list[intlista]%a: ⊦ perm(ints, ints0) → perm(ints1 + ints, ints1 + ints0); from specification list-perm[intlista]%a: ⊦ (ints + ints0) + ints1 = ints + ints0 + ints1; from specification list[intlista]%c: ⊦ i + ints = i ' + ints; from specification list[intlista]