| perm(ints, ints0 + ints1) ⊦ Π ints = Π ints0 * Π ints1 |
∀ ints0, ints1. perm(ints2, ints0 + ints1) → Π ints2 = Π ints0 * Π ints1, perm(i + ints2, ints0 + ints1) ⊦ Π(i + ints2) = Π ints0 * Π ints1
Used simplifier rules: prod-empty: ⊦ Π [] = 1;%intlist freely generated by [], +;;%empty-01: ⊦ perm([], ints) ↔ ints = []; from specification list-perm[intlista]%app-02-ant: ⊦ ¬ ints + ints0 ≠ [] ↔ ints = [] ∧ ints0 = []; from specification list[intlista]%a: ⊦ (ints + ints0) + ints1 = ints + ints0 + ints1; from specification list[intlista]%associativity: ⊦ i * j * j0 = (i * j) * j0; from specification int-mult%commutativity: ⊦ i * j = j * i; from specification int-mult