| r -- fs ' ∈ st, okval(st[r -- fs '], fs .type), okval(val, fs .type), r ∈ st, ∀ r, fs, st, val, str, ty. r -- fs ' ∈ st ∧ okval(st[r -- fs '], fs .type) ∧ okval(val, fs .type) ∧ r ∈ st → (junkrefs(str, acc + r ', ty, st[r -- fs ', val]) ↔ junkrefs(str, acc + r ', ty, st)) ∨ fs ' = _type ∨ fs ' = _length ∨ r ∈ acc ⊦ fs ' = _type, fs ' = _length, junkrefs(str, (r0 ' + acc) + r ', ty, st[r -- fs ', val]) ↔ junkrefs(str, (r0 ' + acc) + r ', ty, st), r = r0, r ∈ acc |
fs = mkfs(class, ty0, fieldvar), r -- fs ' ∈ st, okval(st[r -- fs '], ty0), okval(val, ty0), r ∈ st, ∀ r, fs, st, val, str, ty. r -- fs ' ∈ st ∧ okval(st[r -- fs '], fs .type) ∧ okval(val, fs .type) ∧ r ∈ st → (junkrefs(str, acc + r ', ty, st[r -- fs ', val]) ↔ junkrefs(str, acc + r ', ty, st)) ∨ fs ' = _type ∨ fs ' = _length ∨ r ∈ acc ⊦ fs ' = _type, fs ' = _length, junkrefs(str, (r0 ' + acc) + r ', ty, st[r -- fs ', val]) ↔ junkrefs(str, (r0 ' + acc) + r ', ty, st), r = r0, r ∈ acc
[[CONCRETESIMPRULES : ([CSIMPELIM : ⊦ class = fs .class ∧ ty = fs .type ∧ fieldvar = fs .field ↔ fs = mkfs(class, ty, fieldvar)])], [EXTRATERMS : (fs, class, ty0, fieldvar)]]