| np(# nl0), mon<(⌜nl0⌝ + ⌜m '⌝ ), ∀ nl1, np. # nl1 < #(nl0 + m ') → mon<(⌜nl1⌝ ) → mon<(rem(⌜nl1⌝ , np)) ⊦ mon<(rem(⌜nl0⌝ , np) + []) |
np(# nl0), mon<(⌜nl0⌝ + ⌜m '⌝ ), ∀ nl1, np. # nl1 < #(nl0 + m ') → mon<(⌜nl1⌝ ) → mon<(rem(⌜nl1⌝ , np)) ⊦ mon<(rem(⌜nl0⌝ , np))
Used simplifier rules: append-assoc: ⊦ (nσ + nσ0) + nσ1 = nσ + nσ0 + nσ1; from specification stream[natstream]%append-empty: ⊦ nσ + [] = nσ; from specification stream[natstream]