fact: Record lawvere_equiv := { lawvere_iso : F ↓ Id[C] ≅[Cat] Id[D] ↓ G; φ := to lawvere_iso; ψ := from lawvere_iso; η x := from (`1 (iso_from_to lawvere_iso) x); μ x := from (`1 (iso_to_from lawvere_iso) x); projF : ⟨πD,πC⟩ ≈ ⟨πD,πC⟩ ◯ φ; projG : ⟨πD,πC⟩ ≈ ⟨πD,πC⟩ ◯ ψ; κ := `1 projF; θ := `1 projG; σ : @whisker_equiv (F ↓ Id[C]) (Id[D] ↓ G) (D ∏ C) (to lawvere_iso) (from lawvere_iso) comma_proj comma_proj (from (equiv_iso (iso_from_to lawvere_iso))) (from (equiv_iso (iso_to_from lawvere_iso))) (to (equiv_iso projF)) (to (equiv_iso projG)); lawvere_to {a b} (f : F a ~> b) : a ~> G b := let o := ((a, b); f) in fmap[G] (snd (from (κ o))) ∘ `2 (φ o) ∘ fst (to (κ o)); lawvere_from {a b} (g : a ~> G b) : F a ~> b := let o := ((a, b); g) in snd (from (θ o)) ∘ `2 (ψ o) ∘ fmap[F] (fst (to (θ o))); φ' {a b} (f : F a ~> b) := lawvere_to f; ψ' {a b} (g : a ~> G b) := lawvere_from g }.
imports: Category.Lib Category.Theory.Category Category.Theory.Isomorphism Category.Theory.Functor Category.Theory.Natural.Transformation Category.Theory.Adjunction Category.Adjunction.Natural.Transformation Category.Adjunction.Natural.Transformation.Universal Category.Construction.Comma Category.Construction.Product Category.Instance.Cat Category.Instance.Fun Category.Instance.Sets