| n = n0 + n1 ⊦ prefixn(n, x) = prefixn(n0, x) + prefixn(n1, dropn(n0, x)) |
⊦ prefixn(n, x) = (n ≤ # x ⊃ firstn(n, x);x)
⊦ dropn(n, x) = (n ≤ # x ⊃ restn(n, x);[])
⊦ (n0 + n1 ≤ # x ⊃ firstn(n0 + n1, x);x) = (n0 ≤ # x ⊃ firstn(n0, x);x) + (n1 ≤ # (n0 ≤ # x ⊃ restn(n0, x);[]) ⊃ firstn(n1, (n0 ≤ # x ⊃ restn(n0, x);[]));(n0 ≤ # x ⊃ restn(n0, x);[]))
Used simplifier rules: prefixn: ⊦ prefixn(n, x) = (n ≤ # x ⊃ firstn(n, x);x);%dropn: ⊦ dropn(n, x) = (n ≤ # x ⊃ restn(n, x);[]);