| ⊦ #((σ to n0 + m) + σ0 from m) = #((σ to m + n0) from m) + # σ0, # σ < ⌜n0⌝ + ⌜m⌝ , # σ < ⌜m⌝ + ⌜n0⌝ , ⌜n0⌝ + # σ0 ≠ ⌜0⌝ ∧ finp((σ to n0 + m) + σ0) |
⊦ finp(σ) ∧ finp(σ1) → finp(σ + σ1)
Used simplifier rules: fin-to: ⊦ finp(σ to m);%notfin-sizeinf: ⊦ ¬ finp(σ) → # σ = ∞;%from-inf: ⊦ ⌜nf⌝ from n = ⌜nf from n⌝ ;%size-inf: ⊦ # ⌜nf⌝ = ∞;%fin-to: ⊦ finp(σ to m);%size-empty-equiv: ⊦ # σ = ⌜0⌝ ↔ σ = [];%append-empty: ⊦ σ + [] = σ;%append-assoc: ⊦ (σ + σ1) + σ2 = σ + σ1 + σ2;%size-empty: ⊦ # [] = ⌜0⌝ ;%sum-zero-fin: ⊦ ⌜n⌝ + n∞ = ⌜0⌝ ↔ n∞ = ⌜0⌝ ∧ n = 0; from specification nat-inf%add-assoc: ⊦ (n∞ + n∞1) + n∞2 = n∞ + n∞1 + n∞2; from specification nat-inf%add-comm: ⊦ n∞1 + n∞2 = n∞2 + n∞1; from specification nat-inf%stream-fin-forward: ⊦ finp(σ) → (∃ x. ⌜x⌝ = σ); (forward) from specification stream-basic%add-base: ⊦ n + 0 = n; from specification nat-basic2%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic2%c: ⊦ m + n = n + m; from specification nat-basic2%add-all-zero: ⊦ n∞ + ⌜0⌝ = n∞; from specification nat-inf%add-all-inf: ⊦ n∞ + ∞ = ∞; from specification nat-inf%add-inf2: ⊦ ⌜m⌝ + ∞ = ∞; from specification nat-inf%disj: ⊦ ⌜m⌝ ≠ ∞; from specification nat-inf-basic%stream-inf-forward: ⊦ ¬ finp(σ) → (∃ nf. ⌜nf⌝ = σ); (forward) from specification stream-basic Used terms: σ0, σ to n0 + m