| ⌜n⌝ < # σ, σ ≠ [] → (∃ a, σ0. σ = ⌜a '⌝ + σ0) ⊦ σ to n + 1 = (σ to n) + ⌜σ[n] '⌝ |
⌜n⌝ < ⌜1⌝ + # σ0 ⊦ ⌜a '⌝ + σ0 = [], ⌜a '⌝ + (σ0 to n) = (⌜a '⌝ + σ0 to n) + ⌜(⌜a '⌝ + σ0)[n] '⌝
Used simplifier rules: size-empty: ⊦ # [] = ⌜0⌝ ;%to-succ-cons: ⊦ ⌜a '⌝ + σ to n + 1 = a + (σ to n);%cons-append: ⊦ a + σ = ⌜a '⌝ + σ;%append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2;%size-append: ⊦ #(σ + σ1) = # σ + # σ1;%size-fin: ⊦ # ⌜x⌝ = ⌜# x⌝ ;% ⊦ # a ' = 0 +1; (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ ¬ m < 0; (s)% ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)