| junkrefs(str, r0 ' + refs0, val .type, st[r0 -- _type, val]), junkrefs(str, r0 ' + refs0, val .type, st) ⊦ is_typevalue(st[r0 -- _type]) ∧ is_reftype(st[r0 -- _type] .type), ∃ refs. refs ≠ [] ∧ refs .first = r0 ∧ junkrefs(str, refs, st[refs .first -- _type] .type, st) |
junkrefs(str, r0 ' + refs0, val .type, st[r0 -- _type, val]), junkrefs(str, r0 ' + refs0, val .type, st) ⊦ is_typevalue(st[r0 -- _type]) ∧ is_reftype(st[r0 -- _type] .type), r0 ' + refs0 ≠ [] ∧ (r0 ' + refs0) .first = r0 ∧ junkrefs(str, r0 ' + refs0, st[(r0 ' + refs0) .first -- _type] .type, st)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (r0 ' + refs0)]]