Documentation

LeanPool.DomainTheory.Neighborhood.Exercise315

Exercise 3.15 (Scott 1981, PRG-19, ยง3) โ€” the usual product isomorphisms #

Scott asks for the standard isomorphisms of the product construction. Because Proposition 3.2 gives the order-isomorphism prodEquiv : |๐’Ÿโ‚€ ร— ๐’Ÿโ‚| โ‰ƒo |๐’Ÿโ‚€| ร— |๐’Ÿโ‚|, every isomorphism reduces to the corresponding fact about cartesian products of ordered sets: mathlib's OrderIso.prodComm and OrderIso.prodAssoc, together with the two product congruences prodCongrOrderIso / prodUniqueOrderIso we record here.

Everything is choice-free (#print axioms โІ {propext, Quot.sound}).

Order-iso helpers for cartesian products. #

def Domain.Neighborhood.prodCongrOrderIso {A : Type u_6} {B : Type u_7} {C : Type u_8} {D : Type u_9} [Preorder A] [Preorder B] [Preorder C] [Preorder D] (eโ‚€ : A โ‰ƒo B) (eโ‚ : C โ‰ƒo D) :

The product of two order isomorphisms, as an order isomorphism.

Equations
  • One or more equations did not get rendered due to their size.
Instances For

    For a Unique second factor, A ร— C โ‰ƒo A (forget the constant component).

    Equations
    Instances For

      For a Unique first factor, C ร— A โ‰ƒo A (forget the constant component).

      Equations
      Instances For

        (i) Commutativity. #

        def Domain.Neighborhood.prodCommD {ฮฑ : Type u_1} {ฮฒ : Type u_2} (Vโ‚€ : NeighborhoodSystem ฮฑ) (Vโ‚ : NeighborhoodSystem ฮฒ) :
        (prod Vโ‚€ Vโ‚).Element โ‰ƒo (prod Vโ‚ Vโ‚€).Element

        Exercise 3.15(i) (Scott 1981, PRG-19). The commutativity order-isomorphism |๐’Ÿโ‚€ ร— ๐’Ÿโ‚| โ‰ƒo |๐’Ÿโ‚ ร— ๐’Ÿโ‚€|, factored through Proposition 3.2 and the cartesian swap.

        Equations
        Instances For
          theorem Domain.Neighborhood.prod_comm_isomorphic {ฮฑ : Type u_1} {ฮฒ : Type u_2} {Vโ‚€ : NeighborhoodSystem ฮฑ} {Vโ‚ : NeighborhoodSystem ฮฒ} :
          prod Vโ‚€ Vโ‚ โ‰…แดฐ prod Vโ‚ Vโ‚€

          Exercise 3.15(i). ๐’Ÿโ‚€ ร— ๐’Ÿโ‚ โ‰… ๐’Ÿโ‚ ร— ๐’Ÿโ‚€.

          (ii) Associativity. #

          def Domain.Neighborhood.prodAssocD {ฮฑ : Type u_1} {ฮฒ : Type u_2} {ฮณ : Type u_3} (Vโ‚€ : NeighborhoodSystem ฮฑ) (Vโ‚ : NeighborhoodSystem ฮฒ) (Vโ‚‚ : NeighborhoodSystem ฮณ) :
          (prod Vโ‚€ (prod Vโ‚ Vโ‚‚)).Element โ‰ƒo (prod (prod Vโ‚€ Vโ‚) Vโ‚‚).Element

          Exercise 3.15(ii) (Scott 1981, PRG-19). The associativity order-isomorphism |๐’Ÿโ‚€ ร— (๐’Ÿโ‚ ร— ๐’Ÿโ‚‚)| โ‰ƒo |(๐’Ÿโ‚€ ร— ๐’Ÿโ‚) ร— ๐’Ÿโ‚‚|.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem Domain.Neighborhood.prod_assoc_isomorphic {ฮฑ : Type u_1} {ฮฒ : Type u_2} {ฮณ : Type u_3} {Vโ‚€ : NeighborhoodSystem ฮฑ} {Vโ‚ : NeighborhoodSystem ฮฒ} {Vโ‚‚ : NeighborhoodSystem ฮณ} :
            prod Vโ‚€ (prod Vโ‚ Vโ‚‚) โ‰…แดฐ prod (prod Vโ‚€ Vโ‚) Vโ‚‚

            Exercise 3.15(ii). ๐’Ÿโ‚€ ร— (๐’Ÿโ‚ ร— ๐’Ÿโ‚‚) โ‰… (๐’Ÿโ‚€ ร— ๐’Ÿโ‚) ร— ๐’Ÿโ‚‚.

            The product of no factors โ€” the terminal (one-point) domain. #

            The terminal domain ๐Ÿ™: the neighbourhood system over Unit with the single neighbourhood ฮ” = univ. Its domain |๐Ÿ™| has exactly one element (โŠฅ = {ฮ”}), so ๐Ÿ™ is the product of no factors.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For

              |๐Ÿ™| is a subsingleton: every element is โŠฅ.

              def Domain.Neighborhood.prodUnitD {ฮฑ : Type u_1} (Vโ‚€ : NeighborhoodSystem ฮฑ) :
              (prod Vโ‚€ unitSys).Element โ‰ƒo Vโ‚€.Element

              Exercise 3.15 (empty product). ๐Ÿ™ is a right unit: ๐’Ÿ ร— ๐Ÿ™ โ‰… ๐’Ÿ.

              Equations
              Instances For
                theorem Domain.Neighborhood.prod_unit_isomorphic {ฮฑ : Type u_1} {Vโ‚€ : NeighborhoodSystem ฮฑ} :
                prod Vโ‚€ unitSys โ‰…แดฐ Vโ‚€
                def Domain.Neighborhood.unitProdD {ฮฑ : Type u_1} (Vโ‚€ : NeighborhoodSystem ฮฑ) :
                (prod unitSys Vโ‚€).Element โ‰ƒo Vโ‚€.Element

                Exercise 3.15 (empty product). ๐Ÿ™ is a left unit: ๐Ÿ™ ร— ๐’Ÿ โ‰… ๐’Ÿ.

                Equations
                Instances For
                  theorem Domain.Neighborhood.unit_prod_isomorphic {ฮฑ : Type u_1} {Vโ‚€ : NeighborhoodSystem ฮฑ} :
                  prod unitSys Vโ‚€ โ‰…แดฐ Vโ‚€

                  (iii) Functoriality of โ‰…. #

                  def Domain.Neighborhood.prodCongrD {ฮฑ : Type u_1} {ฮฒ : Type u_2} {ฮฑ' : Type u_4} {ฮฒ' : Type u_5} {Vโ‚€ : NeighborhoodSystem ฮฑ} {Vโ‚ : NeighborhoodSystem ฮฒ} {Vโ‚€' : NeighborhoodSystem ฮฑ'} {Vโ‚' : NeighborhoodSystem ฮฒ'} (eโ‚€ : Vโ‚€.Element โ‰ƒo Vโ‚€'.Element) (eโ‚ : Vโ‚.Element โ‰ƒo Vโ‚'.Element) :
                  (prod Vโ‚€ Vโ‚).Element โ‰ƒo (prod Vโ‚€' Vโ‚').Element

                  Exercise 3.15(iii) (Scott 1981, PRG-19). Two domain isomorphisms induce one on the products: |๐’Ÿโ‚€ ร— ๐’Ÿโ‚| โ‰ƒo |๐’Ÿโ‚€' ร— ๐’Ÿโ‚'|.

                  Equations
                  Instances For
                    theorem Domain.Neighborhood.Isomorphic.prod {ฮฑ : Type u_1} {ฮฒ : Type u_2} {ฮฑ' : Type u_4} {ฮฒ' : Type u_5} {Vโ‚€ : NeighborhoodSystem ฮฑ} {Vโ‚ : NeighborhoodSystem ฮฒ} {Vโ‚€' : NeighborhoodSystem ฮฑ'} {Vโ‚' : NeighborhoodSystem ฮฒ'} (hโ‚€ : Vโ‚€ โ‰…แดฐ Vโ‚€') (hโ‚ : Vโ‚ โ‰…แดฐ Vโ‚') :
                    Neighborhood.prod Vโ‚€ Vโ‚ โ‰…แดฐ Neighborhood.prod Vโ‚€' Vโ‚'

                    Exercise 3.15(iii). ๐’Ÿโ‚€ โ‰… ๐’Ÿโ‚€' and ๐’Ÿโ‚ โ‰… ๐’Ÿโ‚' imply ๐’Ÿโ‚€ ร— ๐’Ÿโ‚ โ‰… ๐’Ÿโ‚€' ร— ๐’Ÿโ‚'.