| ¬ (¬ is_referencevalue(val) ∨ val .refval = jvmref), ((sk1 × val) ' + fis0)[sk0] = refval(r), ((sk1 × val) ' + fis0)[sk] = refval(r), sk0 ∈ (sk1 × val) ' + fis0, sk ∈ (sk1 × val) ' + fis0, ∀ sk0, r, sk. fis0[sk0] = refval(r) ∧ fis0[sk] = refval(r) ∧ sk0 ∈ fis0 ∧ sk ∈ fis0 → sk = sk0 ∨ r = jvmref ∨ dups(fis0 .vals .nonnullrefs) ⊦ sk = sk0, r = jvmref, dups((val ' + fis0 .vals) .nonnullrefs) |
((sk1 × val) ' + fis0)[sk0] = refval(r), ((sk1 × val) ' + fis0)[sk] = refval(r), is_referencevalue(val), sk0 ∈ (sk1 × val) ' + fis0, sk ∈ (sk1 × val) ' + fis0, ∀ sk2, r0, sk3. fis0[sk2] = refval(r0) ∧ fis0[sk3] = refval(r0) ∧ sk2 ∈ fis0 ∧ sk3 ∈ fis0 → sk3 = sk2 ∨ r0 = jvmref ⊦ sk = sk0, r = jvmref, val .refval = jvmref, dups(fis0 .vals .nonnullrefs), val .refval ∈ fis0 .vals .nonnullrefs
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : list, references, a, ⊦ (refs + refs0) + refs1 = refs + refs0 + refs1], [CSIMPNAMEDSEQ : list-dup, references, dups-cons, ⊦ dups(r ' + refs) ↔ dups(refs) ∨ r ∈ refs], [CSIMPNAMEDSEQ : list, javavalues, a, ⊦ (vals + vals0) + vals1 = vals + vals0 + vals1], [CSIMPNAMEDSEQ : list, references, c, ⊦ r + refs = r ' + refs], [CSIMPNAMEDSEQ : valuesfuns, , nonnullrefs-yes, ⊦ is_referencevalue(val) ∧ val .refval ≠ jvmref → (val ' + vals) .nonnullrefs = val .refval + vals .nonnullrefs])]]