| vals0[m1] = refval(r), (refval(r0) ' + vals0)[n] = refval(r), m1 < # vals0, n ≤ # vals0 ⊦ r = jvmref, m1 + 1 = n, r0 = jvmref, vals0 = [], dups(vals0 .nonnullrefs), r0 ∈ vals0 .nonnullrefs, ∃ r1, m0, n0. vals0[m0] = refval(r1) ∧ vals0[n0] = refval(r1) ∧ r1 ≠ jvmref ∧ m0 ≠ n0 ∧ ¬ # vals0 ≤ m0 ∧ ¬ # vals0 ≤ n0 |
n ≠ 0 ⊦ (val ' + vals)[(* n)] = vals[n -1]
¬ n ≠ 0, vals0[m1] = refval(r), (refval(r0) ' + vals0)[n] = refval(r), m1 < # vals0, n ≤ # vals0 ⊦ r = jvmref, m1 + 1 = n, r0 = jvmref, vals0 = [], dups(vals0 .nonnullrefs), r0 ∈ vals0 .nonnullrefs, ∃ r1, m0, n0. vals0[m0] = refval(r1) ∧ vals0[n0] = refval(r1) ∧ r1 ≠ jvmref ∧ m0 ≠ n0 ∧ ¬ # vals0 ≤ m0 ∧ ¬ # vals0 ≤ n0
n ≠ 0, vals0[m1] = refval(r), vals0[n -1] = refval(r), m1 < # vals0, n ≤ # vals0 ⊦ r = jvmref, m1 + 1 = n, r0 = jvmref, vals0 = [], dups(vals0 .nonnullrefs), r0 ∈ vals0 .nonnullrefs, ∃ r1, m0, n0. vals0[m0] = refval(r1) ∧ vals0[n0] = refval(r1) ∧ r1 ≠ jvmref ∧ m0 ≠ n0 ∧ ¬ # vals0 ≤ m0 ∧ ¬ # vals0 ≤ n0
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (n, vals0, refval(r0))]]