| mkfs(class, ty, fieldvar) ' ∈ (sk × val) ' + fis0, is_fskey(sk) ∧ val = initial_value(sk .fs .type) ∧ sk .fs .class = class0 ∧ sk .fs .type ≠ abstract_type ∧ okfieldinits(class0, fis0), ∀ class, ty, fieldvar, class0. mkfs(class, ty, fieldvar) ' ∈ fis0 ∧ okfieldinits(class0, fis0) → fis0[mkfs(class, ty, fieldvar) '] = initial_value(ty) ⊦ ((sk × val) ' + fis0)[mkfs(class, ty, fieldvar) '] = initial_value(ty) |
is_fskey(sk), okfieldinits(sk .fs .class, fis0), mkfs(class, ty, fieldvar) ' ∈ fis0, ∀ class, ty, fieldvar, class0. mkfs(class, ty, fieldvar) ' ∈ fis0 ∧ okfieldinits(class0, fis0) → fis0[mkfs(class, ty, fieldvar) '] = initial_value(ty) ⊦ ((sk × initial_value(sk .fs .type)) ' + fis0)[mkfs(class, ty, fieldvar) '] = initial_value(ty), sk .fs .type = abstract_type
[[CONCRETESIMPRULES : ([CSIMPSEQ : sk ≠ sk0 ⊦ sk ∈ (sk0 × val) ' + fis ↔ sk ∈ fis], [CSIMPSEQ : ⊦ fs ' .fs = fs], [CSIMPSEQ : ⊦ mkfs(class, ty, fieldvar) .type = ty], [CSIMPSEQ : ⊦ ((sk × val) ' + fis)[sk] = val], [CSIMPSEQ : ⊦ (fis + fis0) + fis1 = fis + fis0 + fis1])]]