| vals0[m] = refval(r), m < # vals0 ⊦ r = jvmref, vals0 = [], r ∈ vals0 .nonnullrefs, dups(vals0 .nonnullrefs), ∃ r1, m0, n0. vals0[m0] = refval(r1) ∧ vals0[n0] = refval(r1) ∧ r1 ≠ jvmref ∧ m0 ≠ n0 ∧ ¬ # vals0 ≤ m0 ∧ ¬ # vals0 ≤ n0 |
⊦ r ∈ vals .nonnullrefs ↔ r ≠ jvmref ∧ (∃ m. vals[m] = refval(r) ∧ m < # vals)
vals0[m] = refval(r), m < # vals0 ⊦ r = jvmref, vals0 = [], r ≠ jvmref ∧ (∃ m. vals0[m] = refval(r) ∧ m < # vals0), dups(vals0 .nonnullrefs), ∃ r1, m0, n0. vals0[m0] = refval(r1) ∧ vals0[n0] = refval(r1) ∧ r1 ≠ jvmref ∧ m0 ≠ n0 ∧ ¬ # vals0 ≤ m0 ∧ ¬ # vals0 ≤ n0
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (vals0, r)]]