| ¬ (¬ jvmref ∈ r ' + refs ∧ # (r ' + refs) = i→n(countrefs(ints)) ∧ ints ≠ [] ∧ 0 ≤ i ∧ posints(ints)), newref_list(i→n(countrefs(ints)), st) = r ' + refs, 0 ≤ i, posints(ints), class ∈ claset, jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ addarrays(r ' + refs, ty, ints, i, st) ∧ (addarrays(r ' + refs, ty, ints, i, st)[jvmref -- mkfs(class, void_type, `initstate' .field) ']) = initval(undone) ∨ ¬ jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ addarrays(r ' + refs, ty, ints, i, st) ∧ _uninit ∈ addarrays(r ' + refs, ty, ints, i, st) ⊦ claset = ∅, ints = [], # claset = 0, initundone(class, st) |
newref_list(i→n(countrefs(ints)), st) = r ' + refs, 0 ≤ i, posints(ints), class ∈ claset, jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ addarrays(r ' + refs, ty, ints, i, st) ∧ (addarrays(r ' + refs, ty, ints, i, st)[jvmref -- mkfs(class, void_type, `initstate' .field) ']) = initval(undone) ∨ ¬ jvmref -- mkfs(class, void_type, `initstate' .field) ' ∈ addarrays(r ' + refs, ty, ints, i, st) ∧ _uninit ∈ addarrays(r ' + refs, ty, ints, i, st) ⊦ claset = ∅, ints = [], # claset = 0, jvmref = r, initundone(class, st), 1 + # refs = i→n(countrefs(ints)) ∧ ¬ jvmref ∈ refs
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ¬ jvmref ∈ newref_list(n, st)], [CSIMPFORWARD : ⊦ r ' + refs = refs0 → r ∈ refs0], [CSIMPSEQ : ⊦ i ≤ j → (¬ ¬ j < i ↔ false)], [CSIMPSEQ : ⊦ ¬ i ≤ j ↔ j < i], [CSIMPSEQ : ⊦ # r ' = 0 +1], [CSIMPSEQ : ⊦ # (refs + refs0) = # refs + # refs0], [CSIMPSEQ : ⊦ (refs + refs0) + refs1 = refs + refs0 + refs1], [CSIMPSEQ : ⊦ r ∈ r0 ' ↔ r = r0], [CSIMPSEQ : ⊦ r ∈ refs + refs0 ↔ ¬ ¬ (r ∈ refs ∨ r ∈ refs0)])]]