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