| mkfs(class, ty, fieldvar) ' ∈ (sk × val) ' + fis0, okfieldinits(class0, (sk × val) ' + 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) |
⊦ okfieldinits(class, (sk × val) ' + fis) ↔ is_fskey(sk) ∧ val = initial_value(sk .fs .type) ∧ sk .fs .class = class ∧ sk .fs .type ≠ abstract_type ∧ okfieldinits(class, fis)
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)
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (fis0, val, sk, class0)]]