Lean4
theorem mem_sumLexLift :
c ∈ sumLexLift f₁ f₂ g₁ g₂ a b ↔
(∃ a₁ b₁ c₁, a = inl a₁ ∧ b = inl b₁ ∧ c = inl c₁ ∧ c₁ ∈ f₁ a₁ b₁) ∨
(∃ a₁ b₂ c₁, a = inl a₁ ∧ b = inr b₂ ∧ c = inl c₁ ∧ c₁ ∈ g₁ a₁ b₂) ∨
(∃ a₁ b₂ c₂, a = inl a₁ ∧ b = inr b₂ ∧ c = inr c₂ ∧ c₂ ∈ g₂ a₁ b₂) ∨
∃ a₂ b₂ c₂, a = inr a₂ ∧ b = inr b₂ ∧ c = inr c₂ ∧ c₂ ∈ f₂ a₂ b₂ :=
by
constructor
· obtain a | a := a <;> obtain b | b := b
· rw [sumLexLift, mem_map]
rintro ⟨c, hc, rfl⟩
exact Or.inl ⟨a, b, c, rfl, rfl, rfl, hc⟩
· refine fun h ↦ (mem_disjSum.1 h).elim ?_ ?_
· rintro ⟨c, hc, rfl⟩
exact Or.inr (Or.inl ⟨a, b, c, rfl, rfl, rfl, hc⟩)
· rintro ⟨c, hc, rfl⟩
exact Or.inr (Or.inr <| Or.inl ⟨a, b, c, rfl, rfl, rfl, hc⟩)
· exact fun h ↦ (notMem_empty _ h).elim
· rw [sumLexLift, mem_map]
rintro ⟨c, hc, rfl⟩
exact Or.inr (Or.inr <| Or.inr <| ⟨a, b, c, rfl, rfl, rfl, hc⟩)
· rintro
(⟨a, b, c, rfl, rfl, rfl, hc⟩ | ⟨a, b, c, rfl, rfl, rfl, hc⟩ | ⟨a, b, c, rfl, rfl, rfl, hc⟩ |
⟨a, b, c, rfl, rfl, rfl, hc⟩)
· exact mem_map_of_mem _ hc
· exact inl_mem_disjSum.2 hc
· exact inr_mem_disjSum.2 hc
· exact mem_map_of_mem _ hc