| ¬ ( validrefs(str, r0 ' + refs0, mkclasstype(`java.lang.Object' .class), st) ∧ r0 = (r0 ' + refs0) .first ∧ (r0 ' + refs0) .last ∈ r0 ' + refs0 ∧ (∀ r. r ∈ r0 ' + refs0 → unchangedNorec(r, st, st1)) ∧ r0 ' + refs0 ≠ []), path∃(str, r, r0, st), unchanged(str, r, st, st1), validrefs(str, r0 ' + refs0, mkclasstype(`java.lang.Object' .class), st) ⊦ path∃(str, r0, (r0 ' + refs0) .last, st1) |
path∃(str, r, r0, st), unchanged(str, r, st, st1), validrefs(str, r0 ' + refs0, mkclasstype(`java.lang.Object' .class), st), r1 = r0 ∨ r1 ∈ refs0 ⊦ path∃(str, r0, (r0 ' + refs0) .last, st1), unchangedNorec(r1, st, st1)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ r ' ≠ []], [CSIMPSEQ : ⊦ ¬ refs + refs0 ≠ [] ↔ refs = [] ∧ refs0 = []], [CSIMPSEQ : ⊦ r ∈ r0 ' ↔ r = r0], [CSIMPSEQ : ⊦ r ∈ refs + refs0 ↔ ¬ ¬ (r ∈ refs ∨ r ∈ refs0)], [CSIMPSEQ : ⊦ refs .last ∈ refs ↔ refs ≠ []], [CSIMPSEQ : ⊦ (refs + refs0) + refs1 = refs + refs0 + refs1], [CSIMPSEQ : ⊦ (r ' + refs) .first = r])]]