| σ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 = [];% ⊦ m - m = 0; (s)% ⊦ m ≤ m; (s)% ⊦ m ≤ n → (n < m ↔ false); (s)% ⊦ m ≤ n → (n ≤ m ↔ m = n); (s)% ⊦ finp(⌜x⌝ ); (s)% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s)