| dups(fis .vals .nonnullrefs) ⊦ dups(fis .keys), ∃ r, sk, sk0. sk ≠ sk0 ∧ r ≠ jvmref ∧ fis[sk] = refval(r) ∧ fis[sk0] = refval(r) ∧ sk ∈ fis ∧ sk0 ∈ fis |
⊦ [] .vals = []
dups(fis0 .vals .nonnullrefs) → dups(fis0 .keys) ∨ (∃ r, sk, sk0. sk ≠ sk0 ∧ r ≠ jvmref ∧ fis0[sk] = refval(r) ∧ fis0[sk0] = refval(r) ∧ sk ∈ fis0 ∧ sk0 ∈ fis0), dups((fv + fis0) .vals .nonnullrefs) ⊦ dups((fv + fis0) .keys), ∃ r, sk, sk0. sk ≠ sk0 ∧ r ≠ jvmref ∧ (fv + fis0)[sk] = refval(r) ∧ (fv + fis0)[sk0] = refval(r) ∧ sk ∈ fv + fis0 ∧ sk0 ∈ fv + fis0
[[CONCRETESIMPRULES : ([CSIMPGEN : fieldinits generated by [], +;], [CSIMPNAMEDSEQ : valuesfuns, , nonnullrefs-empty, ⊦ [] .nonnullrefs = []], [CSIMPNAMEDSEQ : list-dup, references, e-01, ⊦ ¬ dups([])])]]