/-- Constructs an equivalence between finite distributive lattices from an order isomorphism
between them. -/
@[simps]
def Iso.mk {α β : FinBddDistLat.{u}} (e : α ≃o β) : α ≅ β where
  hom := (e : BoundedLatticeHom α β)
  inv := (e.symm : BoundedLatticeHom β α)
  hom_inv_id := by 

Proof state:
α β : FinBddDistLat
e : ↑α.toBddDistLat.toDistLat ≃o ↑β.toBddDistLat.toDistLat
⊢ ((let src :=
        { toSupHom := { toFun := ⇑e, map_sup' := (_ : ∀ (a b : ↑α.toBddDistLat.toDistLat), e (a ⊔ b) = e a ⊔ e b) },
          map_inf' := (_ : ∀ (a b : ↑α.toBddDistLat.toDistLat), e (a ⊓ b) = e a ⊓ e b) };
      {
        toLatticeHom :=
          {
            toSupHom :=
              { toFun := ⇑e,
                map_sup' :=
                  (_ :
                    ∀ (a b : ↑α.toBddDistLat.toDistLat),
                      SupHom.toFun
                          {
                              toSupHom :=
                                { toFun := ⇑e,
                                  map_sup' := (_ : ∀ (a b : ↑α.toBddDistLat.toDistLat), e (a ⊔ b) = e a ⊔ e b) },
                              map_inf' := (_ : ∀ (a b : ↑α.toBddDistLat.toDistLat), e (a ⊓ b) = e a ⊓ e b) }.toSupHom
                          (a ⊔ b) =
                        SupHom.toFun
                            {
                                toSupHom :=
                                  { toFun := ⇑e,
                                    map_sup' := (_ : ∀ (a b : ↑α.toBddDistLat.toDistLat), e (a ⊔ b) = e a ⊔ e b) },
                                map_inf' := (_ : ∀ (a b : ↑α.toBddDistLat.toDistLat), e (a ⊓ b) = e a ⊓ e b) }.toSupHom
                            a ⊔
                          SupHom.toFun
                            {
                                toSupHom :=
                                  { toFun := ⇑e,
                                    map_sup' := (_ : ∀ (a b : ↑α.toBddDistLat.toDistLat), e (a ⊔ b) = e a ⊔ e b) },
                                map_inf' := (_ : ∀ (a b : ↑α.toBddDistLat.toDistLat), e (a ⊓ b) = e a ⊓ e b) }.toSupHom
                            b) },
            map_inf' :=
              (_ :
                ∀ (a b : ↑α.toBddDistLat.toDistLat),
                  SupHom.toFun src.toSupHom (a ⊓ b) = SupHom.toFun src.toSupHom a ⊓ SupHom.toFun src.toSupHom b) },
        map_top' := (_ : e ⊤ = ⊤), map_bot' := (_ : e ⊥ = ⊥) }) ≫
      let src :=
        {
          toSupHom :=
            { toFun := ⇑(OrderIso.symm e),
              map_sup' :=
                (_ :
                  ∀ (a b : ↑β.toBddDistLat.toDistLat),
                    (OrderIso.symm e) (a ⊔ b) = (OrderIso.symm e) a ⊔ (OrderIso.symm e) b) },
          map_inf' :=
            (_ :
              ∀ (a b : ↑β.toBddDistLat.toDistLat),
                (OrderIso.symm e) (a ⊓ b) = (OrderIso.symm e) a ⊓ (OrderIso.symm e) b) };
      {
        toLatticeHom :=
          {
            toSupHom :=
              { toFun := ⇑(OrderIso.symm e),
                map_sup' :=
                  (_ :
                    ∀ (a b : ↑β.toBddDistLat.toDistLat),
                      SupHom.toFun
                          {
                              toSupHom :=
                                { toFun := ⇑(OrderIso.symm e),
                                  map_sup' :=
                                    (_ :
                                      ∀ (a b : ↑β.toBddDistLat.toDistLat),
                                        (OrderIso.symm e) (a ⊔ b) = (OrderIso.symm e) a ⊔ (OrderIso.symm e) b) },
                              map_inf' :=
                                (_ :
                                  ∀ (a b : ↑β.toBddDistLat.toDistLat),
                                    (OrderIso.symm e) (a ⊓ b) = (OrderIso.symm e) a ⊓ (OrderIso.symm e) b) }.toSupHom
                          (a ⊔ b) =
                        SupHom.toFun
                            {
                                toSupHom :=
                                  { toFun := ⇑(OrderIso.symm e),
                                    map_sup' :=
                                      (_ :
                                        ∀ (a b : ↑β.toBddDistLat.toDistLat),
                                          (OrderIso.symm e) (a ⊔ b) = (OrderIso.symm e) a ⊔ (OrderIso.symm e) b) },
                                map_inf' :=
                                  (_ :
                                    ∀ (a b : ↑β.toBddDistLat.toDistLat),
                                      (OrderIso.symm e) (a ⊓ b) = (OrderIso.symm e) a ⊓ (OrderIso.symm e) b) }.toSupHom
                            a ⊔
                          SupHom.toFun
                            {
                                toSupHom :=
                                  { toFun := ⇑(OrderIso.symm e),
                                    map_sup' :=
                                      (_ :
                                        ∀ (a b : ↑β.toBddDistLat.toDistLat),
                                          (OrderIso.symm e) (a ⊔ b) = (OrderIso.symm e) a ⊔ (OrderIso.symm e) b) },
                                map_inf' :=
                                  (_ :
                                    ∀ (a b : ↑β.toBddDistLat.toDistLat),
                                      (OrderIso.symm e) (a ⊓ b) = (OrderIso.symm e) a ⊓ (OrderIso.symm e) b) }.toSupHom
                            b) },
            map_inf' :=
              (_ :
                ∀ (a b : ↑β.toBddDistLat.toDistLat),
                  SupHom.toFun src.toSupHom (a ⊓ b) = SupHom.toFun src.toSupHom a ⊓ SupHom.toFun src.toSupHom b) },
        map_top' := (_ : (OrderIso.symm e) ⊤ = ⊤), map_bot' := (_ : (OrderIso.symm e) ⊥ = ⊥) }) =
    𝟙 α

Next tactic:
ext