| ⊦ perm(x, mklist(a, #oc(a, x)) + y) ↔ perm(x -l a, y), a ∈ y |
∀ x, a. (perm(x, mklist(a, #oc(a, x)) + y0) ↔ perm(x -l a, y0)) ∨ a ∈ y0 ⊦ perm(x, mklist(a, #oc(a, x)) + (a0 + y0)) ↔ perm(x -l a, a0 + y0), a ∈ a0 + y0
Used simplifier rules: perm-mklist: ⊦ perm(x, mklist(a, n)) ↔ x = mklist(a, n);%ocs-mklist: ⊦ x = mklist(a, #oc(a, x)) ↔ x -l a = [];%empty: ⊦ perm(x, []) ↔ x = [];%list freely generated by [], +;;%app: ⊦ x + [] = x; from specification list%a: ⊦ (x + y) + z = x + y + z; from specification list