| dups(vals0 .nonnullrefs) ↔ (∃ r, m, n. vals0[m] = refval(r) ∧ vals0[n] = refval(r) ∧ r ≠ jvmref ∧ m ≠ n ∧ m < # vals0 ∧ n < # vals0), is_referencevalue(val) ⊦ val .refval = jvmref, val .refval ∈ vals0 .nonnullrefs ∨ dups(vals0 .nonnullrefs) ↔ (∃ r, m, n. (val ' + vals0)[m] = refval(r) ∧ (val ' + vals0)[n] = refval(r) ∧ r ≠ jvmref ∧ m ≠ n ∧ ¬ # vals0 < m ∧ ¬ # vals0 < n) |
val = refval(r0), dups(vals0 .nonnullrefs) ↔ (∃ r, m, n. vals0[m] = refval(r) ∧ vals0[n] = refval(r) ∧ r ≠ jvmref ∧ m ≠ n ∧ m < # vals0 ∧ n < # vals0), is_referencevalue(val) ⊦ r0 = jvmref, r0 ∈ vals0 .nonnullrefs ∨ dups(vals0 .nonnullrefs) ↔ (∃ r, m, n. (val ' + vals0)[m] = refval(r) ∧ (val ' + vals0)[n] = refval(r) ∧ r ≠ jvmref ∧ m ≠ n ∧ ¬ # vals0 < m ∧ ¬ # vals0 < n)
[[CONCRETESIMPRULES : ([CSIMPELIM : ⊦ is_referencevalue(val) → ( r = val .refval ↔ val = refval(r))])], [EXTRATERMS : (val, r0)]]