| oktype(val, ty, st), okarrays(r, (sk × val0) ' + fis0, st), ∀ val, ty, st, r, class0, fieldvar, r0. oktype(val, ty, st) ∧ okarrays(r, fis0, st) → mkfs(class0, ty, fieldvar) ' = _type ∨ mkfs(class0, ty, fieldvar) ' = _length ∨ okarrays(r, fis0, st[r0 -- mkfs(class0, ty, fieldvar) ', val]) ∨ mkfs(class0, ty, fieldvar) ' ∈ fis0 ⊦ mkfs(class0, ty, fieldvar) ' = _type, mkfs(class0, ty, fieldvar) ' = _length, okarrays(r, (sk × val0) ' + fis0, st[r0 -- mkfs(class0, ty, fieldvar) ', val]), mkfs(class0, ty, fieldvar) ' ∈ (sk × val0) ', mkfs(class0, ty, fieldvar) ' ∈ fis0 |
⊦ okarrays(r, (sk × val) ' + fis, st) ↔ ¬ ¬ ( is_integervalue(val) ∧ is_fskey(sk) ∧ is_arraytype(sk .fs .type) ∧ okarray(st[r -- sk], sk .fs .type .type, val .intval, st) ∧ okarrays(r, fis, st))
oktype(val, ty, st), is_integervalue(val0), is_fskey(sk), is_arraytype(sk .fs .type), okarray(st[r -- sk], sk .fs .type .type, val0 .intval, st), okarrays(r, fis0, st), ∀ val, ty, st, r, class0, fieldvar, r0. oktype(val, ty, st) ∧ okarrays(r, fis0, st) → mkfs(class0, ty, fieldvar) ' = _type ∨ mkfs(class0, ty, fieldvar) ' = _length ∨ okarrays(r, fis0, st[r0 -- mkfs(class0, ty, fieldvar) ', val]) ∨ mkfs(class0, ty, fieldvar) ' ∈ fis0, ¬ okarray(st[r -- sk], sk .fs .type .type, val0 .intval, st[r0 -- mkfs(class0, ty, fieldvar) ', val]) ∨ ¬ okarrays(r, fis0, st[r0 -- mkfs(class0, ty, fieldvar) ', val]) ⊦ mkfs(class0, ty, fieldvar) ' = _type, mkfs(class0, ty, fieldvar) ' = _length, mkfs(class0, ty, fieldvar) ' = sk, mkfs(class0, ty, fieldvar) ' ∈ fis0
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ is_indexkey(sk) ↔ is_fskey(sk)], [CSIMPSEQ : ⊦ is_indexkey(sk) → ¬ is_fskey(sk)], [CSIMPSEQ : ⊦ sk ∈ (sk0 × val) ' ↔ sk = sk0], [CSIMPSEQ : ⊦ r -- sk = r0 -- sk0 ↔ ¬ ¬ (r = r0 ∧ sk = sk0)], [CSIMPSEQ : ⊦ (st[rk0, val][rk]) = ((rk = rk0 ⊃ val; st[rk]))], [CSIMPSEQ : ⊦ ¬ is_fskey(sk) ↔ is_indexkey(sk)], [CSIMPSEQ : ⊦ (fis + fis0) + fis1 = fis + fis0 + fis1])]]