Theorem: Batteries.RBNode.Ordered.min?_le
File: .lake/packages/batteries/Batteries/Data/RBMap/Lemmas.lean

tactic: rw [min?_eq_toList_head?] at h
state_before: α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
h : t.min? = some a
x : α
hx : x ∈ t
⊢ cmp a x ≠ Ordering.gt
state_after: α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
h : t.toList.head? = some a
x : α
hx : x ∈ t
⊢ cmp a x ≠ Ordering.gt

tactic: rw [← mem_toList] at hx
state_before: α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
h : t.toList.head? = some a
x : α
hx : x ∈ t
⊢ cmp a x ≠ Ordering.gt
state_after: α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
h : t.toList.head? = some a
x : α
hx : x ∈ t.toList
⊢ cmp a x ≠ Ordering.gt

tactic: have := ht.toList_sorted
state_before: α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
h : t.toList.head? = some a
x : α
hx : x ∈ t.toList
⊢ cmp a x ≠ Ordering.gt
state_after: α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
h : t.toList.head? = some a
x : α
hx : x ∈ t.toList
this : List.Pairwise (cmpLT cmp) t.toList
⊢ cmp a x ≠ Ordering.gt

tactic: revert h hx this
state_before: α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
h : t.toList.head? = some a
x : α
hx : x ∈ t.toList
this : List.Pairwise (cmpLT cmp) t.toList
⊢ cmp a x ≠ Ordering.gt
state_after: α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
x : α
⊢ t.toList.head? = some a → x ∈ t.toList → List.Pairwise (cmpLT cmp) t.toList → cmp a x ≠ Ordering.gt

tactic: cases toList t <;> rintro ⟨⟩ (_ | ⟨_, hx⟩) (_ | ⟨h1,h2⟩)
state_before: α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
x : α
⊢ t.toList.head? = some a → x ∈ t.toList → List.Pairwise (cmpLT cmp) t.toList → cmp a x ≠ Ordering.gt
state_after: case cons.refl.head.cons
α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
tail✝ : List α
h2 : List.Pairwise (cmpLT cmp) tail✝
h1 : ∀ (a' : α), a' ∈ tail✝ → cmpLT cmp a a'
⊢ cmp a a ≠ Ordering.gt

case cons.refl.tail.cons
α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
x : α
tail✝ : List α
hx : List.Mem x tail✝
h2 : List.Pairwise (cmpLT cmp) tail✝
h1 : ∀ (a' : α), a' ∈ tail✝ → cmpLT cmp a a'
⊢ cmp a x ≠ Ordering.gt

tactic: rw [OrientedCmp.cmp_refl (cmp := cmp)]
state_before: case cons.refl.head.cons
α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
tail✝ : List α
h2 : List.Pairwise (cmpLT cmp) tail✝
h1 : ∀ (a' : α), a' ∈ tail✝ → cmpLT cmp a a'
⊢ cmp a a ≠ Ordering.gt
state_after: case cons.refl.head.cons
α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
tail✝ : List α
h2 : List.Pairwise (cmpLT cmp) tail✝
h1 : ∀ (a' : α), a' ∈ tail✝ → cmpLT cmp a a'
⊢ Ordering.eq ≠ Ordering.gt

tactic: decide
state_before: case cons.refl.head.cons
α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
tail✝ : List α
h2 : List.Pairwise (cmpLT cmp) tail✝
h1 : ∀ (a' : α), a' ∈ tail✝ → cmpLT cmp a a'
⊢ Ordering.eq ≠ Ordering.gt
state_after: no goals

tactic: rw [(h1 _ hx).1]
state_before: case cons.refl.tail.cons
α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
x : α
tail✝ : List α
hx : List.Mem x tail✝
h2 : List.Pairwise (cmpLT cmp) tail✝
h1 : ∀ (a' : α), a' ∈ tail✝ → cmpLT cmp a a'
⊢ cmp a x ≠ Ordering.gt
state_after: case cons.refl.tail.cons
α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
x : α
tail✝ : List α
hx : List.Mem x tail✝
h2 : List.Pairwise (cmpLT cmp) tail✝
h1 : ∀ (a' : α), a' ∈ tail✝ → cmpLT cmp a a'
⊢ Ordering.lt ≠ Ordering.gt

tactic: decide
state_before: case cons.refl.tail.cons
α : Type u_1
cmp : α → α → Ordering
a : α
t : RBNode α
inst✝ : TransCmp cmp
ht : Ordered cmp t
x : α
tail✝ : List α
hx : List.Mem x tail✝
h2 : List.Pairwise (cmpLT cmp) tail✝
h1 : ∀ (a' : α), a' ∈ tail✝ → cmpLT cmp a a'
⊢ Ordering.lt ≠ Ordering.gt
state_after: no goals