| ⊦ str = `java.lang.Object', _mode ∈ st[r -- (sks + mkfs(str .class, ty, fieldvar) ' '), val] ↔ _mode ∈ st |
⊦ 1 < # sks → (rk ∈ st[r -- sks, val] ↔ rk ∈ st ∨ rk = st[r -- sks .butlast] .refval -- sks .last)
⊦ st[r -- sk ', val] = st[r -- sk, val]
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ (sks + sk ') .last = sk], [CSIMPSEQ : ⊦ (sks + sk ') .butlast = sks], [CSIMPSEQ : ⊦ # (sks + sks0) = # sks + # sks0], [CSIMPSEQ : ⊦ # sk ' = 0 +1], [CSIMPSEQ : ⊦ (sks + sks0) + sks1 = sks + sks0 + sks1], [CSIMPSEQ : ⊦ 1 < m ↔ ¬ (m = 0 ∨ m = 1)], [CSIMPSEQ : ⊦ m + 1 ≠ 0], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : ⊦ m + n = n + m], [CSIMPSEQ : ⊦ 1 = m + 1 ↔ m = 0], [CSIMPSEQ : ⊦ # sks = 0 ↔ sks = []], [CSIMPSEQ : ⊦ [] + sks = sks], [CSIMPSEQ : ⊦ rk ∈ st[rk0, val] ↔ rk = rk0 ∨ rk ∈ st], [CSIMPSEQ : ⊦ stringvar .class = stringvar0 .class ↔ stringvar = stringvar0], [CSIMPSEQ : class1 ≠ `java.lang.Object' .class ⊦ _mode ≠ r -- mkfs(class1, ty, fieldvar) '])], [EXTRATERMS : (val, sks + mkfs(str .class, ty, fieldvar) ' ', r, st, _mode)]]