File: Mathlib/Order/Category/BddLat.lean

full_name: BddLat.toLat
code: /-- The category of bounded lattices with bounded lattice morphisms. -/
structure BddLat where
  /-- The underlying lattice of a bounded lattice. -/
  toLat : Lat
  [isBoundedOrder : BoundedOrder toLat]
goal: Lat

full_name: BddLat
code: /-- The category of bounded lattices with bounded lattice morphisms. -/
structure BddLat where
  /-- The underlying lattice of a bounded lattice. -/
  toLat : Lat
  [isBoundedOrder : BoundedOrder toLat]
goal: Type (u_1 + 1)

full_name: BddLat.isBoundedOrder
code: /-- The category of bounded lattices with bounded lattice morphisms. -/
structure BddLat where
  /-- The underlying lattice of a bounded lattice. -/
  toLat : Lat
  [isBoundedOrder : BoundedOrder toLat]
goal: BoundedOrder ↑self.toLat

full_name: BddLat.instCoeSortType
code: instance : CoeSort BddLat Type* 
goal: CoeSort BddLat (Type u_1)

full_name: BddLat.instLatticeαToLat
code: instance (X : BddLat) : Lattice X 
goal: Lattice ↑X.toLat

full_name: BddLat.of
code: /-- Construct a bundled `BddLat` from `Lattice` + `BoundedOrder`. -/
def of (α : Type*) [Lattice α] [BoundedOrder α] : BddLat 
goal: BddLat

full_name: BddLat.coe_of
code: @[simp]
theorem coe_of (α : Type*) [Lattice α] [BoundedOrder α] : ↥(of α) = α 
goal: ↑(BddLat.of α).toLat = α

full_name: BddLat.instInhabited
code: instance : Inhabited BddLat 
goal: Inhabited BddLat

full_name: BddLat.instLargeCategory
code: instance : LargeCategory.{u} BddLat 
goal: CategoryTheory.LargeCategory BddLat

full_name: BddLat.instFunLike
code: instance instFunLike (X Y : BddLat) : FunLike (X ⟶ Y) X Y 
goal: FunLike (X ⟶ Y) ↑X.toLat ↑Y.toLat

full_name: BddLat.instConcreteCategory
code: instance : ConcreteCategory BddLat 
goal: CategoryTheory.ConcreteCategory BddLat

full_name: BddLat.hasForgetToBddOrd
code: instance hasForgetToBddOrd : HasForget₂ BddLat BddOrd 
goal: CategoryTheory.HasForget₂ BddLat BddOrd

full_name: BddLat.hasForgetToLat
code: instance hasForgetToLat : HasForget₂ BddLat Lat 
goal: CategoryTheory.HasForget₂ BddLat Lat

full_name: BddLat.hasForgetToSemilatSup
code: instance hasForgetToSemilatSup : HasForget₂ BddLat SemilatSupCat 
goal: CategoryTheory.HasForget₂ BddLat SemilatSupCat

full_name: BddLat.hasForgetToSemilatInf
code: instance hasForgetToSemilatInf : HasForget₂ BddLat SemilatInfCat 
goal: CategoryTheory.HasForget₂ BddLat SemilatInfCat

full_name: BddLat.coe_forget_to_bddOrd
code: @[simp]
theorem coe_forget_to_bddOrd (X : BddLat) : ↥((forget₂ BddLat BddOrd).obj X) = ↥X 
goal: ↑((CategoryTheory.forget₂ BddLat BddOrd).obj X).toPartOrd = ↑X.toLat

full_name: BddLat.coe_forget_to_lat
code: @[simp]
theorem coe_forget_to_lat (X : BddLat) : ↥((forget₂ BddLat Lat).obj X) = ↥X 
goal: ↑((CategoryTheory.forget₂ BddLat Lat).obj X) = ↑X.toLat

full_name: BddLat.coe_forget_to_semilatSup
code: @[simp]
theorem coe_forget_to_semilatSup (X : BddLat) :
    ↥((forget₂ BddLat SemilatSupCat).obj X) = ↥X 
goal: ((CategoryTheory.forget₂ BddLat SemilatSupCat).obj X).X = ↑X.toLat

full_name: BddLat.coe_forget_to_semilatInf
code: @[simp]
theorem coe_forget_to_semilatInf (X : BddLat) :
    ↥((forget₂ BddLat SemilatInfCat).obj X) = ↥X 
goal: ((CategoryTheory.forget₂ BddLat SemilatInfCat).obj X).X = ↑X.toLat

full_name: BddLat.forget_lat_partOrd_eq_forget_bddOrd_partOrd
code: theorem forget_lat_partOrd_eq_forget_bddOrd_partOrd :
    forget₂ BddLat Lat ⋙ forget₂ Lat PartOrd =
      forget₂ BddLat BddOrd ⋙ forget₂ BddOrd PartOrd 
goal: CategoryTheory.forget₂ BddLat Lat ⋙ CategoryTheory.forget₂ Lat PartOrd =
  CategoryTheory.forget₂ BddLat BddOrd ⋙ CategoryTheory.forget₂ BddOrd PartOrd

full_name: BddLat.forget_semilatSup_partOrd_eq_forget_bddOrd_partOrd
code: theorem forget_semilatSup_partOrd_eq_forget_bddOrd_partOrd :
    forget₂ BddLat SemilatSupCat ⋙ forget₂ SemilatSupCat PartOrd =
      forget₂ BddLat BddOrd ⋙ forget₂ BddOrd PartOrd 
goal: CategoryTheory.forget₂ BddLat SemilatSupCat ⋙ CategoryTheory.forget₂ SemilatSupCat PartOrd =
  CategoryTheory.forget₂ BddLat BddOrd ⋙ CategoryTheory.forget₂ BddOrd PartOrd

full_name: BddLat.forget_semilatInf_partOrd_eq_forget_bddOrd_partOrd
code: theorem forget_semilatInf_partOrd_eq_forget_bddOrd_partOrd :
    forget₂ BddLat SemilatInfCat ⋙ forget₂ SemilatInfCat PartOrd =
      forget₂ BddLat BddOrd ⋙ forget₂ BddOrd PartOrd 
goal: CategoryTheory.forget₂ BddLat SemilatInfCat ⋙ CategoryTheory.forget₂ SemilatInfCat PartOrd =
  CategoryTheory.forget₂ BddLat BddOrd ⋙ CategoryTheory.forget₂ BddOrd PartOrd

full_name: BddLat.Iso.mk
code: /-- Constructs an equivalence between bounded lattices from an order isomorphism
between them. -/
@[simps]
def Iso.mk {α β : BddLat.{u}} (e : α ≃o β) : α ≅ β 
goal: α ≅ β

full_name: BddLat.Iso.mk_inv_toLatticeHom_toSupHom_toFun
code: /-- Constructs an equivalence between bounded lattices from an order isomorphism
between them. -/
@[simps]
def Iso.mk {α β : BddLat.{u}} (e : α ≃o β) : α ≅ β 
goal: (BddLat.Iso.mk e).inv.toSupHom a = e.symm a

full_name: BddLat.Iso.mk_hom_toLatticeHom_toSupHom_toFun
code: /-- Constructs an equivalence between bounded lattices from an order isomorphism
between them. -/
@[simps]
def Iso.mk {α β : BddLat.{u}} (e : α ≃o β) : α ≅ β 
goal: (BddLat.Iso.mk e).hom.toSupHom a = e a

full_name: BddLat.dual
code: /-- `OrderDual` as a functor. -/
@[simps]
def dual : BddLat ⥤ BddLat 
goal: BddLat ⥤ BddLat

full_name: BddLat.dual_obj
code: /-- `OrderDual` as a functor. -/
@[simps]
def dual : BddLat ⥤ BddLat 
goal: BddLat.dual.obj X = BddLat.of (↑X.toLat)ᵒᵈ

full_name: BddLat.dual_map
code: /-- `OrderDual` as a functor. -/
@[simps]
def dual : BddLat ⥤ BddLat 
goal: BddLat.dual.map a = BoundedLatticeHom.dual a

full_name: BddLat.dualEquiv_functor
code: /-- The equivalence between `BddLat` and itself induced by `OrderDual` both ways. -/
@[simps functor inverse]
def dualEquiv : BddLat ≌ BddLat 
goal: BddLat.dualEquiv.functor = BddLat.dual

full_name: BddLat.dualEquiv
code: /-- The equivalence between `BddLat` and itself induced by `OrderDual` both ways. -/
@[simps functor inverse]
def dualEquiv : BddLat ≌ BddLat 
goal: BddLat ≌ BddLat

full_name: BddLat.dualEquiv_inverse
code: /-- The equivalence between `BddLat` and itself induced by `OrderDual` both ways. -/
@[simps functor inverse]
def dualEquiv : BddLat ≌ BddLat 
goal: BddLat.dualEquiv.inverse = BddLat.dual

full_name: bddLat_dual_comp_forget_to_bddOrd
code: theorem bddLat_dual_comp_forget_to_bddOrd :
    BddLat.dual ⋙ forget₂ BddLat BddOrd =
    forget₂ BddLat BddOrd ⋙ BddOrd.dual 
goal: BddLat.dual ⋙ CategoryTheory.forget₂ BddLat BddOrd = CategoryTheory.forget₂ BddLat BddOrd ⋙ BddOrd.dual

full_name: bddLat_dual_comp_forget_to_lat
code: theorem bddLat_dual_comp_forget_to_lat :
    BddLat.dual ⋙ forget₂ BddLat Lat = forget₂ BddLat Lat ⋙ Lat.dual 
goal: BddLat.dual ⋙ CategoryTheory.forget₂ BddLat Lat = CategoryTheory.forget₂ BddLat Lat ⋙ Lat.dual

full_name: bddLat_dual_comp_forget_to_semilatSupCat
code: theorem bddLat_dual_comp_forget_to_semilatSupCat :
    BddLat.dual ⋙ forget₂ BddLat SemilatSupCat =
    forget₂ BddLat SemilatInfCat ⋙ SemilatInfCat.dual 
goal: BddLat.dual ⋙ CategoryTheory.forget₂ BddLat SemilatSupCat =
  CategoryTheory.forget₂ BddLat SemilatInfCat ⋙ SemilatInfCat.dual

full_name: bddLat_dual_comp_forget_to_semilatInfCat
code: theorem bddLat_dual_comp_forget_to_semilatInfCat :
    BddLat.dual ⋙ forget₂ BddLat SemilatInfCat =
    forget₂ BddLat SemilatSupCat ⋙ SemilatSupCat.dual 
goal: BddLat.dual ⋙ CategoryTheory.forget₂ BddLat SemilatInfCat =
  CategoryTheory.forget₂ BddLat SemilatSupCat ⋙ SemilatSupCat.dual

full_name: latToBddLat
code: /-- The functor that adds a bottom and a top element to a lattice. This is the free functor. -/
def latToBddLat : Lat.{u} ⥤ BddLat 
goal: Lat ⥤ BddLat

full_name: latToBddLatForgetAdjunction
code: /-- `latToBddLat` is left adjoint to the forgetful functor, meaning it is the free
functor from `Lat` to `BddLat`. -/
def latToBddLatForgetAdjunction : latToBddLat.{u} ⊣ forget₂ BddLat Lat 
goal: latToBddLat ⊣ CategoryTheory.forget₂ BddLat Lat

full_name: latToBddLatCompDualIsoDualCompLatToBddLat
code: /-- `latToBddLat` and `OrderDual` commute. -/
-- Porting note: the `simpNF` linter is not happy as it simplifies something that does not
-- have prettyprinting effects.
-- It seems like it is simplifying for example the first type
-- `(↑(BddLat.dualEquiv.functor.obj (latToBddLat.obj X.op.unop)).toLat)`
-- to
-- `(↑(latToBddLat.obj X).toLat)ᵒᵈ`
-- Interestingly, the linter is silent, if the proof is `sorry`-ed out...
-- see https://github.com/leanprover-community/mathlib4/issues/5049
-- @[simps!]
def latToBddLatCompDualIsoDualCompLatToBddLat :
    latToBddLat.{u} ⋙ BddLat.dual ≅ Lat.dual ⋙ latToBddLat 
goal: latToBddLat ⋙ BddLat.dual ≅ Lat.dual ⋙ latToBddLat