Theorem: UV.sup_sdiff_mem_of_mem_compression
File: Mathlib/Combinatorics/SetFamily/Compression/UV.lean

tactic: rw [mem_compression, compress_of_disjoint_of_le hua hva] at ha
state_before: α : Type u_1
inst✝² : GeneralizedBooleanAlgebra α
inst✝¹ : DecidableRel Disjoint
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v a b : α
ha : a ∈ 𝓒 u v s
hva : v ≤ a
hua : Disjoint u a
⊢ (a ⊔ u) \ v ∈ s

tactic: obtain ⟨_, ha⟩ | ⟨_, b, hb, rfl⟩ := ha
state_before: α : Type u_1
inst✝² : GeneralizedBooleanAlgebra α
inst✝¹ : DecidableRel Disjoint
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v a b : α
ha : a ∈ s ∧ (a ⊔ u) \ v ∈ s ∨ ¬a ∈ s ∧ ∃ b, b ∈ s ∧ compress u v b = a
hva : v ≤ a
hua : Disjoint u a
⊢ (a ⊔ u) \ v ∈ s

tactic: have hu : u = ⊥ := by
  suffices Disjoint u (u \ v) by rwa [(hua.mono_right hva).sdiff_eq_left, disjoint_self] at this
  refine' hua.mono_right _
  rw [← compress_idem, compress_of_disjoint_of_le hua hva]
  exact sdiff_le_sdiff_right le_sup_right
state_before: case inr.intro.intro.intro
α : Type u_1
inst✝² : GeneralizedBooleanAlgebra α
inst✝¹ : DecidableRel Disjoint
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v b✝ b : α
hb : b ∈ s
hva : v ≤ compress u v b
hua : Disjoint u (compress u v b)
left✝ : ¬compress u v b ∈ s
⊢ (compress u v b ⊔ u) \ v ∈ s

tactic: have hv : v = ⊥ := by
  rw [← disjoint_self]
  apply Disjoint.mono_right hva
  rw [← compress_idem, compress_of_disjoint_of_le hua hva]
  exact disjoint_sdiff_self_right
state_before: case inr.intro.intro.intro
α : Type u_1
inst✝² : GeneralizedBooleanAlgebra α
inst✝¹ : DecidableRel Disjoint
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v b✝ b : α
hb : b ∈ s
hva : v ≤ compress u v b
hua : Disjoint u (compress u v b)
left✝ : ¬compress u v b ∈ s
hu : u = ⊥
⊢ (compress u v b ⊔ u) \ v ∈ s

tactic: rwa [hu, hv, compress_self, sup_bot_eq, sdiff_bot]
state_before: case inr.intro.intro.intro
α : Type u_1
inst✝² : GeneralizedBooleanAlgebra α
inst✝¹ : DecidableRel Disjoint
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v b✝ b : α
hb : b ∈ s
hva : v ≤ compress u v b
hua : Disjoint u (compress u v b)
left✝ : ¬compress u v b ∈ s
hu : u = ⊥
hv : v = ⊥
⊢ (compress u v b ⊔ u) \ v ∈ s

tactic: exact ha
state_before: case inl.intro
α : Type u_1
inst✝² : GeneralizedBooleanAlgebra α
inst✝¹ : DecidableRel Disjoint
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v a b : α
hva : v ≤ a
hua : Disjoint u a
left✝ : a ∈ s
ha : (a ⊔ u) \ v ∈ s
⊢ (a ⊔ u) \ v ∈ s

tactic: suffices Disjoint u (u \ v) by rwa [(hua.mono_right hva).sdiff_eq_left, disjoint_self] at this
state_before: α : Type u_1
inst✝² : GeneralizedBooleanAlgebra α
inst✝¹ : DecidableRel Disjoint
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v b✝ b : α
hb : b ∈ s
hva : v ≤ compress u v b
hua : Disjoint u (compress u v b)
left✝ : ¬compress u v b ∈ s
⊢ u = ⊥

tactic: refine' hua.mono_right _
state_before: α : Type u_1
inst✝² : GeneralizedBooleanAlgebra α
inst✝¹ : DecidableRel Disjoint
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v b✝ b : α
hb : b ∈ s
hva : v ≤ compress u v b
hua : Disjoint u (compress u v b)
left✝ : ¬compress u v b ∈ s
⊢ Disjoint u (u \ v)

tactic: rw [← compress_idem, compress_of_disjoint_of_le hua hva]
state_before: α : Type u_1
inst✝² : GeneralizedBooleanAlgebra α
inst✝¹ : DecidableRel Disjoint
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v b✝ b : α
hb : b ∈ s
hva : v ≤ compress u v b
hua : Disjoint u (compress u v b)
left✝ : ¬compress u v b ∈ s
⊢ u \ v ≤ compress u v b

tactic: exact sdiff_le_sdiff_right le_sup_right
state_before: α : Type u_1
inst✝² : GeneralizedBooleanAlgebra α
inst✝¹ : DecidableRel Disjoint
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v b✝ b : α
hb : b ∈ s
hva : v ≤ compress u v b
hua : Disjoint u (compress u v b)
left✝ : ¬compress u v b ∈ s
⊢ u \ v ≤ (compress u v b ⊔ u) \ v

tactic: rwa [(hua.mono_right hva).sdiff_eq_left, disjoint_self] at this
state_before: α : Type u_1
inst✝² : GeneralizedBooleanAlgebra α
inst✝¹ : DecidableRel Disjoint
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v b✝ b : α
hb : b ∈ s
hva : v ≤ compress u v b
hua : Disjoint u (compress u v b)
left✝ : ¬compress u v b ∈ s
this : Disjoint u (u \ v)
⊢ u = ⊥

tactic: rw [← disjoint_self]
state_before: α : Type u_1
inst✝² : GeneralizedBooleanAlgebra α
inst✝¹ : DecidableRel Disjoint
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v b✝ b : α
hb : b ∈ s
hva : v ≤ compress u v b
hua : Disjoint u (compress u v b)
left✝ : ¬compress u v b ∈ s
hu : u = ⊥
⊢ v = ⊥

tactic: apply Disjoint.mono_right hva
state_before: α : Type u_1
inst✝² : GeneralizedBooleanAlgebra α
inst✝¹ : DecidableRel Disjoint
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v b✝ b : α
hb : b ∈ s
hva : v ≤ compress u v b
hua : Disjoint u (compress u v b)
left✝ : ¬compress u v b ∈ s
hu : u = ⊥
⊢ Disjoint v v

tactic: rw [← compress_idem, compress_of_disjoint_of_le hua hva]
state_before: α : Type u_1
inst✝² : GeneralizedBooleanAlgebra α
inst✝¹ : DecidableRel Disjoint
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v b✝ b : α
hb : b ∈ s
hva : v ≤ compress u v b
hua : Disjoint u (compress u v b)
left✝ : ¬compress u v b ∈ s
hu : u = ⊥
⊢ Disjoint v (compress u v b)

tactic: exact disjoint_sdiff_self_right
state_before: α : Type u_1
inst✝² : GeneralizedBooleanAlgebra α
inst✝¹ : DecidableRel Disjoint
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v b✝ b : α
hb : b ∈ s
hva : v ≤ compress u v b
hua : Disjoint u (compress u v b)
left✝ : ¬compress u v b ∈ s
hu : u = ⊥
⊢ Disjoint v ((compress u v b ⊔ u) \ v)