| st[r1 -- _type] .type = mkclasstype(class), sk ∈ instfields(class), r1 ∈ refs, r ∈ refs, disjoint(str, refs, st) ⊦ r = r1, r1 = jvmref, disjoint(str, (refs -l r1) + st[r1 -- sk] .refval ', st), junkref(str, r1, st) |
⊦ disjoint(str, refs, st) ↔ ¬ (∃ r, r0, r1. r ∈ refs ∧ r0 ∈ refs ∧ r ≠ r0 ∧ r1 ≠ jvmref ∧ path∃(str, r, r1, st) ∧ path∃(str, r0, r1, st))
st[r1 -- _type] .type = mkclasstype(class), sk ∈ instfields(class), r1 ∈ refs, r ∈ refs, disjoint(str, refs, st) ⊦ r = r1, r1 = jvmref, ∀ r, r0, r2. ¬ ( r ∈ (refs -l r1) + st[r1 -- sk] .refval ' ∧ r0 ∈ (refs -l r1) + st[r1 -- sk] .refval ' ∧ r ≠ r0 ∧ r2 ≠ jvmref ∧ path∃(str, r, r2, st) ∧ path∃(str, r0, r2, st)), junkref(str, r1, st)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (st, (refs -l r1) + st[r1 -- sk] .refval ', str)]]