cases e₂ <;> simp [rcns] at he₂
α : Type
inst✝ : Proper α
s✝ s₁✝ s₂ s sₘ₁ s₁ : State α
e₁ : s ↓ᵢ sₘ₁
e₁' : sₘ₁ ↓ᵢ+ s₁
hi : ∀ (e₂ : sₘ₁ ↓ᵢ+ s₂), rcns e₁' ~ rcns e₂ → s₁.rtr = s₂.rtr ∧ s₁.events = s₂.events
e₂✝ : s ↓ᵢ+ s₂
hp : rcns (trans e₁ e₁') ~ rcns e₂✝
hm : rcn e₁ ∈ rcns e₂✝
hm' : rcns e₂✝ ≮[s.rtr] rcn e₁
e₂ : s ↓ᵢ+ s₂
he₂ : rcns e₂ = rcn e₁ :: List.erase (rcns e₂✝) (rcn e₁)
⊢ s₁.rtr = s₂.rtr ∧ s₁.events = s₂.events
case single
α : Type
inst✝ : Proper α
s✝ s₁✝ s₂ s sₘ₁ s₁ : State α
e₁ : s ↓ᵢ sₘ₁
e₁' : sₘ₁ ↓ᵢ+ s₁
hi : ∀ (e₂ : sₘ₁ ↓ᵢ+ s₂), rcns e₁' ~ rcns e₂ → s₁.rtr = s₂.rtr ∧ s₁.events = s₂.events
e₂ : s ↓ᵢ+ s₂
hp : rcns (trans e₁ e₁') ~ rcns e₂
hm : rcn e₁ ∈ rcns e₂
hm' : rcns e₂ ≮[s.rtr] rcn e₁
a✝ : s ↓ᵢ s₂
he₂ : rcn a✝ = rcn e₁ ∧ [] = List.erase (rcns e₂) (rcn e₁)
⊢ s₁.rtr = s₂.rtr ∧ s₁.events = s₂.events

case trans
α : Type
inst✝ : Proper α
s✝ s₁✝ s₂ s sₘ₁ s₁ : State α
e₁ : s ↓ᵢ sₘ₁
e₁' : sₘ₁ ↓ᵢ+ s₁
hi : ∀ (e₂ : sₘ₁ ↓ᵢ+ s₂), rcns e₁' ~ rcns e₂ → s₁.rtr = s₂.rtr ∧ s₁.events = s₂.events
e₂ : s ↓ᵢ+ s₂
hp : rcns (trans e₁ e₁') ~ rcns e₂
hm : rcn e₁ ∈ rcns e₂
hm' : rcns e₂ ≮[s.rtr] rcn e₁
s₂✝ : State α
a✝¹ : s ↓ᵢ s₂✝
a✝ : s₂✝ ↓ᵢ+ s₂
he₂ : rcn a✝¹ = rcn e₁ ∧ rcns a✝ = List.erase (rcns e₂) (rcn e₁)
⊢ s₁.rtr = s₂.rtr ∧ s₁.events = s₂.events