| ⊦ P(mk(rs, f)) ↔ P(mk(rs ++ r, f) -- r), r = null, r ∈ rs, ∀ r0. (r0 ∈ mk(rs ++ r, f) -- r ↔ r0 ∈ mk(rs, f)) ∧ (r0 ∈ mk(rs ++ r, f) -- r → (mk(rs ++ r, f) -- r)[r0] = mk(rs, f)[r0]) |
r0 ∈ rs ⊦ # rs = 0, P(mk(rs, f)) ↔ P(mk(rs ++ r, f) -- r), (mk(rs ++ r, f) -- r)[r0] = f(r0), r = null, rs = ∅, r ∈ rs
Used simplifier rules: in-mk: ⊦ r ∈ mk(rs, f) ↔ r ∈ rs;%at-mk: ⊦ r ∈ rs → mk(rs, f)[r] = f(r);%size-zero-01: ⊦ rs ≠ ∅ → # rs ≠ 0; (forward) from specification set-basic[refset]%ne-01: ⊦ r ∈ rs → rs ≠ ∅; (forward) from specification set-basic[refset]% ⊦ r ∈ rs → r ∈ rs ++ r0; (s)% ⊦ r ≠ r0 → (r ∈ rs ++ r0 ↔ r ∈ rs); (s)% ⊦ r ∈ H -- r0 ↔ r ≠ r0 ∧ r ∈ H; (s)