| fis .keys = instfields(class), newref(r, st), validfieldinits(str, fis, st) ⊦ r = jvmref, hasSharing(fis .vals .nonnullrefs, st), dups(fis .vals .nonnullrefs), hasSharing(r, addobj(r, class, fis, st)), junkref(str, r, addobj(r, class, fis, st)), disjoint(str, fis .vals .nonnullrefs, st) |
⊦ validreflist(str, mkjavavalues(refs), mkclasstype(`java.lang.Object' .class), st) → ( disjoint(str, refs, st) ↔ ¬ (∃ r1, sks1, r2, sks2. r1 ∈ refs ∧ r2 ∈ refs ∧ r1 ≠ r2 ∧ fits(r1, sks1, st) ∧ fits(r2, sks2, st) ∧ st[r1 -- sks1] = st[r2 -- sks2] ∧ st[r1 -- sks1] .refval ≠ jvmref))
¬ validreflist(str, mkjavavalues(fis .vals .nonnullrefs), mkclasstype(`java.lang.Object' .class), st), fis .keys = instfields(class), newref(r, st), validfieldinits(str, fis, st) ⊦ r = jvmref, hasSharing(fis .vals .nonnullrefs, st), dups(fis .vals .nonnullrefs), hasSharing(r, addobj(r, class, fis, st)), junkref(str, r, addobj(r, class, fis, st)), disjoint(str, fis .vals .nonnullrefs, st)
validreflist(str, mkjavavalues(fis .vals .nonnullrefs), mkclasstype(`java.lang.Object' .class), st), fis .keys = instfields(class), newref(r, st), validfieldinits(str, fis, st) ⊦ r = jvmref, hasSharing(fis .vals .nonnullrefs, st), dups(fis .vals .nonnullrefs), hasSharing(r, addobj(r, class, fis, st)), junkref(str, r, addobj(r, class, fis, st)), ∀ r1, sks1, r2, sks2. ¬ ( r1 ∈ fis .vals .nonnullrefs ∧ r2 ∈ fis .vals .nonnullrefs ∧ r1 ≠ r2 ∧ fits(r1, sks1, st) ∧ fits(r2, sks2, st) ∧ st[r1 -- sks1] = st[r2 -- sks2] ∧ st[r1 -- sks1] .refval ≠ jvmref)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (st, fis .vals .nonnullrefs, str)]]