| (a[r => o] * R)[rs, f, g] ⊦ a = a0, rely(a0, rs, f, g, rs, f(r; o0), g) |
(a[r => o] * R)[rs, f, g], r0 ∈ rs ⊦ # rs = 0, a = g(r0), f(r0) = (r = r0 ⊃ o0;f(r0)), rs = ∅
Used simplifier rules: rely: ⊦ rely(a, rs0, f0, g0, rs1, f1, g1) ↔ (∀ r. (g0(r) = a ∧ r ∈ rs0 ↔ g1(r) = a ∧ r ∈ rs1) ∧ (g0(r) = a ∧ r ∈ rs0 → f0(r) = f1(r)));%size-zero-01: ⊦ rs ≠ ∅ → # rs ≠ 0; (forward) from specification set-basic[refset]%ne-01: ⊦ r ∈ rs → rs ≠ ∅; (forward) from specification set-basic[refset]