| owns-one(a, r, rs, g) ⊦ ∀ f. ∃ o. (a[r => o] * true)[rs, f, g] |
r ∈ rs, ∀ r0. r0 ∈ rs ∧ r0 ≠ r → g(r0) ≠ g(r) ⊦ # rs = 0, r = null, rs = ∅, ∃ o. (g(r)[r => o] * true)[rs, f, g]
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]