| sk0 .fs = mkfs(class0, ty0, fieldvar0), sk .fs = mkfs(class, ty, fieldvar), is_fskey(sk), is_arraytype(ty), okarray(st[r -- sk], ty .type, i, st), okarrays(r, fis0, st), sk0 × val0 ∈ fis0 ∨ sk0 = sk ∧ val0 = intval(i), ∀ sk, val. sk × val ∈ fis0 → is_integervalue(val) ∧ is_fskey(sk) ∧ is_arraytype(sk .fs .type) ∧ okarray(st[r -- sk], sk .fs .type .type, val .intval, st) ⊦ is_integervalue(val0) ∧ ¬ is_indexkey(sk0) ∧ is_arraytype(ty0) ∧ okarray(st[r -- sk0], ty0 .type, val0 .intval, st) |
sk0 × val0 ∈ fis0, sk0 .fs = mkfs(class0, ty0, fieldvar0), sk .fs = mkfs(class, ty, fieldvar), is_fskey(sk), is_arraytype(ty), okarray(st[r -- sk], ty .type, i, st), okarrays(r, fis0, st), ∀ sk, val. sk × val ∈ fis0 → is_integervalue(val) ∧ is_fskey(sk) ∧ is_arraytype(sk .fs .type) ∧ okarray(st[r -- sk], sk .fs .type .type, val .intval, st) ⊦ is_integervalue(val0) ∧ ¬ is_indexkey(sk0) ∧ is_arraytype(ty0) ∧ okarray(st[r -- sk0], ty0 .type, val0 .intval, st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_integervalue(intval(i))], [CSIMPSEQ : ⊦ intval(i) .intval = i], [CSIMPSEQ : ⊦ is_indexkey(sk) → ¬ is_fskey(sk)], [CSIMPSEQ : ⊦ ¬ is_indexkey(sk) ↔ is_fskey(sk)], [CSIMPSEQ : ⊦ mkfs(class, ty, fieldvar) = mkfs(class0, ty0, fieldvar0) ↔ class = class0 ∧ ty = ty0 ∧ fieldvar = fieldvar0])]]