| σ0 = ⌜x⌝ ⊦ # σ0 < ⌜n1⌝ , # σ < ⌜n⌝ , #((σ to n) + σ0 from n1 + n) = #(σ0 from n1) ∧ (⌜n0⌝ < #((σ to n) + σ0 from n1 + n) → ((σ to n) + σ0 from n1 + n)[n0] = (σ0 from n1)[n0]), ⌜n1⌝ < # σ0 ∧ finp(σ0) |
⊦ # σ < ⌜n⌝ , (σ to n) + ⌜x⌝ from # x + n = [] ∧ (⌜n0⌝ < #((σ to n) + ⌜x⌝ from # x + n) → ((σ to n) + ⌜x⌝ from # x + n)[n0] = ([])[n0])
Used simplifier rules: size-fin: ⊦ # ⌜x⌝ = ⌜# x⌝ ;%from-fin: ⊦ ⌜x⌝ from n = ⌜x from n⌝ ;%length-from: ¬ # x < n ⊦ #(x from n) = # x - n;%sel-fin: ⊦ ⌜x⌝ [n] = x[n];%size-empty-equiv: ⊦ # σ = ⌜0⌝ ↔ σ = [];%from-all: ⊦ x from # x = [];%zero: ⊦ m - m = 0; from specification nat%ler: ⊦ m ≤ m; from specification nat%anti: ⊦ m ≤ n → (n ≤ m ↔ m = n); from specification nat%test-02: ⊦ finp(⌜x⌝ ); from specification stream-basic%le-ls-simp: ⊦ m ≤ n → (n < m ↔ false); from specification nat%lels: ⊦ ¬ m < n ↔ n ≤ m; from specification nat%less-fin: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; from specification nat-inf