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