| ∀ n, m. dropn(n, lax0.to-adr(m)) = dropn(n, lax0).to-adr(m) ⊦ dropn(m2, lax0.to-adr(m)) = dropn(m2 + 1, @(m0, m1) ' + lax0).to-adr(m) |
⊦ n ≠ 0 → dropn(n, lax) = (lax = [] ⊃ [];dropn(n - 1, lax.tail))
∀ n, m. dropn(n, lax0.to-adr(m)) = dropn(n, lax0).to-adr(m) ⊦ m2 + 1 = 0, dropn(m2, lax0.to-adr(m)) = (@(m0, m1) ' + lax0 = [] ⊃ [];dropn(m2 + 1 - 1, (@(m0, m1) ' + lax0).tail)).to-adr(m)
Used simplifier rules: ⊦ m + n = 0 ↔ m = 0 ∧ n = 0; (ws)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic Used terms: @(m0, m1) ' + lax0, m2 + 1