| rs1 ∩ rs0 = ∅, P(mk(rs1, f)), R[rs0, f, g], r0 ∈ rs1, ∀ r. r ∈ rs1 → g(r) = a ⊦ (r = r0 ⊃ a0;g(r0)) = a, g(r) = a, (a[P] * true)[rs1 ∪ rs0, f(r; o), g(r; a0)] |
rs1 ∩ rs0 = ∅, P(mk(rs1, f)), R[rs0, f, g], r0 ∈ rs1, ∀ r. r ∈ rs1 → g(r) = a ⊦ # rs1 = 0, (r = r0 ⊃ a0;g(r0)) = a, g(r) = a, rs1 = ∅, (a[P] * true)[rs1 ∪ rs0, f(r; o), g(r; a0)]
Used simplifier rules: size-zero-01: ⊦ rs ≠ ∅ → # rs ≠ 0; (forward) from specification set-basic[refset]%ne-01: ⊦ r ∈ rs → rs ≠ ∅; (forward) from specification set-basic[refset]