| ∀ 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) |
∀ n, m. dropn(n, lax0.to-adr(m)) = dropn(n, lax0).to-adr(m) ⊦ dropn(m2, lax0.to-adr(m)) = dropn(m2, lax0).to-adr(m)
Used simplifier rules: ⊦ m + 1 ≠ 0; (s)% ⊦ (ladr ' + lax).tail = lax; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ n + 0 = n; (s)% ⊦ n ≤ m → m + n0 - n = (m - n) + n0; (s)%a: ⊦ (lax + lax0) + lax1 = lax + lax0 + lax1; from specification list[laddress-list]% ⊦ ladr ' + lax ≠ []; (s)