| ∀ class1, st, val. class1 = `java.lang.Object' .class ∨ addclass(class1, fis0, st[_out, val]) = (addclass(class1, fis0, st)[_out, val]) ⊦ class1 = `java.lang.Object' .class, (addclass(class1, fis0, st[_out, val])[jvmref -- mkfs(class1, ty, fieldvar) ', val0]) = (addclass(class1, fis0, st)[jvmref -- mkfs(class1, ty, fieldvar) ', val0][_out, val]) |
⊦ rk ≠ rk0 → (st[rk0, val][rk, val0]) = (st[rk, val0][rk0, val])
_out ≠ jvmref -- mkfs(class1, ty, fieldvar) ', ∀ class1, st, val. class1 = `java.lang.Object' .class ∨ addclass(class1, fis0, st[_out, val]) = (addclass(class1, fis0, st)[_out, val]) ⊦ class1 = `java.lang.Object' .class, (addclass(class1, fis0, st[_out, val])[jvmref -- mkfs(class1, ty, fieldvar) ', val0]) = (addclass(class1, fis0, st)[_out, val][jvmref -- mkfs(class1, ty, fieldvar) ', val0])
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ _out = jvmref -- sk ↔ sk = mkfs (`java.lang.Object' .class, void_type, `out' .field) '], [CSIMPSEQ : ⊦ fs ' = fs0 ' ↔ fs = fs0], [CSIMPSEQ : ⊦ mkfs(class, ty, fieldvar) = mkfs(class0, ty0, fieldvar0) ↔ class = class0 ∧ ty = ty0 ∧ fieldvar = fieldvar0])], [EXTRATERMS : (val, _out, val0, jvmref -- mkfs(class1, ty, fieldvar) ', addclass(class1, fis0, st))]]