| ∀ r. r ∈ fis0 .vals .nonnullrefs → r = jvmref ∨ dups(fis0 .keys) ∨ (∃ sk. fis0[sk] = refval(r) ∧ sk ∈ fis0), r ∈ (fv + fis0) .vals .nonnullrefs ⊦ r = jvmref, dups((fv + fis0) .keys), ∃ sk. (fv + fis0)[sk] = refval(r) ∧ sk ∈ fv + fis0 |
⊦ (fv ' + fis) .vals = fv .2 ' + fis .vals
⊦ (fis + fis0) .keys = fis .keys + fis0 .keys
⊦ fv ' .keys = fv .1 '
∀ r0. r0 ∈ fis0 .vals .nonnullrefs → r0 = jvmref ∨ (∃ sk. fis0[sk] = refval(r0) ∧ sk ∈ fis0) ⊦ r = jvmref, dups(fis0 .keys), fv .1 ∈ fis0 .keys, ¬ r ∈ fv .2 ' .nonnullrefs ∧ ¬ r ∈ fis0 .vals .nonnullrefs, ∃ sk. (fv ' + fis0)[sk] = refval(r) ∧ (sk ∈ fv ' ∨ sk ∈ fis0)
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : assoclist, fieldinit, in-append, ⊦ sk ∈ fis + fis0 ↔ sk ∈ fis ∨ sk ∈ fis0], [CSIMPNAMEDSEQ : list, storekeys, a, ⊦ (sks + sks0) + sks1 = sks + sks0 + sks1], [CSIMPNAMEDSEQ : list-dup, storekeys, dups-cons, ⊦ dups(sk ' + sks) ↔ dups(sks) ∨ sk ∈ sks], [CSIMPNAMEDSEQ : list, references, a, ⊦ (refs + refs0) + refs1 = refs + refs0 + refs1], [CSIMPNAMEDSEQ : list, references, in-append, ⊦ r ∈ refs + refs0 ↔ ¬ ¬ (r ∈ refs ∨ r ∈ refs0)], [CSIMPNAMEDSEQ : list, javavalues, a, ⊦ (vals + vals0) + vals1 = vals + vals0 + vals1], [CSIMPNAMEDSEQ : valuesfuns, , nonnullrefs-append, ⊦ (vals + vals0) .nonnullrefs = vals .nonnullrefs + vals0 .nonnullrefs], [CSIMPNAMEDSEQ : list, fieldinit-assoclista, a, ⊦ (fis + fis0) + fis1 = fis + fis0 + fis1], [CSIMPNAMEDSEQ : list, fieldinit-assoclista, c, ⊦ fv + fis = fv ' + fis])]]