Theorem: Finset.truncatedSup_infs
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 ∈ lowerClosure ↑s
ht : a ∈ lowerClosure ↑t
⊢ (s ⊼ t).truncatedSup a = s.truncatedSup a ⊓ t.truncatedSup 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 ∈ lowerClosure ↑s
ht : a ∈ lowerClosure ↑t
⊢ ((filter (fun x => a ≤ x) s ⊼ filter (fun x => a ≤ x) t).sup' ⋯ fun x => id x) =
    (filter (fun b => a ≤ b) s ×ˢ filter (fun b => a ≤ b) t).sup' ⋯ fun i => id i.1 ⊓ id i.2
tactic: simp only [truncatedSup_of_mem, hs, ht, infs_aux.2 ⟨hs, ht⟩, sup'_inf_sup', filter_infs_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 ∈ lowerClosure ↑s
ht : a ∈ lowerClosure ↑t
⊢ ((filter (fun x => a ≤ x) s ⊼ filter (fun x => a ≤ x) t).sup' ⋯ fun x => id x) =
    (filter (fun b => a ≤ b) s ×ˢ filter (fun b => a ≤ b) t).sup' ⋯ 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 ∈ lowerClosure ↑s
ht : a ∈ lowerClosure ↑t
⊢ ((image (Function.uncurry fun x x_1 => x ⊓ x_1) (filter (fun x => a ≤ x) s ×ˢ filter (fun x => a ≤ x) t)).sup' ⋯
      fun x => id x) =
    (filter (fun b => a ≤ b) s ×ˢ filter (fun b => a ≤ b) t).sup' ⋯ fun i => id i.1 ⊓ id i.2
tactic: simp_rw [← image_inf_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 ∈ lowerClosure ↑s
ht : a ∈ lowerClosure ↑t
⊢ ((image (Function.uncurry fun x x_1 => x ⊓ x_1) (filter (fun x => a ≤ x) s ×ˢ filter (fun x => a ≤ x) t)).sup' ⋯
      fun x => id x) =
    (filter (fun b => a ≤ b) s ×ˢ filter (fun b => a ≤ b) t).sup' ⋯ 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 ∈ lowerClosure ↑s
ht : a ∈ lowerClosure ↑t
⊢ (filter (fun x => a ≤ x) s ×ˢ filter (fun x => a ≤ x) t).sup' ⋯
      ((fun x => id x) ∘ Function.uncurry fun x x_1 => x ⊓ x_1) =
    (filter (fun b => a ≤ b) s ×ˢ filter (fun b => a ≤ b) t).sup' ⋯ fun i => id i.1 ⊓ id i.2
tactic: rw [sup'_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 ∈ lowerClosure ↑s
ht : a ∈ lowerClosure ↑t
⊢ (filter (fun x => a ≤ x) s ×ˢ filter (fun x => a ≤ x) t).sup' ⋯
      ((fun x => id x) ∘ Function.uncurry fun x x_1 => x ⊓ x_1) =
    (filter (fun b => a ≤ b) s ×ˢ filter (fun b => a ≤ b) t).sup' ⋯ fun i => id i.1 ⊓ id i.2
state_after: no goals
tactic: simp [Function.uncurry_def]