Theorem: Finset.Colex.trans_aux
File: Mathlib/Combinatorics/Colex.lean

tactic: let s' : Finset α := s.filter fun b ↦ b ∉ t ∧ a ≤ b
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b
state_after: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b

tactic: have ⟨b, hb, hbmax⟩ := exists_maximal s' ⟨a, by simp [s', has, hat]⟩
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b
state_after: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
b : α
hb : b ∈ s'
hbmax : ∀ x ∈ s', ¬b < x
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b

tactic: simp only [s', mem_filter, and_imp] at hb hbmax
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
b : α
hb : b ∈ s'
hbmax : ∀ x ∈ s', ¬b < x
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b
state_after: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
b : α
hb : b ∈ s ∧ b ∉ t ∧ a ≤ b
hbmax : ∀ x ∈ s, x ∉ t → a ≤ x → ¬b < x
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b

tactic: have ⟨c, hct, hcs, hbc⟩ := hst hb.1 hb.2.1
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
b : α
hb : b ∈ s ∧ b ∉ t ∧ a ≤ b
hbmax : ∀ x ∈ s, x ∉ t → a ≤ x → ¬b < x
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b
state_after: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
b : α
hb : b ∈ s ∧ b ∉ t ∧ a ≤ b
hbmax : ∀ x ∈ s, x ∉ t → a ≤ x → ¬b < x
c : α
hct : c ∈ { ofColex := t }.ofColex
hcs : c ∉ { ofColex := s }.ofColex
hbc : b ≤ c
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b

tactic: by_cases hcu : c ∈ u
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
b : α
hb : b ∈ s ∧ b ∉ t ∧ a ≤ b
hbmax : ∀ x ∈ s, x ∉ t → a ≤ x → ¬b < x
c : α
hct : c ∈ { ofColex := t }.ofColex
hcs : c ∉ { ofColex := s }.ofColex
hbc : b ≤ c
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b
state_after: case pos
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
b : α
hb : b ∈ s ∧ b ∉ t ∧ a ≤ b
hbmax : ∀ x ∈ s, x ∉ t → a ≤ x → ¬b < x
c : α
hct : c ∈ { ofColex := t }.ofColex
hcs : c ∉ { ofColex := s }.ofColex
hbc : b ≤ c
hcu : c ∈ u
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b

case neg
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
b : α
hb : b ∈ s ∧ b ∉ t ∧ a ≤ b
hbmax : ∀ x ∈ s, x ∉ t → a ≤ x → ¬b < x
c : α
hct : c ∈ { ofColex := t }.ofColex
hcs : c ∉ { ofColex := s }.ofColex
hbc : b ≤ c
hcu : c ∉ u
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b

tactic: have ⟨d, hdu, hdt, hcd⟩ := htu hct hcu
state_before: case neg
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
b : α
hb : b ∈ s ∧ b ∉ t ∧ a ≤ b
hbmax : ∀ x ∈ s, x ∉ t → a ≤ x → ¬b < x
c : α
hct : c ∈ { ofColex := t }.ofColex
hcs : c ∉ { ofColex := s }.ofColex
hbc : b ≤ c
hcu : c ∉ u
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b
state_after: case neg
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
b : α
hb : b ∈ s ∧ b ∉ t ∧ a ≤ b
hbmax : ∀ x ∈ s, x ∉ t → a ≤ x → ¬b < x
c : α
hct : c ∈ { ofColex := t }.ofColex
hcs : c ∉ { ofColex := s }.ofColex
hbc : b ≤ c
hcu : c ∉ u
d : α
hdu : d ∈ { ofColex := u }.ofColex
hdt : d ∉ { ofColex := t }.ofColex
hcd : c ≤ d
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b

tactic: have had : a ≤ d := hb.2.2.trans <| hbc.trans hcd
state_before: case neg
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
b : α
hb : b ∈ s ∧ b ∉ t ∧ a ≤ b
hbmax : ∀ x ∈ s, x ∉ t → a ≤ x → ¬b < x
c : α
hct : c ∈ { ofColex := t }.ofColex
hcs : c ∉ { ofColex := s }.ofColex
hbc : b ≤ c
hcu : c ∉ u
d : α
hdu : d ∈ { ofColex := u }.ofColex
hdt : d ∉ { ofColex := t }.ofColex
hcd : c ≤ d
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b
state_after: case neg
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
b : α
hb : b ∈ s ∧ b ∉ t ∧ a ≤ b
hbmax : ∀ x ∈ s, x ∉ t → a ≤ x → ¬b < x
c : α
hct : c ∈ { ofColex := t }.ofColex
hcs : c ∉ { ofColex := s }.ofColex
hbc : b ≤ c
hcu : c ∉ u
d : α
hdu : d ∈ { ofColex := u }.ofColex
hdt : d ∉ { ofColex := t }.ofColex
hcd : c ≤ d
had : a ≤ d
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b

tactic: refine ⟨d, hdu, fun hds ↦ ?_, had⟩
state_before: case neg
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
b : α
hb : b ∈ s ∧ b ∉ t ∧ a ≤ b
hbmax : ∀ x ∈ s, x ∉ t → a ≤ x → ¬b < x
c : α
hct : c ∈ { ofColex := t }.ofColex
hcs : c ∉ { ofColex := s }.ofColex
hbc : b ≤ c
hcu : c ∉ u
d : α
hdu : d ∈ { ofColex := u }.ofColex
hdt : d ∉ { ofColex := t }.ofColex
hcd : c ≤ d
had : a ≤ d
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b
state_after: case neg
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
b : α
hb : b ∈ s ∧ b ∉ t ∧ a ≤ b
hbmax : ∀ x ∈ s, x ∉ t → a ≤ x → ¬b < x
c : α
hct : c ∈ { ofColex := t }.ofColex
hcs : c ∉ { ofColex := s }.ofColex
hbc : b ≤ c
hcu : c ∉ u
d : α
hdu : d ∈ { ofColex := u }.ofColex
hdt : d ∉ { ofColex := t }.ofColex
hcd : c ≤ d
had : a ≤ d
hds : d ∈ s
⊢ False

tactic: exact hbmax d hds hdt had <| hbc.trans_lt <| hcd.lt_of_ne <| ne_of_mem_of_not_mem hct hdt
state_before: case neg
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
b : α
hb : b ∈ s ∧ b ∉ t ∧ a ≤ b
hbmax : ∀ x ∈ s, x ∉ t → a ≤ x → ¬b < x
c : α
hct : c ∈ { ofColex := t }.ofColex
hcs : c ∉ { ofColex := s }.ofColex
hbc : b ≤ c
hcu : c ∉ u
d : α
hdu : d ∈ { ofColex := u }.ofColex
hdt : d ∉ { ofColex := t }.ofColex
hcd : c ≤ d
had : a ≤ d
hds : d ∈ s
⊢ False
state_after: no goals

tactic: simp [s', has, hat]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
⊢ a ∈ s'
state_after: no goals

tactic: exact ⟨c, hcu, hcs, hb.2.2.trans hbc⟩
state_before: case pos
α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
f : α → β
𝒜 𝒜₁ 𝒜₂ : Finset (Finset α)
s t u : Finset α
a b✝ : α
hst : { ofColex := s } ≤ { ofColex := t }
htu : { ofColex := t } ≤ { ofColex := u }
has : a ∈ s
hat : a ∉ t
s' : Finset α := filter (fun b => b ∉ t ∧ a ≤ b) s
b : α
hb : b ∈ s ∧ b ∉ t ∧ a ≤ b
hbmax : ∀ x ∈ s, x ∉ t → a ≤ x → ¬b < x
c : α
hct : c ∈ { ofColex := t }.ofColex
hcs : c ∉ { ofColex := s }.ofColex
hbc : b ≤ c
hcu : c ∈ u
⊢ ∃ b ∈ u, b ∉ s ∧ a ≤ b
state_after: no goals