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