| ⊦ σ0 = ⌜x⌝ to n ∧ σ1 = ⌜x⌝ from n ↔ ⌜x⌝ = σ0 + σ1 ∧ # σ0 = ⌜n⌝ , # ⌜x⌝ < ⌜n⌝ |
⌜x⌝ = σ0 + σ1, # σ0 = ⌜n⌝ , n ≤ # x ⊦ σ0 = ⌜x to n⌝ ∧ σ1 = ⌜x from n⌝
Used simplifier rules: to-fin: ⊦ ⌜x⌝ to n = ⌜x to n⌝ ;%from-fin: ⊦ ⌜x⌝ from n = ⌜x from n⌝ ;%size-fin: ⊦ # ⌜x⌝ = ⌜# x⌝ ;%eq-stream-to-list-2-1: ⊦ ⌜x⌝ + ⌜y⌝ = ⌜z⌝ ↔ x + y = z;%to-plus-from-fin: ⊦ n ≤ # x → (x to n) + (x from n) = x;%append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2;%length-to: ¬ # x < n ⊦ #(x to n) = n;%inj: ⊦ ⌜m⌝ = ⌜m0⌝ ↔ m = m0; from specification nat-inf-basic%le-ls-simp: ⊦ m ≤ n → (n < m ↔ false); from specification nat%a: ⊦ (x + y) + z = x + y + z; from specification list%lels: ⊦ ¬ m < n ↔ n ≤ m; from specification nat%less-fin: ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; from specification nat-inf