| 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)) ⊦ okarrays(r, (sk × val) ' + fis0, st) ↔ (∀ sk0, val0. sk0 × val0 ∈ fis0 ∨ sk0 = sk ∧ val0 = val → is_integervalue(val0) ∧ ¬ is_indexkey(sk0) ∧ is_arraytype(sk0 .fs .type) ∧ okarray(st[r -- sk0], sk0 .fs .type .type, val0 .intval, st)) |
⊦ 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)
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(val) ∧ is_fskey(sk) ∧ is_arraytype(sk .fs .type) ∧ okarray(st[r -- sk], sk .fs .type .type, val .intval, st) ∧ okarrays(r, fis0, st) ↔ (∀ sk0, val0. sk0 × val0 ∈ fis0 ∨ sk0 = sk ∧ val0 = val → is_integervalue(val0) ∧ ¬ is_indexkey(sk0) ∧ is_arraytype(sk0 .fs .type) ∧ okarray(st[r -- sk0], sk0 .fs .type .type, val0 .intval, st))
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (st, fis0, val, sk, r)]]