| n ≤ n0 ⊦ prefixn(n, x) + slice(n, n0, x) = prefixn(n0, x) |
⊦ prefixn(n, x) = (n ≤ # x ⊃ firstn(n, x);x)
⊦ slice(n0, n1, x) = (n0 ≤ n1 ⊃ prefixn(n1 - n0, dropn(n0, x));[])
⊦ dropn(n, x) = (n ≤ # x ⊃ restn(n, x);[])
n ≤ n0 ⊦ (n ≤ # x ⊃ firstn(n, x);x) + (n0 ≤ # (n ≤ # x ⊃ restn(n, x);[]) + n ⊃ firstn(n0 - n, (n ≤ # x ⊃ restn(n, x);[]));(n ≤ # x ⊃ restn(n, x);[])) = (n0 ≤ # x ⊃ firstn(n0, x);x)
Used simplifier rules: prefixn: ⊦ prefixn(n, x) = (n ≤ # x ⊃ firstn(n, x);x);%slice: ⊦ slice(n0, n1, x) = (n0 ≤ n1 ⊃ prefixn(n1 - n0, dropn(n0, x));[]);%dropn: ⊦ dropn(n, x) = (n ≤ # x ⊃ restn(n, x);[]);%n0 ≤ n ⊦ n - n0 ≤ m ↔ n ≤ m + n0; (s)% ⊦ m ≤ n → (n < m ↔ false); (s)% ⊦ m ≤ n ↔ ¬ n < m; (ss)