| disjoint(str, refs, st), r ∈ refs, r1 ∈ refs, i < st[r1 -- _length] .intval, is_arraytype(st[r1 -- _type] .type), 0 ≤ i, 0 < st[r1 -- _length] .intval ⊦ r1 = jvmref, r = r1, junkref(str, r1, st), disjoint(str, (refs -l r1) + st[r1 -- i '] .refval ', st) |
⊦ disjoint(str, refs, st) ↔ ¬ (∃ r, r0, r1. r ∈ refs ∧ r0 ∈ refs ∧ r ≠ r0 ∧ r1 ≠ jvmref ∧ path∃(str, r, r1, st) ∧ path∃(str, r0, r1, st))
disjoint(str, refs, st), r ∈ refs, r1 ∈ refs, i < st[r1 -- _length] .intval, is_arraytype(st[r1 -- _type] .type), 0 ≤ i, 0 < st[r1 -- _length] .intval ⊦ r1 = jvmref, r = r1, junkref(str, r1, st), ∀ r, r0, r2. ¬ ( r ∈ (refs -l r1) + st[r1 -- i '] .refval ' ∧ r0 ∈ (refs -l r1) + st[r1 -- i '] .refval ' ∧ r ≠ r0 ∧ r2 ≠ jvmref ∧ path∃(str, r, r2, st) ∧ path∃(str, r0, r2, st))
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (st, (refs -l r1) + st[r1 -- i '] .refval ', str)]]