Theorem: Finset.truncatedInf_sups
File: Mathlib/Combinatorics/SetFamily/AhlswedeZhang.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝³ : DistribLattice α
inst✝² : BoundedOrder α
inst✝¹ : DecidableEq α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
hs : a ∈ upperClosure ↑s
ht : a ∈ upperClosure ↑t
⊢ (s ⊻ t).truncatedInf a = s.truncatedInf a ⊔ t.truncatedInf a
state_after: α : Type u_1
β : Type u_2
inst✝³ : DistribLattice α
inst✝² : BoundedOrder α
inst✝¹ : DecidableEq α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
hs : a ∈ upperClosure ↑s
ht : a ∈ upperClosure ↑t
⊢ ((filter (fun x => x ≤ a) s ⊻ filter (fun x => x ≤ a) t).inf' ⋯ fun x => id x) =
    (filter (fun x => x ≤ a) s ×ˢ filter (fun x => x ≤ a) t).inf' ⋯ fun i => id i.1 ⊔ id i.2
tactic: simp only [truncatedInf_of_mem, hs, ht, sups_aux.2 ⟨hs, ht⟩, inf'_sup_inf', filter_sups_le]
state_before: α : Type u_1
β : Type u_2
inst✝³ : DistribLattice α
inst✝² : BoundedOrder α
inst✝¹ : DecidableEq α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
hs : a ∈ upperClosure ↑s
ht : a ∈ upperClosure ↑t
⊢ ((filter (fun x => x ≤ a) s ⊻ filter (fun x => x ≤ a) t).inf' ⋯ fun x => id x) =
    (filter (fun x => x ≤ a) s ×ˢ filter (fun x => x ≤ a) t).inf' ⋯ fun i => id i.1 ⊔ id i.2
state_after: α : Type u_1
β : Type u_2
inst✝³ : DistribLattice α
inst✝² : BoundedOrder α
inst✝¹ : DecidableEq α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
hs : a ∈ upperClosure ↑s
ht : a ∈ upperClosure ↑t
⊢ ((image (Function.uncurry fun x x_1 => x ⊔ x_1) (filter (fun x => x ≤ a) s ×ˢ filter (fun x => x ≤ a) t)).inf' ⋯
      fun x => id x) =
    (filter (fun x => x ≤ a) s ×ˢ filter (fun x => x ≤ a) t).inf' ⋯ fun i => id i.1 ⊔ id i.2
tactic: simp_rw [← image_sup_product]
state_before: α : Type u_1
β : Type u_2
inst✝³ : DistribLattice α
inst✝² : BoundedOrder α
inst✝¹ : DecidableEq α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
hs : a ∈ upperClosure ↑s
ht : a ∈ upperClosure ↑t
⊢ ((image (Function.uncurry fun x x_1 => x ⊔ x_1) (filter (fun x => x ≤ a) s ×ˢ filter (fun x => x ≤ a) t)).inf' ⋯
      fun x => id x) =
    (filter (fun x => x ≤ a) s ×ˢ filter (fun x => x ≤ a) t).inf' ⋯ fun i => id i.1 ⊔ id i.2
state_after: α : Type u_1
β : Type u_2
inst✝³ : DistribLattice α
inst✝² : BoundedOrder α
inst✝¹ : DecidableEq α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
hs : a ∈ upperClosure ↑s
ht : a ∈ upperClosure ↑t
⊢ (filter (fun x => x ≤ a) s ×ˢ filter (fun x => x ≤ a) t).inf' ⋯
      ((fun x => id x) ∘ Function.uncurry fun x x_1 => x ⊔ x_1) =
    (filter (fun x => x ≤ a) s ×ˢ filter (fun x => x ≤ a) t).inf' ⋯ fun i => id i.1 ⊔ id i.2
tactic: rw [inf'_image]
state_before: α : Type u_1
β : Type u_2
inst✝³ : DistribLattice α
inst✝² : BoundedOrder α
inst✝¹ : DecidableEq α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
hs : a ∈ upperClosure ↑s
ht : a ∈ upperClosure ↑t
⊢ (filter (fun x => x ≤ a) s ×ˢ filter (fun x => x ≤ a) t).inf' ⋯
      ((fun x => id x) ∘ Function.uncurry fun x x_1 => x ⊔ x_1) =
    (filter (fun x => x ≤ a) s ×ˢ filter (fun x => x ≤ a) t).inf' ⋯ fun i => id i.1 ⊔ id i.2
state_after: no goals
tactic: simp [Function.uncurry_def]