| sk = fs ', fs = mkfs(class, ty0, fieldvar0), oktype(val, ty, st), is_fskey(sk), is_arraytype(ty0), okarray(st[r -- sk], ty0 .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], ty0 .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 |
oktype(val, ty, st), is_arraytype(ty0), okarray(st[r -- mkfs(class, ty0, fieldvar0) '], ty0 .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 -- mkfs(class, ty0, fieldvar0) '], ty0 .type, i, st[r0 -- mkfs(class0, ty, fieldvar) ', val]) ∨ ¬ okarrays(r, fis0, st[r0 -- mkfs(class0, ty, fieldvar) ', val]), class0 ≠ class ∨ ty ≠ ty0 ∨ fieldvar ≠ fieldvar0 ⊦ mkfs(class0, ty, fieldvar) ' = _type, mkfs(class0, ty, fieldvar) ' = _length, mkfs(class0, ty, fieldvar) ' ∈ fis0
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ is_fskey(fs ')], [CSIMPSEQ : ⊦ mkfs(class1, ty, fieldvar) = mkfs(class2, ty0, fieldvar0) ↔ ¬ ¬ ( class1 = class2 ∧ ty = ty0 ∧ fieldvar = fieldvar0)], [CSIMPSEQ : ⊦ fs ' = fs0 ' ↔ fs = fs0])]]