| dups(vals0 .nonnullrefs) ↔ (∃ r, vals, vals1, vals2. vals0 = vals + refval(r) ' + vals1 + refval(r) ' + vals2 ∧ r ≠ jvmref ∧ ¬ refval(r) ∈ vals ∧ ¬ refval(r) ∈ vals1) ⊦ dups((val ' + vals0) .nonnullrefs) ↔ (∃ r, vals, vals1, vals2. val ' + vals0 = vals + refval(r) ' + vals1 + refval(r) ' + vals2 ∧ r ≠ jvmref ∧ ¬ refval(r) ∈ vals ∧ ¬ refval(r) ∈ vals1) |
⊦ ¬ is_referencevalue(val) ∨ val .refval = jvmref → (val ' + vals) .nonnullrefs = vals .nonnullrefs
¬ (¬ is_referencevalue(val) ∨ val .refval = jvmref), dups(vals0 .nonnullrefs) ↔ (∃ r, vals, vals1, vals2. vals0 = vals + refval(r) ' + vals1 + refval(r) ' + vals2 ∧ r ≠ jvmref ∧ ¬ refval(r) ∈ vals ∧ ¬ refval(r) ∈ vals1) ⊦ dups((val ' + vals0) .nonnullrefs) ↔ (∃ r, vals, vals1, vals2. val ' + vals0 = vals + refval(r) ' + vals1 + refval(r) ' + vals2 ∧ r ≠ jvmref ∧ ¬ refval(r) ∈ vals ∧ ¬ refval(r) ∈ vals1)
¬ is_referencevalue(val) ∨ val .refval = jvmref, dups(vals0 .nonnullrefs) ↔ (∃ r, vals, vals1, vals2. vals0 = vals + refval(r) ' + vals1 + refval(r) ' + vals2 ∧ r ≠ jvmref ∧ ¬ refval(r) ∈ vals ∧ ¬ refval(r) ∈ vals1) ⊦ dups(vals0 .nonnullrefs) ↔ (∃ r, vals, vals1, vals2. val ' + vals0 = vals + refval(r) ' + vals1 + refval(r) ' + vals2 ∧ r ≠ jvmref ∧ ¬ refval(r) ∈ vals ∧ ¬ refval(r) ∈ vals1)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (vals0, val)]]