| 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 |
val0 = intval(i), oktype(val, ty, st), is_integervalue(val0), is_fskey(sk), is_arraytype(sk .fs .type), okarray(st[r -- sk], sk .fs .type .type, i, 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, i, 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 : ([CSIMPELIM : ⊦ is_integervalue(val) → ( i = val .intval ↔ val = intval(i))])], [EXTRATERMS : (val0, i)]]