| g(r) = a ∧ r ∈ rs ↔ g0(r) = a ∧ r ∈ rs0, owns-one(a, r, rs, g), g0(r) = a ∧ r ∈ rs0 → f(r) = f0(r), ∀ r. (g(r) = a ∧ r ∈ rs ↔ g0(r) = a ∧ r ∈ rs0) ∧ (g(r) = a ∧ r ∈ rs → f(r) = f0(r)) ⊦ owns-one(a, r, rs0, g0) |
f(r) = f0(r), g(r) = g0(r0), g0(r) = g0(r0), r0 ∈ rs0, r ∈ rs0, r ∈ rs, ∀ r. (g(r) = g0(r0) ∧ r ∈ rs ↔ g0(r) = g0(r0) ∧ r ∈ rs0) ∧ (g(r) = g0(r0) ∧ r ∈ rs → f(r) = f0(r)), ∀ r0. r0 ∈ rs ∧ r0 ≠ r → g(r0) ≠ g(r) ⊦ # rs0 = 0, # rs = 0, r = null, r0 = r, rs = ∅, rs0 = ∅
Used simplifier rules: owns-one: ⊦ owns-one(a, r, rs, g) ↔ r ≠ null ∧ r ∈ rs ∧ g(r) = a ∧ (∀ r0. r0 ∈ rs ∧ r0 ≠ r → g(r0) ≠ a);%size-zero-01: ⊦ rs ≠ ∅ → # rs ≠ 0; (forward) from specification set-basic[refset]%ne-01: ⊦ r ∈ rs → rs ≠ ∅; (forward) from specification set-basic[refset]