| ⊦ x0 ⊑ prefixn(n, x0 + x1) ↔ n ≥ # x0 |
n ≤ # x ⊦ prefixn(n, x + y) = prefixn(n, x)
⊦ prefixn(n, x) = (n ≤ # x ⊃ firstn(n, x);x)
⊦ # x0 ≤ n → prefixn(n, x0 + x1) = x0 + prefixn(n - # x0, x1)
n < # x0, x0 ⊑ firstn(n, x0) ⊦ x0 = []
Used simplifier rules: prefixn-append-left: n ≤ # x ⊦ prefixn(n, x + y) = prefixn(n, x);%prefixn: ⊦ prefixn(n, x) = (n ≤ # x ⊃ firstn(n, x);x);%prefixn-shift-right: ⊦ # x0 ≤ n → prefixn(n, x0 + x1) = x0 + prefixn(n - # x0, x1);% ⊦ # x = 0 ↔ x = []; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ x ⊑ x + y; (s)%n0 ≤ n ⊦ n - n0 ≤ m ↔ n ≤ m + n0; (s)% ⊦ m ≤ n → (n < m ↔ false); (s)%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ m < n → m ≤ n; (s)% ⊦ n ≥ m ↔ m ≤ n; (s)% ⊦ m ≤ n ↔ ¬ n < m; (ss)