| ∀ H1. # H1 < # (H0 ++ r)[r, o] → true → (∃ rs, f. H1 = mk(rs, f)) ⊦ r = null, r ∈ H0, ∃ rs, f. (H0 ++ r)[r, o] = mk(rs, f) |
∃ rs, f. H0 = mk(rs, f), ∀ H1. # H1 < # (H0 ++ r)[r, o] → true → (∃ rs, f. H1 = mk(rs, f)) ⊦ r = null, r ∈ H0, ∃ rs, f. (H0 ++ r)[r, o] = mk(rs, f)
Used simplifier rules: r0 ≠ null, ¬ r0 ∈ H ⊦ r ∈ H ++ r0 ↔ r = r0 ∨ r ∈ H; (s)%r ∈ H ⊦ # H[r, o] = # H; (s)%¬ r ∈ H, r ≠ null ⊦ #(H ++ r) = # H + 1; (s)% ⊦ m < n + 1 ↔ ¬ n < m; (s)% ⊦ ¬ n < n; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic Used terms: H0