| ¬ (r ≠ jvmref ∧ (¬ is_valid_ref(str, r, st0) ∨ ¬ st0[r -- _type] .type ≤ ty)), junkrefs(str, r ' + refs0, ty, st), ∀ str, ty, st, st0. junkrefs(str, refs0, ty, st) ∧ (∀ r. r ∈ refs0 → unchangedNorec(r, st, st0)) → junkrefs(str, refs0, ty, st0), ∀ r0. r0 = r ∨ r0 ∈ refs0 → unchangedNorec(r0, st, st0) ⊦ junkrefs(str, r ' + refs0, ty, st0) |
junkrefs(str, r ' + refs0, ty, st), is_valid_ref(str, r, st0), st0[r -- _type] .type ≤ ty, ∀ str, ty, st, st0. junkrefs(str, refs0, ty, st) ∧ (∀ r. r ∈ refs0 → unchangedNorec(r, st, st0)) → junkrefs(str, refs0, ty, st0), ∀ r0. r0 = r ∨ r0 ∈ refs0 → unchangedNorec(r0, st, st0) ⊦ r = jvmref, junkrefs(str, r ' + refs0, ty, st0)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ junkrefs (str, jvmref ' + refs, ty, st)], [CSIMPSEQ : ⊦ (refs + refs0) + refs1 = refs + refs0 + refs1])]]