| sk .fs = mkfs(class, ty, fieldvar), i ' .fs = mkfs(class0, ty0, fieldvar0), st[r1 -- _type] .type .type = void_type, is_array(r1, st), type∃(str, st[r1 -- _type] .type), validref(str, r0, st[r -- _type] .type .type, st), okval(refval(r0), st[r -- _type] .type .type), is_indexkey(sk) ⊦ st[r1 -- _type] .type .jtelemtype = void_type, st[r1 -- _type] .type .jtelemtype = abstract_type, validref(str, r0, st[r -- _type] .type .type, st[r1 -- i ', refval(jvmref)]) |
⊦ is_array(r, st) ↔ r ≠ jvmref ∧ r -- _type ∈ st ∧ is_typevalue(st[r -- _type]) ∧ is_arraytype(st[r -- _type] .type) ∧ okarray(r, st[r -- _type] .type .type, st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_arraytype(ty) → ty .jtelemtype = ty .type .jtelemtype], [CSIMPFORWARD : ⊦ okarray(r, ty, st) → r ≠ jvmref ∧ r ∈ st], [CSIMPFORWARD : ⊦ r -- sk ∈ st → r ∈ st], [CSIMPSEQ : ⊦ void_type .jtelemtype = void_type], [CSIMPSEQ : ⊦ void_type ≠ abstract_type])], [EXTRATERMS : (st, r1)]]