| validstatfields(str2, sks, st[jvmref -- mkfs(class0, ty0, str0 .field) ', val]) ⊦ str0 = `uninit', str0 = `initstate', str = str0, validstatfield(str2, mkfs(class, ty, str .field) ', st[jvmref -- mkfs(class0, ty0, str0 .field) ', val]) ↔ validstatfield(str2, mkfs(class, ty, str .field) ', st) |
⊦ sk ≠ sk0 ∧ ( ¬ is_fskey(sk) ∨ sk .fs .type ≠ void_type ∨ sk .fs ≠ mkfs(`java.lang.Object' .class, void_type, `uninit' .field) ∧ (¬ is_fskey(sk0) ∨ sk .fs ≠ mkfs(sk0 .fs .class, void_type, `initstate' .field))) → (validstatfield(str, sk0, st[jvmref -- sk, val]) ↔ validstatfield(str, sk0, st))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ fs ' = fs0 ' ↔ fs = fs0], [CSIMPSEQ : ⊦ mkfs(class, ty, fieldvar) = mkfs(class0, ty0, fieldvar0) ↔ class = class0 ∧ ty = ty0 ∧ fieldvar = fieldvar0], [CSIMPSEQ : ⊦ stringvar .field = stringvar0 .field ↔ stringvar = stringvar0], [CSIMPSEQ : ⊦ is_fskey(fs ')], [CSIMPSEQ : ⊦ fs ' .fs = fs], [CSIMPSEQ : ⊦ mkfs(class, ty, fieldvar) .type = ty], [CSIMPSEQ : ⊦ mkfs(class, ty, fieldvar) .class = class])], [EXTRATERMS : (val, mkfs(class0, ty0, str0 .field) ', st, mkfs(class, ty, str .field) ', str2)]]