y = y0 + z ∧ # y0 = n, n ≤ # y ⊦ (a0 ' + y)[n, a] = firstn(n, a0 ' + y) + a ' + z
Rule argument
spec: list-del
inst:
name: elim-firstn-restn
seq: ⊦ n ≤ # x
→ (y = firstn(n, x) ∧ z = restn(n, x) ↔ x = y + z ∧ # y = n)
subst: [x, n, y, z] → [y, n, y0, z]
flags: rewrite, current