| unchanged(str, r, st, st0), validrefs(str, r ' + refs1, st[r -- _type] .type, st) ⊦ validrefs(str, r ' + refs1, st0[r -- _type] .type, st0), junkref(str, r, st), ¬ r ∈ refs1 ∧ ¬ dups(refs1) |
⊦ (∀ r. r ∈ refs → unchangedNorec(r, st, st0)) → (validrefs(str, refs, ty, st) ↔ validrefs(str, refs, ty, st0))
¬ (∀ r0. r0 ∈ r ' + refs1 → unchangedNorec(r0, st, st0)), unchanged(str, r, st, st0), validrefs(str, r ' + refs1, st[r -- _type] .type, st) ⊦ validrefs(str, r ' + refs1, st0[r -- _type] .type, st0), junkref(str, r, st), ¬ r ∈ refs1 ∧ ¬ dups(refs1)
[[CONCRETESIMPRULES : ([CSIMPNAMEDSEQ : list, references, a, ⊦ (refs + refs0) + refs1 = refs + refs0 + refs1], [CSIMPNAMEDSEQ : cyclic, , validrefs-sametype, ⊦ ¬ validrefs (str, r ' + refs, st[r -- _type] .type, st) → ¬ validrefs (str, r ' + refs, ty, st)])], [EXTRATERMS : (st0, st, st[r -- _type] .type, r ' + refs1, str)]]