| is_arraytype(st[r0 -- _type] .type), r1 ∈ refs, validrefs(str, refs + r1 ', st[refs .first -- _type] .type, st[r0 -- fs ', val]) ⊦ fs ' = _type, fs ' = _length, junkref(str, refs .first, st), dups(refs), validrefs(str, refs + r1 ', st[refs .first -- _type] .type, st) |
⊦ ¬ validrefs(str, refs, ty, st) ∧ ¬ junkref(str, refs .first, st) ∧ fs ' ≠ _type ∧ is_arraytype(st[r0 -- _type] .type) ∧ fs ' ≠ _length ∧ refs ≠ [] ∧ ¬ dups(refs .butlast) → ¬ validrefs(str, refs, ty, st[r0 -- fs ', val])
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ r ∈ refs → (refs + refs0) .first = refs .first], [CSIMPSEQ : ⊦ (refs + refs0) + refs1 = refs + refs0 + refs1], [CSIMPSEQ : ⊦ ¬ refs + refs0 ≠ [] ↔ refs = [] ∧ refs0 = []], [CSIMPSEQ : ⊦ r ' ≠ []], [CSIMPSEQ : ⊦ (refs + r ') .butlast = refs])], [EXTRATERMS : (val, fs, r0, st, st[refs .first -- _type] .type, refs + r1 ', str)]]