| viewvar(ev) = C, ev ∈ tr, ∀ tr0, viewvar, ev. # tr0 < # tr → (viewvar(ev) = C ∧ ev ∈ tr0 → (∃ tr2, ev0, tr1. tr0 = tr2 + ev0 ' + tr1 ∧ viewvar(ev0) = C ∧ proj(tr1, Cview(viewvar)) = [])) ⊦ viewvar(ev) = C ∧ ev ∈ tr .butlast, ∃ tr0, ev0, tr1. tr = tr0 + ev0 ' + tr1 ∧ viewvar(ev0) = C ∧ proj(tr1, Cview(viewvar)) = [] |
viewvar(tr .last) = C, ∀ tr0, viewvar, ev. # tr0 < # tr → (viewvar(ev) = C ∧ ev ∈ tr0 → (∃ tr2, ev0, tr1. tr0 = tr2 + ev0 ' + tr1 ∧ viewvar(ev0) = C ∧ proj(tr1, Cview(viewvar)) = [])) ⊦ tr = [], tr .last ∈ tr .butlast, ∃ tr0, ev0, tr1. tr = tr0 + ev0 ' + tr1 ∧ viewvar(ev0) = C ∧ proj(tr1, Cview(viewvar)) = []
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ tr .last ∈ tr ↔ tr ≠ []], [CSIMPFORWARD : ⊦ ¬ ev ∈ tr .butlast ∧ ev ∈ tr → ev = tr .last])]]