| validrefs(str, r ' + refs1 + jvmref ' + refs0 + jvmref ', ty, st), ∀ st, ty, str, refs3. # refs3 < # (r + (refs1 + (jvmref + (refs0 + (jvmref + []))))) → ( validrefs(str, refs3, ty, st) ∧ refs3 ≠ [] ∧ refs3 .last = jvmref → (∃ refs1. validrefs(str, refs1, ty, st) ∧ refs1 ≠ [] ∧ refs1 .last = jvmref ∧ refs3 .first = refs1 .first ∧ ¬ dups(refs1) ∧ refs1 ⊆ refs3)) ⊦ r = jvmref, r ∈ refs1, r ∈ refs0, ∃ refs. validrefs(str, refs, ty, st) ∧ refs ≠ [] ∧ refs .last = jvmref ∧ r = refs .first ∧ ¬ dups(refs) ∧ refs ⊆ refs .first ' + refs1 + jvmref ' + refs0 + jvmref ' |
⊦ validrefs(str, refs + jvmref ' + refs0, ty, st) ↔ validrefs(str, refs + jvmref ', ty, st) ∧ refs0 = []
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ (refs + refs0) + refs1 = refs + refs0 + refs1], [CSIMPSEQ : ⊦ ¬ refs + refs0 ≠ [] ↔ refs = [] ∧ refs0 = []], [CSIMPSEQ : ⊦ r ' ≠ []])], [EXTRATERMS : (str, r ' + refs1, refs0 + jvmref ', ty, st)]]