| ⊦ validfieldinits(str, fis, st) ↔ validfieldinits(fis, st) ∧ ¬ junkrefs(str, fis .vals, st) ∧ (∀ sk. sk ∈ fis → type∃(str, sk .fs .type)) |
⊦ validfieldinits(str, [], st)
⊦ ¬ junkrefs(str, [], st)
∀ str, st. validfieldinits(str, fis0, st) ↔ validfieldinits(fis0, st) ∧ ¬ junkrefs(str, fis0 .vals, st) ∧ (∀ sk. sk ∈ fis0 → type∃(str, sk .fs .type)) ⊦ validfieldinits(str, fv + fis0, st) ↔ validfieldinits(fv + fis0, st) ∧ ¬ junkrefs(str, (fv + fis0) .vals, st) ∧ (∀ sk. sk ∈ fv + fis0 → type∃(str, sk .fs .type))
[[CONCRETESIMPRULES : ([CSIMPGEN : fieldinits generated by [], +;], [CSIMPSEQ : ⊦ validfieldinits([], st)], [CSIMPSEQ : ⊦ [] .vals = []], [CSIMPSEQ : ⊦ ¬ sk ∈ []])]]