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