| ⊦ ⌜buf⌝ .buf = buf |
⊦ buf = buf0 ↔ # buf = # buf0 ∧ (∀ n. n < # buf → buf[n] = buf0[n])
⊦ finp(⌜buf⌝ )
finp(σ) ⊦ # σ.buf = (# σ).n
⊦ # ⌜buf⌝ = ⌜# buf⌝
finp(σ), ⌜n⌝ < # σ ⊦ σ.buf[n] = σ[n]
⊦ n < # buf → ⌜buf⌝ [n] = buf[n]
Used simplifier rules: finp-buf: ⊦ finp(⌜buf⌝ );%tobuf-size: finp(σ) ⊦ # σ.buf = (# σ).n;%tostream-size: ⊦ # ⌜buf⌝ = ⌜# buf⌝ ;%tobuf-at: finp(σ), ⌜n⌝ < # σ ⊦ σ.buf[n] = σ[n];%tostream-at: ⊦ n < # buf → ⌜buf⌝ [n] = buf[n];% ⊦ ⌜m⌝ .n = m; (s)% ⊦ ⌜m⌝ < ⌜n⌝ ↔ m < n; (s) Used terms: buf, ⌜buf⌝ .buf