Home

選択公理

module foundations.axiom-of-choice where
Imports
open import foundations.universe
open import foundations.identity-type
open import foundations.proposition
open import foundations.set
open import foundations.sigma-type
open import foundations.propositional-truncation
private variable
   ℓ′ ℓ″ : Level

module _
  (X : Type ) (isSetX : isSet X)
  (A : X  Type ℓ′) (isSetA :  x  isSet (A x))
  (P : (x : X)  A x  Type ℓ″) (isPropP :  x a  isProp (P x a))
  (trunc : PropTrunc) where
  open PropTrunc trunc

  AC : Type (  ℓ′  ℓ″)
  AC =
    ((x : X)   (Σ[ a  A x ] P x a ) )
      (Σ[ f  ((x : X)  A x) ] ((x : X)  P x (f x))) 

module _
  (X : Type ) (isSetX : isSet X)
  (Y : X  Type ℓ′) (isSetY :  x  isSet (Y x))
  (trunc : PropTrunc) where
  open PropTrunc trunc

  AC′ : Type (  ℓ′)
  AC′ = ((x : X)   Y x )   ((x : X)  Y x) 

  globalChoice→AC′ : (∀ {}  {A : Type }   A   A)  AC′
  globalChoice→AC′ gc f =   x  gc (f x))