| compatrefs(str, st), compatmode(str, st), newref(r, st), is_predefined_class(class), tdname∃(str, class0), initdone(class0, st), class∃(str, class0) ∨ interface∃(str, class0) → compatfields(str, jvmref, statfields(class0), st) ⊦ r = jvmref, ∀ sk. sk ∈ statfields(class0) → jvmref -- sk ∈ addobj(r, class, [], st) ∧ is_fskey(sk) ∧ compat(str, addobj(r, class, [], st)[jvmref -- sk], sk .fs .type, addobj(r, class, [], st)) |
sk ∈ statfields(class0), compatrefs(str, st), compatmode(str, st), newref(r, st), is_predefined_class(class), tdname∃(str, class0), initdone(class0, st), class∃(str, class0) ∨ interface∃(str, class0) → compatfields(str, jvmref, statfields(class0), st) ⊦ r = jvmref, jvmref -- sk ∈ st ∧ ¬ is_indexkey(sk) ∧ compat(str, st[jvmref -- sk], sk .fs .type, addobj(r, class, [], st))
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ r ≠ r0 → (addobj(r, class1, fis, st) [r0 -- sk ] ) = st[r0 -- sk]], [CSIMPSEQ : ⊦ ¬ is_fskey(sk) ↔ is_indexkey(sk)], [CSIMPSEQ : ⊦ r ≠ r0 → ( r -- sk ∈ addobj(r0, class1, fis, st) ↔ r -- sk ∈ st)])]]