| ⊦ ⌜buf⌝ .buf = buf |
⊦ buf = buf0 ↔ # buf = # buf0 ∧ (∀ n. n < # buf → buf[n] = buf0[n])
[Concretesimprules((Csimpnamedseq(finp-buf,,, ⊦ ¬ finp(⌜buf⌝ ) ↔ false) Csimpnamedseq(tobuf-size,,, finp(σ) ⊦ # σ.buf = (# σ).n) Csimpnamedseq(tostream-size,,, ⊦ # ⌜buf⌝ = ⌜# buf⌝ ) Csimpnamedseq(tobuf-at,,, finp(σ), ⌜n⌝ < # σ ⊦ σ.buf[n] = σ[n]) Csimpnamedseq(tostream-at,,, ⊦ n < # buf → ⌜buf⌝ [n] = buf[n]) Csimpnamedseq(nat-inf,,less-fin, ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n) Csimpnamedseq(nat,,lels, ⊦ ¬ m < n ↔ n ≤ m) Csimpnamedseq(nat,,ls-le-simp, ⊦ m < n → (n ≤ m ↔ false)) Csimpnamedseq(nat-inf-basic,,sel, ⊦ ⌜m⌝ .n = m))), Extraterms((buf⌜buf⌝ .buf))]