{-# OPTIONS --without-K --exact-split --safe --auto-inline #-}
module HoTT where
open import Universes public
variable
๐ค ๐ฅ ๐ฆ ๐ฃ : Universe
data ๐ : ๐คโ ฬ where
โ : ๐
๐-induction : (A : ๐ โ ๐คโฬ ) โ A โ โ (x : ๐) โ A x
๐-induction A a โ = a
๐-recursion : (B : ๐คโฬ ) โ B โ (๐ โ B)
๐-recursion B b x = ๐-induction (ฮป _ โ B) b x
!๐' : (X : ๐คโฬ ) โ X โ ๐
!๐' X x = โ
!๐ : {X : ๐คโฬ } โ X โ ๐
!๐ x = โ
data ๐ : ๐คโโฬ where
๐-induction : (A : ๐ โ ๐ค ฬ ) โ (x : ๐) โ A x
๐-induction A ()
๐-recursion : (A : ๐ค ฬ ) โ ๐ โ A
๐-recursion A a = ๐-induction (ฮป _ โ A) a
!๐ : (A : ๐ค ฬ ) โ ๐ โ A
!๐ = ๐-recursion
is-empty : ๐ค ฬ โ ๐ค ฬ
is-empty X = X โ ๐
ยฌ : ๐ค ฬ โ ๐ค ฬ
ยฌ X = X โ ๐
data โ : ๐คโ ฬ where
zero : โ
succ : โ โ โ
{-# BUILTIN NATURAL โ #-}
โ-induction : (A : โ โ ๐ค ฬ )
โ A 0
โ ((n : โ) โ A n โ A (succ n))
โ (n : โ) โ A n
โ-induction A aโ f = h
where
h : (n : โ) โ A n
h 0 = aโ
h (succ n) = f n (h n)
โ-recursion : (X : ๐ค ฬ )
โ X
โ (โ โ X โ X)
โ โ โ X
โ-recursion X = โ-induction (ฮป _ โ X)
โ-iteration : (X : ๐ค ฬ )
โ X
โ (X โ X)
โ โ โ X
โ-iteration X x f = โ-recursion X x (ฮป _ x โ f x)
module Arithmetic where
_+_ _ร_ : โ โ โ โ โ
x + 0 = x
x + succ y = succ (x + y)
x ร 0 = 0
x ร succ y = x + x ร y
infixl 20 _+_
infixl 21 _ร_
module Arithmetic' where
_+_ _ร_ : โ โ โ โ โ
x + y = h y
where
h : โ โ โ
h = โ-iteration โ x succ
x ร y = h y
where
h : โ โ โ
h = โ-iteration โ 0 (x +_)
infixl 20 _+_
infixl 21 _ร_
module โ-order where
_โค_ _โฅ_ : โ โ โ โ ๐คโ ฬ
0 โค y = ๐
succ x โค 0 = ๐
succ x โค succ y = x โค y
x โฅ y = y โค x
infix 10 _โค_
infix 10 _โฅ_
data _+_ {๐ค ๐ฅ} (X : ๐ค ฬ ) (Y : ๐ฅ ฬ ) : ๐ค โ ๐ฅ ฬ where
inl : X โ X + Y
inr : Y โ X + Y
+-induction : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (A : X + Y โ ๐ฆ ฬ )
โ ((x : X) โ A (inl x))
โ ((y : Y) โ A (inr y))
โ (z : X + Y) โ A z
+-induction A f g (inl x) = f x
+-induction A f g (inr y) = g y
+-recursion : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {A : ๐ฆ ฬ } โ (X โ A) โ (Y โ A) โ X + Y โ A
+-recursion {๐ค} {๐ฅ} {๐ฆ} {X} {Y} {A} = +-induction (ฮป _ โ A)
๐ : ๐คโ ฬ
๐ = ๐ + ๐
pattern โ = inl โ
pattern โ = inr โ
๐-induction : (A : ๐ โ ๐ค ฬ ) โ A โ โ A โ โ (n : ๐) โ A n
๐-induction A aโ aโ โ = aโ
๐-induction A aโ aโ โ = aโ
๐-induction' : (A : ๐ โ ๐ค ฬ ) โ A โ โ A โ โ (n : ๐) โ A n
๐-induction' A aโ aโ = +-induction A
(๐-induction (ฮป (x : ๐) โ A (inl x)) aโ)
(๐-induction (ฮป (y : ๐) โ A (inr y)) aโ)
record ฮฃ {๐ค ๐ฅ} {X : ๐ค ฬ } (Y : X โ ๐ฅ ฬ ) : ๐ค โ ๐ฅ ฬ where
constructor
_,_
field
x : X
y : Y x
prโ : {X : ๐ค ฬ } {Y : X โ ๐ฅ ฬ } โ ฮฃ Y โ X
prโ (x , y) = x
prโ : {X : ๐ค ฬ } {Y : X โ ๐ฅ ฬ } โ (z : ฮฃ Y) โ Y (prโ z)
prโ (x , y) = y
-ฮฃ : {๐ค ๐ฅ : Universe} (X : ๐ค ฬ ) (Y : X โ ๐ฅ ฬ ) โ ๐ค โ ๐ฅ ฬ
-ฮฃ X Y = ฮฃ Y
syntax -ฮฃ X (ฮป x โ y) = ฮฃ x ๊ X , y
ฮฃ-induction : {X : ๐ค ฬ } {Y : X โ ๐ฅ ฬ } {A : ฮฃ Y โ ๐ฆ ฬ }
โ ((x : X) (y : Y x) โ A (x , y))
โ ((x , y) : ฮฃ Y) โ A (x , y)
ฮฃ-induction g (x , y) = g x y
curry : {X : ๐ค ฬ } {Y : X โ ๐ฅ ฬ } {A : ฮฃ Y โ ๐ฆ ฬ }
โ (((x , y) : ฮฃ Y) โ A (x , y))
โ ((x : X) (y : Y x) โ A (x , y))
curry f x y = f (x , y)
_ร_ : ๐ค ฬ โ ๐ฅ ฬ โ ๐ค โ ๐ฅ ฬ
X ร Y = ฮฃ x ๊ X , Y
ฮ : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) โ ๐ค โ ๐ฅ ฬ
ฮ {๐ค} {๐ฅ} {X} A = (x : X) โ A x
-ฮ : {๐ค ๐ฅ : Universe} (X : ๐ค ฬ ) (Y : X โ ๐ฅ ฬ ) โ ๐ค โ ๐ฅ ฬ
-ฮ X Y = ฮ Y
syntax -ฮ A (ฮป x โ b) = ฮ x ๊ A , b
id : {X : ๐ค ฬ } โ X โ X
id x = x
๐๐ : (X : ๐ค ฬ ) โ X โ X
๐๐ X = id
_โ_ : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {Z : Y โ ๐ฆ ฬ }
โ ((y : Y) โ Z y)
โ (f : X โ Y)
โ (x : X) โ Z (f x)
g โ f = ฮป x โ g (f x)
domain : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ ๐ค ฬ
domain {๐ค} {๐ฅ} {X} {Y} f = X
codomain : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ ๐ฅ ฬ
codomain {๐ค} {๐ฅ} {X} {Y} f = Y
type-of : {X : ๐ค ฬ } โ X โ ๐ค ฬ
type-of {๐ค} {X} x = X
data Id {๐ค} (X : ๐ค ฬ ) : X โ X โ ๐ค ฬ where
refl : (x : X) โ Id X x x
_โก_ : {X : ๐ค ฬ } โ X โ X โ ๐ค ฬ
x โก y = Id _ x y
๐ : (X : ๐ค ฬ ) (A : (x y : X) โ x โก y โ ๐ฅ ฬ )
โ ((x : X) โ A x x (refl x))
โ (x y : X) (p : x โก y) โ A x y p
๐ X A f x x (refl x) = f x
โ : {X : ๐ค ฬ } (x : X) (B : (y : X) โ x โก y โ ๐ฅ ฬ )
โ B x (refl x)
โ (y : X) (p : x โก y) โ B y p
โ x B b x (refl x) = b
๐' : (X : ๐ค ฬ ) (A : (x y : X) โ x โก y โ ๐ฅ ฬ )
โ ((x : X) โ A x x (refl x))
โ (x y : X) (p : x โก y) โ A x y p
๐' X A f x = โ x (A x) (f x)
๐s-agreement : (X : ๐ค ฬ ) (A : (x y : X) โ x โก y โ ๐ฅ ฬ )
(f : (x : X) โ A x x (refl x)) (x y : X) (p : x โก y)
โ ๐ X A f x y p โก ๐' X A f x y p
๐s-agreement X A f x x (refl x) = refl (f x)
transport : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) {x y : X}
โ x โก y โ A x โ A y
transport A (refl x) = ๐๐ (A x)
transport๐ : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) {x y : X}
โ x โก y โ A x โ A y
transport๐ {๐ค} {๐ฅ} {X} A {x} {y} = ๐ X (ฮป x y _ โ A x โ A y) (ฮป x โ ๐๐ (A x)) x y
nondep-โ : {X : ๐ค ฬ } (x : X) (A : X โ ๐ฅ ฬ )
โ A x โ (y : X) โ x โก y โ A y
nondep-โ x A = โ x (ฮป y _ โ A y)
transportโ : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) {x y : X}
โ x โก y โ A x โ A y
transportโ A {x} {y} p a = nondep-โ x A a y p
transports-agreement : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) {x y : X} (p : x โก y)
โ (transportโ A p โก transport A p)
ร (transport๐ A p โก transport A p)
transports-agreement A (refl x) = refl (transport A (refl x)) ,
refl (transport A (refl x))
lhs : {X : ๐ค ฬ } {x y : X} โ x โก y โ X
lhs {๐ค} {X} {x} {y} p = x
rhs : {X : ๐ค ฬ } {x y : X} โ x โก y โ X
rhs {๐ค} {X} {x} {y} p = y
_โ_ : {X : ๐ค ฬ } {x y z : X} โ x โก y โ y โก z โ x โก z
p โ q = transport (lhs p โก_) q p
_โกโจ_โฉ_ : {X : ๐ค ฬ } (x : X) {y z : X} โ x โก y โ y โก z โ x โก z
x โกโจ p โฉ q = p โ q
_โ : {X : ๐ค ฬ } (x : X) โ x โก x
x โ = refl x
_โปยน : {X : ๐ค ฬ } โ {x y : X} โ x โก y โ y โก x
p โปยน = transport (_โก lhs p) p (refl (lhs p))
_โ'_ : {X : ๐ค ฬ } {x y z : X} โ x โก y โ y โก z โ x โก z
p โ' q = transport (_โก rhs q) (p โปยน) q
โagreement : {X : ๐ค ฬ } {x y z : X} (p : x โก y) (q : y โก z)
โ p โ' q โก p โ q
โagreement (refl x) (refl x) = refl (refl x)
rdnel : {X : ๐ค ฬ } {x y : X} (p : x โก y)
โ p โ refl y โก p
rdnel p = refl p
rdner : {X : ๐ค ฬ } {y z : X} (q : y โก z)
โ refl y โ' q โก q
rdner q = refl q
ap : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y) {x x' : X} โ x โก x' โ f x โก f x'
ap f {x} {x'} p = transport (ฮป - โ f x โก f -) p (refl (f x))
_โผ_ : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } โ ฮ A โ ฮ A โ ๐ค โ ๐ฅ ฬ
f โผ g = โ x โ f x โก g x
ยฌยฌ ยฌยฌยฌ : ๐ค ฬ โ ๐ค ฬ
ยฌยฌ A = ยฌ(ยฌ A)
ยฌยฌยฌ A = ยฌ(ยฌยฌ A)
dni : (A : ๐ค ฬ ) โ A โ ยฌยฌ A
dni A a u = u a
contrapositive : {A : ๐ค ฬ } {B : ๐ฅ ฬ } โ (A โ B) โ (ยฌ B โ ยฌ A)
contrapositive f v a = v (f a)
tno : (A : ๐ค ฬ ) โ ยฌยฌยฌ A โ ยฌ A
tno A = contrapositive (dni A)
_โ_ : ๐ค ฬ โ ๐ฅ ฬ โ ๐ค โ ๐ฅ ฬ
X โ Y = (X โ Y) ร (Y โ X)
lr-implication : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ (X โ Y)
lr-implication = prโ
rl-implication : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ (Y โ X)
rl-implication = prโ
absurdityยณ-is-absurdity : {A : ๐ค ฬ } โ ยฌยฌยฌ A โ ยฌ A
absurdityยณ-is-absurdity {๐ค} {A} = firstly , secondly
where
firstly : ยฌยฌยฌ A โ ยฌ A
firstly = contrapositive (dni A)
secondly : ยฌ A โ ยฌยฌยฌ A
secondly = dni (ยฌ A)
_โข_ : {X : ๐ค ฬ } โ X โ X โ ๐ค ฬ
x โข y = ยฌ(x โก y)
โข-sym : {X : ๐ค ฬ } {x y : X} โ x โข y โ y โข x
โข-sym {๐ค} {X} {x} {y} u = ฮป (p : y โก x) โ u (p โปยน)
IdโFun : {X Y : ๐ค ฬ } โ X โก Y โ X โ Y
IdโFun {๐ค} = transport (๐๐ (๐ค ฬ ))
IdโFun' : {X Y : ๐ค ฬ } โ X โก Y โ X โ Y
IdโFun' (refl X) = ๐๐ X
IdโFuns-agree : {X Y : ๐ค ฬ } (p : X โก Y)
โ IdโFun p โก IdโFun' p
IdโFuns-agree (refl X) = refl (๐๐ X)
๐-is-not-๐ : ๐ โข ๐
๐-is-not-๐ p = IdโFun p โ
โ-is-not-โ : โ โข โ
โ-is-not-โ p = ๐-is-not-๐ q
where
f : ๐ โ ๐คโ ฬ
f โ = ๐
f โ = ๐
q : ๐ โก ๐
q = ap f p
โ-is-not-โ[not-an-MLTT-proof] : ยฌ(โ โก โ)
โ-is-not-โ[not-an-MLTT-proof] ()
decidable : ๐ค ฬ โ ๐ค ฬ
decidable A = A + ยฌ A
has-decidable-equality : ๐ค ฬ โ ๐ค ฬ
has-decidable-equality X = (x y : X) โ decidable (x โก y)
๐-has-decidable-equality : has-decidable-equality ๐
๐-has-decidable-equality โ โ = inl (refl โ)
๐-has-decidable-equality โ โ = inr (โข-sym โ-is-not-โ)
๐-has-decidable-equality โ โ = inr โ-is-not-โ
๐-has-decidable-equality โ โ = inl (refl โ)
not-zero-is-one : (n : ๐) โ n โข โ โ n โก โ
not-zero-is-one โ f = !๐ (โ โก โ) (f (refl โ))
not-zero-is-one โ f = refl โ
inl-inr-disjoint-images : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {x : X} {y : Y} โ inl x โข inr y
inl-inr-disjoint-images {๐ค} {๐ฅ} {X} {Y} p = ๐-is-not-๐ q
where
f : X + Y โ ๐คโ ฬ
f (inl x) = ๐
f (inr y) = ๐
q : ๐ โก ๐
q = ap f p
right-fails-gives-left-holds : {P : ๐ค ฬ } {Q : ๐ฅ ฬ } โ P + Q โ ยฌ Q โ P
right-fails-gives-left-holds (inl p) u = p
right-fails-gives-left-holds (inr q) u = !๐ _ (u q)
module twin-primes where
open Arithmetic renaming (_ร_ to _*_ ; _+_ to _โ_)
open โ-order
is-prime : โ โ ๐คโ ฬ
is-prime n = (n โฅ 2) ร ((x y : โ) โ x * y โก n โ (x โก 1) + (x โก n))
twin-prime-conjecture : ๐คโ ฬ
twin-prime-conjecture = (n : โ) โ ฮฃ p ๊ โ , (p โฅ n)
ร is-prime p
ร is-prime (p โ 2)
positive-not-zero : (x : โ) โ succ x โข 0
positive-not-zero x p = ๐-is-not-๐ (g p)
where
f : โ โ ๐คโ ฬ
f 0 = ๐
f (succ x) = ๐
g : succ x โก 0 โ ๐ โก ๐
g = ap f
pred : โ โ โ
pred 0 = 0
pred (succ n) = n
succ-lc : {x y : โ} โ succ x โก succ y โ x โก y
succ-lc = ap pred
โ-has-decidable-equality : has-decidable-equality โ
โ-has-decidable-equality 0 0 = inl (refl 0)
โ-has-decidable-equality 0 (succ y) = inr (โข-sym (positive-not-zero y))
โ-has-decidable-equality (succ x) 0 = inr (positive-not-zero x)
โ-has-decidable-equality (succ x) (succ y) = f (โ-has-decidable-equality x y)
where
f : decidable (x โก y) โ decidable (succ x โก succ y)
f (inl p) = inl (ap succ p)
f (inr k) = inr (ฮป (s : succ x โก succ y) โ k (succ-lc s))
module basic-arithmetic-and-order where
open โ-order public
open Arithmetic renaming (_+_ to _โ_) hiding (_ร_)
+-assoc : (x y z : โ) โ (x โ y) โ z โก x โ (y โ z)
+-assoc x y 0 = (x โ y) โ 0 โกโจ refl _ โฉ
x โ (y โ 0) โ
+-assoc x y (succ z) = (x โ y) โ succ z โกโจ refl _ โฉ
succ ((x โ y) โ z) โกโจ ap succ IH โฉ
succ (x โ (y โ z)) โกโจ refl _ โฉ
x โ (y โ succ z) โ
where
IH : (x โ y) โ z โก x โ (y โ z)
IH = +-assoc x y z
+-assoc' : (x y z : โ) โ (x โ y) โ z โก x โ (y โ z)
+-assoc' x y zero = refl _
+-assoc' x y (succ z) = ap succ (+-assoc' x y z)
+-base-on-first : (x : โ) โ 0 โ x โก x
+-base-on-first 0 = refl 0
+-base-on-first (succ x) = 0 โ succ x โกโจ refl _ โฉ
succ (0 โ x) โกโจ ap succ IH โฉ
succ x โ
where
IH : 0 โ x โก x
IH = +-base-on-first x
+-step-on-first : (x y : โ) โ succ x โ y โก succ (x โ y)
+-step-on-first x zero = refl (succ x)
+-step-on-first x (succ y) = succ x โ succ y โกโจ refl _ โฉ
succ (succ x โ y) โกโจ ap succ IH โฉ
succ (x โ succ y) โ
where
IH : succ x โ y โก succ (x โ y)
IH = +-step-on-first x y
+-comm : (x y : โ) โ x โ y โก y โ x
+-comm 0 y = 0 โ y โกโจ +-base-on-first y โฉ
y โกโจ refl _ โฉ
y โ 0 โ
+-comm (succ x) y = succ x โ y โกโจ +-step-on-first x y โฉ
succ(x โ y) โกโจ ap succ IH โฉ
succ(y โ x) โกโจ refl _ โฉ
y โ succ x โ
where
IH : x โ y โก y โ x
IH = +-comm x y
+-lc : (x y z : โ) โ x โ y โก x โ z โ y โก z
+-lc 0 y z p = y โกโจ (+-base-on-first y)โปยน โฉ
0 โ y โกโจ p โฉ
0 โ z โกโจ +-base-on-first z โฉ
z โ
+-lc (succ x) y z p = IH
where
q = succ (x โ y) โกโจ (+-step-on-first x y)โปยน โฉ
succ x โ y โกโจ p โฉ
succ x โ z โกโจ +-step-on-first x z โฉ
succ (x โ z) โ
IH : y โก z
IH = +-lc x y z (succ-lc q)
_โผ_ : โ โ โ โ ๐คโ ฬ
x โผ y = ฮฃ z ๊ โ , x โ z โก y
โค-gives-โผ : (x y : โ) โ x โค y โ x โผ y
โค-gives-โผ 0 0 l = 0 , refl 0
โค-gives-โผ 0 (succ y) l = succ y , +-base-on-first (succ y)
โค-gives-โผ (succ x) 0 l = !๐ (succ x โผ zero) l
โค-gives-โผ (succ x) (succ y) l = ฮณ
where
IH : x โผ y
IH = โค-gives-โผ x y l
z : โ
z = prโ IH
p : x โ z โก y
p = prโ IH
ฮณ : succ x โผ succ y
ฮณ = z , (succ x โ z โกโจ +-step-on-first x z โฉ
succ (x โ z) โกโจ ap succ p โฉ
succ y โ)
โผ-gives-โค : (x y : โ) โ x โผ y โ x โค y
โผ-gives-โค 0 0 (z , p) = โ
โผ-gives-โค 0 (succ y) (z , p) = โ
โผ-gives-โค (succ x) 0 (z , p) = positive-not-zero (x โ z) q
where
q = succ (x โ z) โกโจ (+-step-on-first x z)โปยน โฉ
succ x โ z โกโจ p โฉ
zero โ
โผ-gives-โค (succ x) (succ y) (z , p) = IH
where
q = succ (x โ z) โกโจ (+-step-on-first x z)โปยน โฉ
succ x โ z โกโจ p โฉ
succ y โ
IH : x โค y
IH = โผ-gives-โค x y (z , succ-lc q)
โค-refl : (n : โ) โ n โค n
โค-refl zero = โ
โค-refl (succ n) = โค-refl n
โค-trans : (l m n : โ) โ l โค m โ m โค n โ l โค n
โค-trans zero m n p q = โ
โค-trans (succ l) zero n p q = !๐ (succ l โค n) p
โค-trans (succ l) (succ m) zero p q = q
โค-trans (succ l) (succ m) (succ n) p q = โค-trans l m n p q
โค-anti : (m n : โ) โ m โค n โ n โค m โ m โก n
โค-anti zero zero p q = refl zero
โค-anti zero (succ n) p q = !๐ (zero โก succ n) q
โค-anti (succ m) zero p q = !๐ (succ m โก zero) p
โค-anti (succ m) (succ n) p q = ap succ (โค-anti m n p q)
โค-succ : (n : โ) โ n โค succ n
โค-succ zero = โ
โค-succ (succ n) = โค-succ n
zero-minimal : (n : โ) โ zero โค n
zero-minimal n = โ
unique-minimal : (n : โ) โ n โค zero โ n โก zero
unique-minimal zero p = refl zero
unique-minimal (succ n) p = !๐ (succ n โก zero) p
โค-split : (m n : โ) โ m โค succ n โ (m โค n) + (m โก succ n)
โค-split zero n l = inl l
โค-split (succ m) zero l = inr (ap succ (unique-minimal m l))
โค-split (succ m) (succ n) l = +-recursion inl (inr โ ap succ) (โค-split m n l)
_<_ : โ โ โ โ ๐คโ ฬ
x < y = succ x โค y
infix 10 _<_
not-<-gives-โฅ : (m n : โ) โ ยฌ(n < m) โ m โค n
not-<-gives-โฅ zero n u = zero-minimal n
not-<-gives-โฅ (succ m) zero u = dni (zero < succ m) (zero-minimal m) u
not-<-gives-โฅ (succ m) (succ n) u = not-<-gives-โฅ m n u
bounded-โ-next : (A : โ โ ๐ค ฬ ) (k : โ)
โ A k
โ ((n : โ) โ n < k โ A n)
โ (n : โ) โ n < succ k โ A n
bounded-โ-next A k a ฯ n l = +-recursion f g s
where
s : (n < k) + (succ n โก succ k)
s = โค-split (succ n) k l
f : n < k โ A n
f = ฯ n
g : succ n โก succ k โ A n
g p = transport A ((succ-lc p)โปยน) a
root : (โ โ โ) โ ๐คโ ฬ
root f = ฮฃ n ๊ โ , f n โก 0
_has-no-root<_ : (โ โ โ) โ โ โ ๐คโ ฬ
f has-no-root< k = (n : โ) โ n < k โ f n โข 0
is-minimal-root : (โ โ โ) โ โ โ ๐คโ ฬ
is-minimal-root f m = (f m โก 0) ร (f has-no-root< m)
at-most-one-minimal-root : (f : โ โ โ) (m n : โ)
โ is-minimal-root f m โ is-minimal-root f n โ m โก n
at-most-one-minimal-root f m n (p , ฯ) (q , ฯ) = c m n a b
where
a : ยฌ(m < n)
a u = ฯ m u p
b : ยฌ(n < m)
b v = ฯ n v q
c : (m n : โ) โ ยฌ(m < n) โ ยฌ(n < m) โ m โก n
c m n u v = โค-anti m n (not-<-gives-โฅ m n v) (not-<-gives-โฅ n m u)
minimal-root : (โ โ โ) โ ๐คโ ฬ
minimal-root f = ฮฃ m ๊ โ , is-minimal-root f m
minimal-root-is-root : โ f โ minimal-root f โ root f
minimal-root-is-root f (m , p , _) = m , p
bounded-โ-search : โ k f โ (minimal-root f) + (f has-no-root< k)
bounded-โ-search zero f = inr (ฮป n โ !๐ (f n โข 0))
bounded-โ-search (succ k) f = +-recursion ฯ ฮณ (bounded-โ-search k f)
where
A : โ โ (โ โ โ) โ ๐คโ ฬ
A k f = (minimal-root f) + (f has-no-root< k)
ฯ : minimal-root f โ A (succ k) f
ฯ = inl
ฮณ : f has-no-root< k โ A (succ k) f
ฮณ u = +-recursion ฮณโ ฮณโ (โ-has-decidable-equality (f k) 0)
where
ฮณโ : f k โก 0 โ A (succ k) f
ฮณโ p = inl (k , p , u)
ฮณโ : f k โข 0 โ A (succ k) f
ฮณโ v = inr (bounded-โ-next (ฮป n โ f n โข 0) k v u)
root-gives-minimal-root : โ f โ root f โ minimal-root f
root-gives-minimal-root f (n , p) = ฮณ
where
g : ยฌ(f has-no-root< (succ n))
g ฯ = ฯ n (โค-refl n) p
ฮณ : minimal-root f
ฮณ = right-fails-gives-left-holds (bounded-โ-search (succ n) f) g
is-singleton : ๐ค ฬ โ ๐ค ฬ
is-singleton X = ฮฃ c ๊ X , ((x : X) โ c โก x)
is-center : (X : ๐ค ฬ ) โ X โ ๐ค ฬ
is-center X c = (x : X) โ c โก x
๐-is-singleton : is-singleton ๐
๐-is-singleton = โ , ๐-induction (ฮป x โ โ โก x) (refl โ)
center : (X : ๐ค ฬ ) โ is-singleton X โ X
center X (c , ฯ) = c
centrality : (X : ๐ค ฬ ) (i : is-singleton X) (x : X) โ center X i โก x
centrality X (c , ฯ) = ฯ
is-subsingleton : ๐ค ฬ โ ๐ค ฬ
is-subsingleton X = (x y : X) โ x โก y
๐-is-subsingleton : is-subsingleton ๐
๐-is-subsingleton x y = !๐ (x โก y) x
singletons-are-subsingletons : (X : ๐ค ฬ ) โ is-singleton X โ is-subsingleton X
singletons-are-subsingletons X (c , ฯ) x y = x โกโจ (ฯ x)โปยน โฉ
c โกโจ ฯ y โฉ
y โ
๐-is-subsingleton : is-subsingleton ๐
๐-is-subsingleton = singletons-are-subsingletons ๐ ๐-is-singleton
pointed-subsingletons-are-singletons : (X : ๐ค ฬ )
โ X โ is-subsingleton X โ is-singleton X
pointed-subsingletons-are-singletons X x s = (x , s x)
singleton-iff-pointed-and-subsingleton : {X : ๐ค ฬ }
โ is-singleton X โ (X ร is-subsingleton X)
singleton-iff-pointed-and-subsingleton {๐ค} {X} = (a , b)
where
a : is-singleton X โ X ร is-subsingleton X
a s = center X s , singletons-are-subsingletons X s
b : X ร is-subsingleton X โ is-singleton X
b (x , t) = pointed-subsingletons-are-singletons X x t
is-prop is-truth-value : ๐ค ฬ โ ๐ค ฬ
is-prop = is-subsingleton
is-truth-value = is-subsingleton
is-set : ๐ค ฬ โ ๐ค ฬ
is-set X = (x y : X) โ is-subsingleton (x โก y)
EM EM' : โ ๐ค โ ๐ค โบ ฬ
EM ๐ค = (X : ๐ค ฬ ) โ is-subsingleton X โ X + ยฌ X
EM' ๐ค = (X : ๐ค ฬ ) โ is-subsingleton X โ is-singleton X + is-empty X
EM-gives-EM' : EM ๐ค โ EM' ๐ค
EM-gives-EM' em X s = ฮณ (em X s)
where
ฮณ : X + ยฌ X โ is-singleton X + is-empty X
ฮณ (inl x) = inl (pointed-subsingletons-are-singletons X x s)
ฮณ (inr x) = inr x
EM'-gives-EM : EM' ๐ค โ EM ๐ค
EM'-gives-EM em' X s = ฮณ (em' X s)
where
ฮณ : is-singleton X + is-empty X โ X + ยฌ X
ฮณ (inl i) = inl (center X i)
ฮณ (inr x) = inr x
no-unicorns : ยฌ(ฮฃ X ๊ ๐ค ฬ , is-subsingleton X ร ยฌ(is-singleton X) ร ยฌ(is-empty X))
no-unicorns (X , i , f , g) = c
where
e : is-empty X
e x = f (pointed-subsingletons-are-singletons X x i)
c : ๐
c = g e
module magmas where
Magma : (๐ค : Universe) โ ๐ค โบ ฬ
Magma ๐ค = ฮฃ X ๊ ๐ค ฬ , is-set X ร (X โ X โ X)
โจ_โฉ : Magma ๐ค โ ๐ค ฬ
โจ X , i , _ยท_ โฉ = X
magma-is-set : (M : Magma ๐ค) โ is-set โจ M โฉ
magma-is-set (X , i , _ยท_) = i
magma-operation : (M : Magma ๐ค) โ โจ M โฉ โ โจ M โฉ โ โจ M โฉ
magma-operation (X , i , _ยท_) = _ยท_
syntax magma-operation M x y = x ยทโจ M โฉ y
is-magma-hom : (M N : Magma ๐ค) โ (โจ M โฉ โ โจ N โฉ) โ ๐ค ฬ
is-magma-hom M N f = (x y : โจ M โฉ) โ f (x ยทโจ M โฉ y) โก f x ยทโจ N โฉ f y
id-is-magma-hom : (M : Magma ๐ค) โ is-magma-hom M M (๐๐ โจ M โฉ)
id-is-magma-hom M = ฮป (x y : โจ M โฉ) โ refl (x ยทโจ M โฉ y)
is-magma-iso : (M N : Magma ๐ค) โ (โจ M โฉ โ โจ N โฉ) โ ๐ค ฬ
is-magma-iso M N f = is-magma-hom M N f
ร (ฮฃ g ๊ (โจ N โฉ โ โจ M โฉ), is-magma-hom N M g
ร (g โ f โผ ๐๐ โจ M โฉ)
ร (f โ g โผ ๐๐ โจ N โฉ))
id-is-magma-iso : (M : Magma ๐ค) โ is-magma-iso M M (๐๐ โจ M โฉ)
id-is-magma-iso M = id-is-magma-hom M ,
๐๐ โจ M โฉ ,
id-is-magma-hom M ,
refl ,
refl
Idโiso : {M N : Magma ๐ค} โ M โก N โ โจ M โฉ โ โจ N โฉ
Idโiso p = transport โจ_โฉ p
Idโiso-is-iso : {M N : Magma ๐ค} (p : M โก N) โ is-magma-iso M N (Idโiso p)
Idโiso-is-iso (refl M) = id-is-magma-iso M
_โ
โ_ : Magma ๐ค โ Magma ๐ค โ ๐ค ฬ
M โ
โ N = ฮฃ f ๊ (โจ M โฉ โ โจ N โฉ), is-magma-iso M N f
magma-Idโiso : {M N : Magma ๐ค} โ M โก N โ M โ
โ N
magma-Idโiso p = (Idโiso p , Idโiso-is-iso p)
โ-Magma : (๐ค : Universe) โ ๐ค โบ ฬ
โ-Magma ๐ค = ฮฃ X ๊ ๐ค ฬ , (X โ X โ X)
module monoids where
left-neutral : {X : ๐ค ฬ } โ X โ (X โ X โ X) โ ๐ค ฬ
left-neutral e _ยท_ = โ x โ e ยท x โก x
right-neutral : {X : ๐ค ฬ } โ X โ (X โ X โ X) โ ๐ค ฬ
right-neutral e _ยท_ = โ x โ x ยท e โก x
associative : {X : ๐ค ฬ } โ (X โ X โ X) โ ๐ค ฬ
associative _ยท_ = โ x y z โ (x ยท y) ยท z โก x ยท (y ยท z)
Monoid : (๐ค : Universe) โ ๐ค โบ ฬ
Monoid ๐ค = ฮฃ X ๊ ๐ค ฬ , is-set X
ร (ฮฃ ยท ๊ (X โ X โ X) , (ฮฃ e ๊ X , (left-neutral e ยท)
ร (right-neutral e ยท)
ร (associative ยท)))
refl-left : {X : ๐ค ฬ } {x y : X} {p : x โก y} โ refl x โ p โก p
refl-left {๐ค} {X} {x} {x} {refl x} = refl (refl x)
refl-right : {X : ๐ค ฬ } {x y : X} {p : x โก y} โ p โ refl y โก p
refl-right {๐ค} {X} {x} {y} {p} = refl p
โassoc : {X : ๐ค ฬ } {x y z t : X} (p : x โก y) (q : y โก z) (r : z โก t)
โ (p โ q) โ r โก p โ (q โ r)
โassoc p q (refl z) = refl (p โ q)
โปยน-leftโ : {X : ๐ค ฬ } {x y : X} (p : x โก y)
โ p โปยน โ p โก refl y
โปยน-leftโ (refl x) = refl (refl x)
โปยน-rightโ : {X : ๐ค ฬ } {x y : X} (p : x โก y)
โ p โ p โปยน โก refl x
โปยน-rightโ (refl x) = refl (refl x)
โปยน-involutive : {X : ๐ค ฬ } {x y : X} (p : x โก y)
โ (p โปยน)โปยน โก p
โปยน-involutive (refl x) = refl (refl x)
ap-refl : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y) (x : X)
โ ap f (refl x) โก refl (f x)
ap-refl f x = refl (refl (f x))
ap-โ : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y) {x y z : X} (p : x โก y) (q : y โก z)
โ ap f (p โ q) โก ap f p โ ap f q
ap-โ f p (refl y) = refl (ap f p)
apโปยน : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y) {x y : X} (p : x โก y)
โ (ap f p)โปยน โก ap f (p โปยน)
apโปยน f (refl x) = refl (refl (f x))
ap-id : {X : ๐ค ฬ } {x y : X} (p : x โก y)
โ ap id p โก p
ap-id (refl x) = refl (refl x)
ap-โ : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {Z : ๐ฆ ฬ }
(f : X โ Y) (g : Y โ Z) {x y : X} (p : x โก y)
โ ap (g โ f) p โก (ap g โ ap f) p
ap-โ f g (refl x) = refl (refl (g (f x)))
transportโ : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) {x y z : X} (p : x โก y) (q : y โก z)
โ transport A (p โ q) โก transport A q โ transport A p
transportโ A p (refl y) = refl (transport A p)
Nat : {X : ๐ค ฬ } โ (X โ ๐ฅ ฬ ) โ (X โ ๐ฆ ฬ ) โ ๐ค โ ๐ฅ โ ๐ฆ ฬ
Nat A B = (x : domain A) โ A x โ B x
Nats-are-natural : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) (B : X โ ๐ฆ ฬ ) (ฯ : Nat A B)
โ {x y : X} (p : x โก y)
โ ฯ y โ transport A p โก transport B p โ ฯ x
Nats-are-natural A B ฯ (refl x) = refl (ฯ x)
Natฮฃ : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {B : X โ ๐ฆ ฬ } โ Nat A B โ ฮฃ A โ ฮฃ B
Natฮฃ ฯ (x , a) = (x , ฯ x a)
transport-ap : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (A : Y โ ๐ฆ ฬ )
(f : X โ Y) {x x' : X} (p : x โก x') (a : A (f x))
โ transport (A โ f) p a โก transport A (ap f p) a
transport-ap A f (refl x) a = refl a
data Color : ๐คโ ฬ where
Black White : Color
apd : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } (f : (x : X) โ A x) {x y : X}
(p : x โก y) โ transport A p (f x) โก f y
apd f (refl x) = refl (f x)
to-ฮฃ-โก : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {ฯ ฯ : ฮฃ A}
โ (ฮฃ p ๊ prโ ฯ โก prโ ฯ , transport A p (prโ ฯ) โก prโ ฯ)
โ ฯ โก ฯ
to-ฮฃ-โก (refl x , refl a) = refl (x , a)
from-ฮฃ-โก : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {ฯ ฯ : ฮฃ A}
โ ฯ โก ฯ
โ ฮฃ p ๊ prโ ฯ โก prโ ฯ , transport A p (prโ ฯ) โก prโ ฯ
from-ฮฃ-โก (refl (x , a)) = (refl x , refl a)
to-ฮฃ-โก-again : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {(x , a) (y , b) : ฮฃ A}
โ ฮฃ p ๊ x โก y , transport A p a โก b
โ (x , a) โก (y , b)
to-ฮฃ-โก-again (refl x , refl a) = refl (x , a)
from-ฮฃ-โก-again : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {(x , a) (y , b) : ฮฃ A}
โ (x , a) โก (y , b)
โ ฮฃ p ๊ x โก y , transport A p a โก b
from-ฮฃ-โก-again (refl (x , a)) = (refl x , refl a)
to-ฮฃ-โก' : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {x : X} {a a' : A x}
โ a โก a' โ Id (ฮฃ A) (x , a) (x , a')
to-ฮฃ-โก' {๐ค} {๐ฅ} {X} {A} {x} = ap (ฮป - โ (x , -))
transport-ร : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) (B : X โ ๐ฆ ฬ )
{x y : X} (p : x โก y) {(a , b) : A x ร B x}
โ transport (ฮป x โ A x ร B x) p (a , b)
โก (transport A p a , transport B p b)
transport-ร A B (refl _) = refl _
transportd : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) (B : (x : X) โ A x โ ๐ฆ ฬ )
{x : X} ((a , b) : ฮฃ a ๊ A x , B x a) {y : X} (p : x โก y)
โ B x a โ B y (transport A p a)
transportd A B (a , b) (refl x) = id
transport-ฮฃ : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) (B : (x : X) โ A x โ ๐ฆ ฬ )
{x : X} {y : X} (p : x โก y) {(a , b) : ฮฃ a ๊ A x , B x a}
โ transport (ฮป - โ ฮฃ (B -)) p (a , b)
โก transport A p a , transportd A B (a , b) p b
transport-ฮฃ A B (refl x) {a , b} = refl (a , b)
_is-of-hlevel_ : ๐ค ฬ โ โ โ ๐ค ฬ
X is-of-hlevel 0 = is-singleton X
X is-of-hlevel (succ n) = (x x' : X) โ ((x โก x') is-of-hlevel n)
wconstant : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ ๐ค โ ๐ฅ ฬ
wconstant f = (x x' : domain f) โ f x โก f x'
wconstant-endomap : ๐ค ฬ โ ๐ค ฬ
wconstant-endomap X = ฮฃ f ๊ (X โ X), wconstant f
wcmap : (X : ๐ค ฬ ) โ wconstant-endomap X โ (X โ X)
wcmap X (f , w) = f
wcmap-constancy : (X : ๐ค ฬ ) (c : wconstant-endomap X)
โ wconstant (wcmap X c)
wcmap-constancy X (f , w) = w
Hedberg : {X : ๐ค ฬ } (x : X)
โ ((y : X) โ wconstant-endomap (x โก y))
โ (y : X) โ is-subsingleton (x โก y)
Hedberg {๐ค} {X} x c y p q =
p โกโจ a y p โฉ
(f x (refl x))โปยน โ f y p โกโจ ap (ฮป - โ (f x (refl x))โปยน โ -) (ฮบ y p q) โฉ
(f x (refl x))โปยน โ f y q โกโจ (a y q)โปยน โฉ
q โ
where
f : (y : X) โ x โก y โ x โก y
f y = wcmap (x โก y) (c y)
ฮบ : (y : X) (p q : x โก y) โ f y p โก f y q
ฮบ y = wcmap-constancy (x โก y) (c y)
a : (y : X) (p : x โก y) โ p โก (f x (refl x))โปยน โ f y p
a x (refl x) = (โปยน-leftโ (f x (refl x)))โปยน
wconstant-โก-endomaps : ๐ค ฬ โ ๐ค ฬ
wconstant-โก-endomaps X = (x y : X) โ wconstant-endomap (x โก y)
sets-have-wconstant-โก-endomaps : (X : ๐ค ฬ ) โ is-set X โ wconstant-โก-endomaps X
sets-have-wconstant-โก-endomaps X s x y = (f , ฮบ)
where
f : x โก y โ x โก y
f p = p
ฮบ : (p q : x โก y) โ f p โก f q
ฮบ p q = s x y p q
types-with-wconstant-โก-endomaps-are-sets : (X : ๐ค ฬ )
โ wconstant-โก-endomaps X โ is-set X
types-with-wconstant-โก-endomaps-are-sets X c x = Hedberg x
(ฮป y โ wcmap (x โก y) (c x y) ,
wcmap-constancy (x โก y) (c x y))
subsingletons-have-wconstant-โก-endomaps : (X : ๐ค ฬ )
โ is-subsingleton X
โ wconstant-โก-endomaps X
subsingletons-have-wconstant-โก-endomaps X s x y = (f , ฮบ)
where
f : x โก y โ x โก y
f p = s x y
ฮบ : (p q : x โก y) โ f p โก f q
ฮบ p q = refl (s x y)
subsingletons-are-sets : (X : ๐ค ฬ ) โ is-subsingleton X โ is-set X
subsingletons-are-sets X s = types-with-wconstant-โก-endomaps-are-sets X
(subsingletons-have-wconstant-โก-endomaps X s)
singletons-are-sets : (X : ๐ค ฬ ) โ is-singleton X โ is-set X
singletons-are-sets X = subsingletons-are-sets X โ singletons-are-subsingletons X
๐-is-set : is-set ๐
๐-is-set = subsingletons-are-sets ๐ ๐-is-subsingleton
๐-is-set : is-set ๐
๐-is-set = subsingletons-are-sets ๐ ๐-is-subsingleton
subsingletons-are-of-hlevel-1 : (X : ๐ค ฬ )
โ is-subsingleton X
โ X is-of-hlevel 1
subsingletons-are-of-hlevel-1 X = g
where
g : ((x y : X) โ x โก y) โ (x y : X) โ is-singleton (x โก y)
g t x y = t x y , subsingletons-are-sets X t x y (t x y)
types-of-hlevel-1-are-subsingletons : (X : ๐ค ฬ )
โ X is-of-hlevel 1
โ is-subsingleton X
types-of-hlevel-1-are-subsingletons X = f
where
f : ((x y : X) โ is-singleton (x โก y)) โ (x y : X) โ x โก y
f s x y = center (x โก y) (s x y)
sets-are-of-hlevel-2 : (X : ๐ค ฬ ) โ is-set X โ X is-of-hlevel 2
sets-are-of-hlevel-2 X = g
where
g : ((x y : X) โ is-subsingleton (x โก y)) โ (x y : X) โ (x โก y) is-of-hlevel 1
g t x y = subsingletons-are-of-hlevel-1 (x โก y) (t x y)
types-of-hlevel-2-are-sets : (X : ๐ค ฬ ) โ X is-of-hlevel 2 โ is-set X
types-of-hlevel-2-are-sets X = f
where
f : ((x y : X) โ (x โก y) is-of-hlevel 1) โ (x y : X) โ is-subsingleton (x โก y)
f s x y = types-of-hlevel-1-are-subsingletons (x โก y) (s x y)
hlevel-upper : (X : ๐ค ฬ ) (n : โ) โ X is-of-hlevel n โ X is-of-hlevel (succ n)
hlevel-upper X zero = ฮณ
where
ฮณ : is-singleton X โ (x y : X) โ is-singleton (x โก y)
ฮณ h x y = p , subsingletons-are-sets X k x y p
where
k : is-subsingleton X
k = singletons-are-subsingletons X h
p : x โก y
p = k x y
hlevel-upper X (succ n) = ฮป h x y โ hlevel-upper (x โก y) n (h x y)
_has-minimal-hlevel_ : ๐ค ฬ โ โ โ ๐ค ฬ
X has-minimal-hlevel 0 = X is-of-hlevel 0
X has-minimal-hlevel (succ n) = (X is-of-hlevel (succ n)) ร ยฌ(X is-of-hlevel n)
_has-minimal-hlevel-โ : ๐ค ฬ โ ๐ค ฬ
X has-minimal-hlevel-โ = (n : โ) โ ยฌ(X is-of-hlevel n)
pointed-types-have-wconstant-endomap : {X : ๐ค ฬ } โ X โ wconstant-endomap X
pointed-types-have-wconstant-endomap x = ((ฮป y โ x) , (ฮป y y' โ refl x))
empty-types-have-wconstant-endomap : {X : ๐ค ฬ } โ is-empty X โ wconstant-endomap X
empty-types-have-wconstant-endomap e = (id , (ฮป x x' โ !๐ (x โก x') (e x)))
decidable-has-wconstant-endomap : {X : ๐ค ฬ } โ decidable X โ wconstant-endomap X
decidable-has-wconstant-endomap (inl x) = pointed-types-have-wconstant-endomap x
decidable-has-wconstant-endomap (inr e) = empty-types-have-wconstant-endomap e
hedberg-lemma : {X : ๐ค ฬ } โ has-decidable-equality X โ wconstant-โก-endomaps X
hedberg-lemma {๐ค} {X} d x y = decidable-has-wconstant-endomap (d x y)
hedberg : {X : ๐ค ฬ } โ has-decidable-equality X โ is-set X
hedberg {๐ค} {X} d = types-with-wconstant-โก-endomaps-are-sets X (hedberg-lemma d)
โ-is-set : is-set โ
โ-is-set = hedberg โ-has-decidable-equality
๐-is-set : is-set ๐
๐-is-set = hedberg ๐-has-decidable-equality
has-section : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ ๐ค โ ๐ฅ ฬ
has-section r = ฮฃ s ๊ (codomain r โ domain r), r โ s โผ id
_โ_ : ๐ค ฬ โ ๐ฅ ฬ โ ๐ค โ ๐ฅ ฬ
X โ Y = ฮฃ r ๊ (Y โ X), has-section r
retraction : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ X โ Y โ Y โ X
retraction (r , s , ฮท) = r
section : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ X โ Y โ X โ Y
section (r , s , ฮท) = s
retract-equation : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (ฯ : X โ Y)
โ retraction ฯ โ section ฯ โผ ๐๐ X
retract-equation (r , s , ฮท) = ฮท
retraction-has-section : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (ฯ : X โ Y)
โ has-section (retraction ฯ)
retraction-has-section (r , h) = h
id-โ : (X : ๐ค ฬ ) โ X โ X
id-โ X = ๐๐ X , ๐๐ X , refl
_โโ_ : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {Z : ๐ฆ ฬ } โ X โ Y โ Y โ Z โ X โ Z
(r , s , ฮท) โโ (r' , s' , ฮท') = (r โ r' , s' โ s , ฮท'')
where
ฮท'' = ฮป x โ r (r' (s' (s x))) โกโจ ap r (ฮท' (s x)) โฉ
r (s x) โกโจ ฮท x โฉ
x โ
_โโจ_โฉ_ : (X : ๐ค ฬ ) {Y : ๐ฅ ฬ } {Z : ๐ฆ ฬ } โ X โ Y โ Y โ Z โ X โ Z
X โโจ ฯ โฉ ฯ = ฯ โโ ฯ
_โ : (X : ๐ค ฬ ) โ X โ X
X โ = id-โ X
ฮฃ-retract : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {B : X โ ๐ฆ ฬ }
โ ((x : X) โ A x โ B x) โ ฮฃ A โ ฮฃ B
ฮฃ-retract {๐ค} {๐ฅ} {๐ฆ} {X} {A} {B} ฯ = Natฮฃ r , Natฮฃ s , ฮท'
where
r : (x : X) โ B x โ A x
r x = retraction (ฯ x)
s : (x : X) โ A x โ B x
s x = section (ฯ x)
ฮท : (x : X) (a : A x) โ r x (s x a) โก a
ฮท x = retract-equation (ฯ x)
ฮท' : (ฯ : ฮฃ A) โ Natฮฃ r (Natฮฃ s ฯ) โก ฯ
ฮท' (x , a) = x , r x (s x a) โกโจ to-ฮฃ-โก' (ฮท x a) โฉ
x , a โ
transport-is-retraction : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) {x y : X} (p : x โก y)
โ transport A p โ transport A (p โปยน) โผ ๐๐ (A y)
transport-is-retraction A (refl x) = refl
transport-is-section : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) {x y : X} (p : x โก y)
โ transport A (p โปยน) โ transport A p โผ ๐๐ (A x)
transport-is-section A (refl x) = refl
ฮฃ-reindexing-retract : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {A : X โ ๐ฆ ฬ } (r : Y โ X)
โ has-section r
โ (ฮฃ x ๊ X , A x) โ (ฮฃ y ๊ Y , A (r y))
ฮฃ-reindexing-retract {๐ค} {๐ฅ} {๐ฆ} {X} {Y} {A} r (s , ฮท) = ฮณ , ฯ , ฮณฯ
where
ฮณ : ฮฃ (A โ r) โ ฮฃ A
ฮณ (y , a) = (r y , a)
ฯ : ฮฃ A โ ฮฃ (A โ r)
ฯ (x , a) = (s x , transport A ((ฮท x)โปยน) a)
ฮณฯ : (ฯ : ฮฃ A) โ ฮณ (ฯ ฯ) โก ฯ
ฮณฯ (x , a) = p
where
p : (r (s x) , transport A ((ฮท x)โปยน) a) โก (x , a)
p = to-ฮฃ-โก (ฮท x , transport-is-retraction A (ฮท x) a)
singleton-type : {X : ๐ค ฬ } โ X โ ๐ค ฬ
singleton-type {๐ค} {X} x = ฮฃ y ๊ X , y โก x
singleton-type-center : {X : ๐ค ฬ } (x : X) โ singleton-type x
singleton-type-center x = (x , refl x)
singleton-type-centered : {X : ๐ค ฬ } (x : X) (ฯ : singleton-type x)
โ singleton-type-center x โก ฯ
singleton-type-centered x (x , refl x) = refl (x , refl x)
singleton-types-are-singletons : (X : ๐ค ฬ ) (x : X)
โ is-singleton (singleton-type x)
singleton-types-are-singletons X x = singleton-type-center x ,
singleton-type-centered x
retract-of-singleton : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ Y โ X โ is-singleton X โ is-singleton Y
retract-of-singleton (r , s , ฮท) (c , ฯ) = r c , ฮณ
where
ฮณ = ฮป y โ r c โกโจ ap r (ฯ (s y)) โฉ
r (s y) โกโจ ฮท y โฉ
y โ
singleton-type' : {X : ๐ค ฬ } โ X โ ๐ค ฬ
singleton-type' {๐ค} {X} x = ฮฃ y ๊ X , x โก y
singleton-type'-center : {X : ๐ค ฬ } (x : X) โ singleton-type' x
singleton-type'-center x = (x , refl x)
singleton-type'-centered : {X : ๐ค ฬ } (x : X) (ฯ : singleton-type' x)
โ singleton-type'-center x โก ฯ
singleton-type'-centered x (x , refl x) = refl (x , refl x)
singleton-types'-are-singletons : (X : ๐ค ฬ ) (x : X)
โ is-singleton (singleton-type' x)
singleton-types'-are-singletons X x = singleton-type'-center x ,
singleton-type'-centered x
invertible : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ ๐ค โ ๐ฅ ฬ
invertible f = ฮฃ g ๊ (codomain f โ domain f) , (g โ f โผ id) ร (f โ g โผ id)
fiber : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y) โ Y โ ๐ค โ ๐ฅ ฬ
fiber f y = ฮฃ x ๊ domain f , f x โก y
fiber-point : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {f : X โ Y} {y : Y}
โ fiber f y โ X
fiber-point (x , p) = x
fiber-identification : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {f : X โ Y} {y : Y}
โ (w : fiber f y) โ f (fiber-point w) โก y
fiber-identification (x , p) = p
is-equiv : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ ๐ค โ ๐ฅ ฬ
is-equiv f = (y : codomain f) โ is-singleton (fiber f y)
inverse : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y) โ is-equiv f โ (Y โ X)
inverse f e y = fiber-point (center (fiber f y) (e y))
inverses-are-sections : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y) (e : is-equiv f)
โ f โ inverse f e โผ id
inverses-are-sections f e y = fiber-identification (center (fiber f y) (e y))
inverse-centrality : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
(f : X โ Y) (e : is-equiv f) (y : Y) (t : fiber f y)
โ (inverse f e y , inverses-are-sections f e y) โก t
inverse-centrality f e y = centrality (fiber f y) (e y)
inverses-are-retractions : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y) (e : is-equiv f)
โ inverse f e โ f โผ id
inverses-are-retractions f e x = ap fiber-point p
where
p : inverse f e (f x) , inverses-are-sections f e (f x) โก x , refl (f x)
p = inverse-centrality f e (f x) (x , (refl (f x)))
equivs-are-invertible : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-equiv f โ invertible f
equivs-are-invertible f e = inverse f e ,
inverses-are-retractions f e ,
inverses-are-sections f e
invertibles-are-equivs : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ invertible f โ is-equiv f
invertibles-are-equivs {๐ค} {๐ฅ} {X} {Y} f (g , ฮท , ฮต) yโ = iii
where
i : (y : Y) โ (f (g y) โก yโ) โ (y โก yโ)
i y = r , s , transport-is-section (_โก yโ) (ฮต y)
where
s : f (g y) โก yโ โ y โก yโ
s = transport (_โก yโ) (ฮต y)
r : y โก yโ โ f (g y) โก yโ
r = transport (_โก yโ) ((ฮต y)โปยน)
ii : fiber f yโ โ singleton-type yโ
ii = (ฮฃ x ๊ X , f x โก yโ) โโจ ฮฃ-reindexing-retract g (f , ฮท) โฉ
(ฮฃ y ๊ Y , f (g y) โก yโ) โโจ ฮฃ-retract i โฉ
(ฮฃ y ๊ Y , y โก yโ) โ
iii : is-singleton (fiber f yโ)
iii = retract-of-singleton ii (singleton-types-are-singletons Y yโ)
inverses-are-equivs : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y) (e : is-equiv f)
โ is-equiv (inverse f e)
inverses-are-equivs f e = invertibles-are-equivs
(inverse f e)
(f , inverses-are-sections f e , inverses-are-retractions f e)
inversion-involutive : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y) (e : is-equiv f)
โ inverse (inverse f e) (inverses-are-equivs f e) โก f
inversion-involutive f e = refl f
id-invertible : (X : ๐ค ฬ ) โ invertible (๐๐ X)
id-invertible X = ๐๐ X , refl , refl
โ-invertible : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {Z : ๐ฆ ฬ } {f : X โ Y} {f' : Y โ Z}
โ invertible f' โ invertible f โ invertible (f' โ f)
โ-invertible {๐ค} {๐ฅ} {๐ฆ} {X} {Y} {Z} {f} {f'} (g' , gf' , fg') (g , gf , fg) =
g โ g' , ฮท , ฮต
where
ฮท = ฮป x โ g (g' (f' (f x))) โกโจ ap g (gf' (f x)) โฉ
g (f x) โกโจ gf x โฉ
x โ
ฮต = ฮป z โ f' (f (g (g' z))) โกโจ ap f' (fg (g' z)) โฉ
f' (g' z) โกโจ fg' z โฉ
z โ
id-is-equiv : (X : ๐ค ฬ ) โ is-equiv (๐๐ X)
id-is-equiv = singleton-types-are-singletons
โ-is-equiv : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {Z : ๐ฆ ฬ } {f : X โ Y} {g : Y โ Z}
โ is-equiv g โ is-equiv f โ is-equiv (g โ f)
โ-is-equiv {๐ค} {๐ฅ} {๐ฆ} {X} {Y} {Z} {f} {g} i j = ฮณ
where
abstract
ฮณ : is-equiv (g โ f)
ฮณ = invertibles-are-equivs (g โ f)
(โ-invertible (equivs-are-invertible g i)
(equivs-are-invertible f j))
inverse-of-โ : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {Z : ๐ฆ ฬ }
(f : X โ Y) (g : Y โ Z)
(i : is-equiv f) (j : is-equiv g)
โ inverse f i โ inverse g j โผ inverse (g โ f) (โ-is-equiv j i)
inverse-of-โ f g i j z =
f' (g' z) โกโจ (ap (f' โ g') (s z))โปยน โฉ
f' (g' (g (f (h z)))) โกโจ ap f' (inverses-are-retractions g j (f (h z))) โฉ
f' (f (h z)) โกโจ inverses-are-retractions f i (h z) โฉ
h z โ
where
f' = inverse f i
g' = inverse g j
h = inverse (g โ f) (โ-is-equiv j i)
s : g โ f โ h โผ id
s = inverses-are-sections (g โ f) (โ-is-equiv j i)
_โ_ : ๐ค ฬ โ ๐ฅ ฬ โ ๐ค โ ๐ฅ ฬ
X โ Y = ฮฃ f ๊ (X โ Y), is-equiv f
Eqโfun โ_โ : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ X โ Y โ X โ Y
Eqโfun (f , i) = f
โ_โ = Eqโfun
Eqโfun-is-equiv โโ-is-equiv : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (e : X โ Y) โ is-equiv (โ e โ)
Eqโfun-is-equiv (f , i) = i
โโ-is-equiv = Eqโfun-is-equiv
invertibility-gives-โ : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ invertible f โ X โ Y
invertibility-gives-โ f i = f , invertibles-are-equivs f i
ฮฃ-induction-โ : {X : ๐ค ฬ } {Y : X โ ๐ฅ ฬ } {A : ฮฃ Y โ ๐ฆ ฬ }
โ ((x : X) (y : Y x) โ A (x , y)) โ ((z : ฮฃ Y) โ A z)
ฮฃ-induction-โ = invertibility-gives-โ ฮฃ-induction (curry , refl , refl)
ฮฃ-flip : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {A : X โ Y โ ๐ฆ ฬ }
โ (ฮฃ x ๊ X , ฮฃ y ๊ Y , A x y) โ (ฮฃ y ๊ Y , ฮฃ x ๊ X , A x y)
ฮฃ-flip = invertibility-gives-โ
(ฮป (x , y , p) โ (y , x , p))
((ฮป (y , x , p) โ (x , y , p)) , refl , refl)
ร-comm : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ (X ร Y) โ (Y ร X)
ร-comm = invertibility-gives-โ
(ฮป (x , y) โ (y , x))
((ฮป (y , x) โ (x , y)) , refl , refl)
id-โ : (X : ๐ค ฬ ) โ X โ X
id-โ X = ๐๐ X , id-is-equiv X
_โ_ : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {Z : ๐ฆ ฬ } โ X โ Y โ Y โ Z โ X โ Z
(f , d) โ (f' , e) = f' โ f , โ-is-equiv e d
โ-sym : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ X โ Y โ Y โ X
โ-sym (f , e) = inverse f e , inverses-are-equivs f e
_โโจ_โฉ_ : (X : ๐ค ฬ ) {Y : ๐ฅ ฬ } {Z : ๐ฆ ฬ } โ X โ Y โ Y โ Z โ X โ Z
_ โโจ d โฉ e = d โ e
_โ : (X : ๐ค ฬ ) โ X โ X
_โ = id-โ
transport-is-equiv : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) {x y : X} (p : x โก y)
โ is-equiv (transport A p)
transport-is-equiv A (refl x) = id-is-equiv (A x)
ฮฃ-โก-โ : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } (ฯ ฯ : ฮฃ A)
โ (ฯ โก ฯ) โ (ฮฃ p ๊ prโ ฯ โก prโ ฯ , transport A p (prโ ฯ) โก prโ ฯ)
ฮฃ-โก-โ {๐ค} {๐ฅ} {X} {A} ฯ ฯ = invertibility-gives-โ from-ฮฃ-โก (to-ฮฃ-โก , ฮท , ฮต)
where
ฮท : (q : ฯ โก ฯ) โ to-ฮฃ-โก (from-ฮฃ-โก q) โก q
ฮท (refl ฯ) = refl (refl ฯ)
ฮต : (w : ฮฃ p ๊ prโ ฯ โก prโ ฯ , transport A p (prโ ฯ) โก prโ ฯ)
โ from-ฮฃ-โก (to-ฮฃ-โก w) โก w
ฮต (refl p , refl q) = refl (refl p , refl q)
to-ร-โก : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {z t : X ร Y}
โ (prโ z โก prโ t) ร (prโ z โก prโ t) โ z โก t
to-ร-โก (refl x , refl y) = refl (x , y)
from-ร-โก : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {z t : X ร Y}
โ z โก t โ (prโ z โก prโ t) ร (prโ z โก prโ t)
from-ร-โก {๐ค} {๐ฅ} {X} {Y} (refl (x , y)) = (refl x , refl y)
ร-โก-โ : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (z t : X ร Y)
โ (z โก t) โ (prโ z โก prโ t) ร (prโ z โก prโ t)
ร-โก-โ {๐ค} {๐ฅ} {X} {Y} z t = invertibility-gives-โ from-ร-โก (to-ร-โก , ฮท , ฮต)
where
ฮท : (p : z โก t) โ to-ร-โก (from-ร-โก p) โก p
ฮท (refl z) = refl (refl z)
ฮต : (q : (prโ z โก prโ t) ร (prโ z โก prโ t)) โ from-ร-โก (to-ร-โก q) โก q
ฮต (refl x , refl y) = refl (refl x , refl y)
ap-prโ-to-ร-โก : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {z t : X ร Y}
โ (pโ : prโ z โก prโ t)
โ (pโ : prโ z โก prโ t)
โ ap prโ (to-ร-โก (pโ , pโ)) โก pโ
ap-prโ-to-ร-โก (refl x) (refl y) = refl (refl x)
ap-prโ-to-ร-โก : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {z t : X ร Y}
โ (pโ : prโ z โก prโ t)
โ (pโ : prโ z โก prโ t)
โ ap prโ (to-ร-โก (pโ , pโ)) โก pโ
ap-prโ-to-ร-โก (refl x) (refl y) = refl (refl y)
ฮฃ-cong : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {B : X โ ๐ฆ ฬ }
โ ((x : X) โ A x โ B x) โ ฮฃ A โ ฮฃ B
ฮฃ-cong {๐ค} {๐ฅ} {๐ฆ} {X} {A} {B} ฯ =
invertibility-gives-โ (Natฮฃ f) (Natฮฃ g , Natฮฃ-ฮท , Natฮฃ-ฮต)
where
f : (x : X) โ A x โ B x
f x = โ ฯ x โ
g : (x : X) โ B x โ A x
g x = inverse (f x) (โโ-is-equiv (ฯ x))
ฮท : (x : X) (a : A x) โ g x (f x a) โก a
ฮท x = inverses-are-retractions (f x) (โโ-is-equiv (ฯ x))
ฮต : (x : X) (b : B x) โ f x (g x b) โก b
ฮต x = inverses-are-sections (f x) (โโ-is-equiv (ฯ x))
Natฮฃ-ฮท : (w : ฮฃ A) โ Natฮฃ g (Natฮฃ f w) โก w
Natฮฃ-ฮท (x , a) = x , g x (f x a) โกโจ to-ฮฃ-โก' (ฮท x a) โฉ
x , a โ
Natฮฃ-ฮต : (t : ฮฃ B) โ Natฮฃ f (Natฮฃ g t) โก t
Natฮฃ-ฮต (x , b) = x , f x (g x b) โกโจ to-ฮฃ-โก' (ฮต x b) โฉ
x , b โ
โ-gives-โ : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ X โ Y โ X โ Y
โ-gives-โ (f , e) = (inverse f e , f , inverses-are-retractions f e)
โ-gives-โท : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ X โ Y โ Y โ X
โ-gives-โท (f , e) = (f , inverse f e , inverses-are-sections f e)
equiv-to-singleton : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ X โ Y โ is-singleton Y โ is-singleton X
equiv-to-singleton e = retract-of-singleton (โ-gives-โ e)
IdโEq : (X Y : ๐ค ฬ ) โ X โก Y โ X โ Y
IdโEq X X (refl X) = id-โ X
is-univalent : (๐ค : Universe) โ ๐ค โบ ฬ
is-univalent ๐ค = (X Y : ๐ค ฬ ) โ is-equiv (IdโEq X Y)
univalence-โ : is-univalent ๐ค โ (X Y : ๐ค ฬ ) โ (X โก Y) โ (X โ Y)
univalence-โ ua X Y = IdโEq X Y , ua X Y
EqโId : is-univalent ๐ค โ (X Y : ๐ค ฬ ) โ X โ Y โ X โก Y
EqโId ua X Y = inverse (IdโEq X Y) (ua X Y)
Idโfun : {X Y : ๐ค ฬ } โ X โก Y โ X โ Y
Idโfun {๐ค} {X} {Y} p = โ IdโEq X Y p โ
Idโfuns-agree : {X Y : ๐ค ฬ } (p : X โก Y)
โ Idโfun p โก IdโFun p
Idโfuns-agree (refl X) = refl (๐๐ X)
swapโ : ๐ โ ๐
swapโ โ = โ
swapโ โ = โ
swapโ-involutive : (n : ๐) โ swapโ (swapโ n) โก n
swapโ-involutive โ = refl โ
swapโ-involutive โ = refl โ
swapโ-is-equiv : is-equiv swapโ
swapโ-is-equiv = invertibles-are-equivs
swapโ
(swapโ , swapโ-involutive , swapโ-involutive)
module example-of-a-nonset (ua : is-univalent ๐คโ) where
eโ eโ : ๐ โ ๐
eโ = id-โ ๐
eโ = swapโ , swapโ-is-equiv
eโ-is-not-eโ : eโ โข eโ
eโ-is-not-eโ p = โ-is-not-โ r
where
q : id โก swapโ
q = ap โ_โ p
r : โ โก โ
r = ap (ฮป - โ - โ) q
pโ pโ : ๐ โก ๐
pโ = EqโId ua ๐ ๐ eโ
pโ = EqโId ua ๐ ๐ eโ
pโ-is-not-pโ : pโ โข pโ
pโ-is-not-pโ q = eโ-is-not-eโ r
where
r = eโ โกโจ (inverses-are-sections (IdโEq ๐ ๐) (ua ๐ ๐) eโ)โปยน โฉ
IdโEq ๐ ๐ pโ โกโจ ap (IdโEq ๐ ๐) q โฉ
IdโEq ๐ ๐ pโ โกโจ inverses-are-sections (IdโEq ๐ ๐) (ua ๐ ๐) eโ โฉ
eโ โ
๐คโ-is-not-a-set : ยฌ(is-set (๐คโ ฬ ))
๐คโ-is-not-a-set s = pโ-is-not-pโ q
where
q : pโ โก pโ
q = s ๐ ๐ pโ pโ
subsingleton-criterion : {X : ๐ค ฬ }
โ (X โ is-singleton X)
โ is-subsingleton X
subsingleton-criterion' : {X : ๐ค ฬ }
โ (X โ is-subsingleton X)
โ is-subsingleton X
retract-of-subsingleton : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ Y โ X โ is-subsingleton X โ is-subsingleton Y
left-cancellable : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ ๐ค โ ๐ฅ ฬ
left-cancellable f = {x x' : domain f} โ f x โก f x' โ x โก x'
lc-maps-reflect-subsingletons : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ left-cancellable f
โ is-subsingleton Y
โ is-subsingleton X
has-retraction : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ ๐ค โ ๐ฅ ฬ
has-retraction s = ฮฃ r ๊ (codomain s โ domain s), r โ s โผ id
sections-are-lc : {X : ๐ค ฬ } {A : ๐ฅ ฬ } (s : X โ A)
โ has-retraction s โ left-cancellable s
equivs-have-retractions : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-equiv f โ has-retraction f
equivs-have-sections : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-equiv f โ has-section f
equivs-are-lc : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-equiv f โ left-cancellable f
equiv-to-subsingleton : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ X โ Y
โ is-subsingleton Y
โ is-subsingleton X
comp-inverses : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {Z : ๐ฆ ฬ }
(f : X โ Y) (g : Y โ Z)
(i : is-equiv f) (j : is-equiv g)
(f' : Y โ X) (g' : Z โ Y)
โ f' โผ inverse f i
โ g' โผ inverse g j
โ f' โ g' โผ inverse (g โ f) (โ-is-equiv j i)
equiv-to-set : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ X โ Y
โ is-set Y
โ is-set X
sections-closed-under-โผ : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f g : X โ Y)
โ has-retraction f
โ g โผ f
โ has-retraction g
retractions-closed-under-โผ : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f g : X โ Y)
โ has-section f
โ g โผ f
โ has-section g
is-joyal-equiv : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ ๐ค โ ๐ฅ ฬ
is-joyal-equiv f = has-section f ร has-retraction f
one-inverse : (X : ๐ค ฬ ) (Y : ๐ฅ ฬ )
(f : X โ Y) (r s : Y โ X)
โ (r โ f โผ id)
โ (f โ s โผ id)
โ r โผ s
joyal-equivs-are-invertible : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-joyal-equiv f โ invertible f
joyal-equivs-are-equivs : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-joyal-equiv f โ is-equiv f
invertibles-are-joyal-equivs : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ invertible f โ is-joyal-equiv f
equivs-are-joyal-equivs : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-equiv f โ is-joyal-equiv f
equivs-closed-under-โผ : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {f g : X โ Y}
โ is-equiv f
โ g โผ f
โ is-equiv g
equiv-to-singleton' : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ X โ Y โ is-singleton X โ is-singleton Y
subtypes-of-sets-are-sets : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (m : X โ Y)
โ left-cancellable m โ is-set Y โ is-set X
prโ-lc : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ }
โ ((x : X) โ is-subsingleton (A x))
โ left-cancellable (ฮป (t : ฮฃ A) โ prโ t)
subsets-of-sets-are-sets : (X : ๐ค ฬ ) (A : X โ ๐ฅ ฬ )
โ is-set X
โ ((x : X) โ is-subsingleton (A x))
โ is-set (ฮฃ x ๊ X , A x)
to-subtype-โก : {X : ๐ฆ ฬ } {A : X โ ๐ฅ ฬ }
{x y : X} {a : A x} {b : A y}
โ ((x : X) โ is-subsingleton (A x))
โ x โก y
โ (x , a) โก (y , b)
prโ-is-equiv : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ }
โ ((x : X) โ is-singleton (A x))
โ is-equiv (ฮป (t : ฮฃ A) โ prโ t)
prโ-โ : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ }
โ ((x : X) โ is-singleton (A x))
โ ฮฃ A โ X
prโ-โ i = prโ , prโ-is-equiv i
ฮ ฮฃ-distr-โ : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {P : (x : X) โ A x โ ๐ฆ ฬ }
โ (ฮ x ๊ X , ฮฃ a ๊ A x , P x a)
โ (ฮฃ f ๊ ฮ A , ฮ x ๊ X , P x (f x))
ฮฃ-assoc : {X : ๐ค ฬ } {Y : X โ ๐ฅ ฬ } {Z : ฮฃ Y โ ๐ฆ ฬ }
โ ฮฃ Z โ (ฮฃ x ๊ X , ฮฃ y ๊ Y x , Z (x , y))
โปยน-โ : {X : ๐ค ฬ } (x y : X) โ (x โก y) โ (y โก x)
singleton-types-โ : {X : ๐ค ฬ } (x : X) โ singleton-type' x โ singleton-type x
singletons-โ : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ is-singleton X โ is-singleton Y โ X โ Y
maps-of-singletons-are-equivs : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-singleton X โ is-singleton Y โ is-equiv f
logically-equivalent-subsingletons-are-equivalent : (X : ๐ค ฬ ) (Y : ๐ฅ ฬ )
โ is-subsingleton X
โ is-subsingleton Y
โ X โ Y
โ X โ Y
singletons-are-equivalent : (X : ๐ค ฬ ) (Y : ๐ฅ ฬ )
โ is-singleton X
โ is-singleton Y
โ X โ Y
Natฮฃ-fiber-equiv : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) (B : X โ ๐ฆ ฬ ) (ฯ : Nat A B)
(x : X) (b : B x)
โ fiber (ฯ x) b โ fiber (Natฮฃ ฯ) (x , b)
Natฮฃ-equiv-gives-fiberwise-equiv : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {B : X โ ๐ฆ ฬ }
(ฯ : Nat A B)
โ is-equiv (Natฮฃ ฯ)
โ ((x : X) โ is-equiv (ฯ x))
ฮฃ-is-subsingleton : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ }
โ is-subsingleton X
โ ((x : X) โ is-subsingleton (A x))
โ is-subsingleton (ฮฃ A)
ร-is-singleton : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ is-singleton X
โ is-singleton Y
โ is-singleton (X ร Y)
ร-is-subsingleton : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ is-subsingleton X
โ is-subsingleton Y
โ is-subsingleton (X ร Y)
ร-is-subsingleton' : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ ((Y โ is-subsingleton X) ร (X โ is-subsingleton Y))
โ is-subsingleton (X ร Y)
ร-is-subsingleton'-back : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ is-subsingleton (X ร Y)
โ (Y โ is-subsingleton X) ร (X โ is-subsingleton Y)
apโ : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {Z : ๐ฆ ฬ } (f : X โ Y โ Z) {x x' : X} {y y' : Y}
โ x โก x' โ y โก y' โ f x y โก f x' y'
subsingleton-criterion = sol
where
sol : {X : ๐ค ฬ } โ (X โ is-singleton X) โ is-subsingleton X
sol f x = singletons-are-subsingletons (domain f) (f x) x
subsingleton-criterion' = sol
where
sol : {X : ๐ค ฬ } โ (X โ is-subsingleton X) โ is-subsingleton X
sol f x y = f x x y
retract-of-subsingleton = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ Y โ X โ is-subsingleton X โ is-subsingleton Y
sol (r , s , ฮท) i = subsingleton-criterion
(ฮป x โ retract-of-singleton (r , s , ฮท)
(pointed-subsingletons-are-singletons
(codomain s) (s x) i))
lc-maps-reflect-subsingletons = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ left-cancellable f โ is-subsingleton Y โ is-subsingleton X
sol f l s x x' = l (s (f x) (f x'))
sections-are-lc = sol
where
sol : {X : ๐ค ฬ } {A : ๐ฅ ฬ } (s : X โ A)
โ has-retraction s โ left-cancellable s
sol s (r , ฮต) {x} {y} p = x โกโจ (ฮต x)โปยน โฉ
r (s x) โกโจ ap r p โฉ
r (s y) โกโจ ฮต y โฉ
y โ
equivs-have-retractions = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y) โ is-equiv f โ has-retraction f
sol f e = (inverse f e , inverses-are-retractions f e)
equivs-have-sections = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y) โ is-equiv f โ has-section f
sol f e = (inverse f e , inverses-are-sections f e)
equivs-are-lc = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y) โ is-equiv f โ left-cancellable f
sol f e = sections-are-lc f (equivs-have-retractions f e)
equiv-to-subsingleton = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ X โ Y โ is-subsingleton Y โ is-subsingleton X
sol (f , i) = lc-maps-reflect-subsingletons f (equivs-are-lc f i)
comp-inverses = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {Z : ๐ฆ ฬ }
(f : X โ Y) (g : Y โ Z)
(i : is-equiv f) (j : is-equiv g)
(f' : Y โ X) (g' : Z โ Y)
โ f' โผ inverse f i
โ g' โผ inverse g j
โ f' โ g' โผ inverse (g โ f) (โ-is-equiv j i)
sol f g i j f' g' h k z =
f' (g' z) โกโจ h (g' z) โฉ
inverse f i (g' z) โกโจ ap (inverse f i) (k z) โฉ
inverse f i (inverse g j z) โกโจ inverse-of-โ f g i j z โฉ
inverse (g โ f) (โ-is-equiv j i) z โ
equiv-to-set = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ X โ Y โ is-set Y โ is-set X
sol e = subtypes-of-sets-are-sets โ e โ (equivs-are-lc โ e โ (โโ-is-equiv e))
sections-closed-under-โผ = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f g : X โ Y)
โ has-retraction f โ g โผ f โ has-retraction g
sol f g (r , rf) h = (r ,
ฮป x โ r (g x) โกโจ ap r (h x) โฉ
r (f x) โกโจ rf x โฉ
x โ)
retractions-closed-under-โผ = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f g : X โ Y)
โ has-section f โ g โผ f โ has-section g
sol f g (s , fs) h = (s ,
ฮป y โ g (s y) โกโจ h (s y) โฉ
f (s y) โกโจ fs y โฉ
y โ)
one-inverse = sol
where
sol : (X : ๐ค ฬ ) (Y : ๐ฅ ฬ )
(f : X โ Y) (r s : Y โ X)
โ (r โ f โผ id)
โ (f โ s โผ id)
โ r โผ s
sol X Y f r s h k y = r y โกโจ ap r ((k y)โปยน) โฉ
r (f (s y)) โกโจ h (s y) โฉ
s y โ
joyal-equivs-are-invertible = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-joyal-equiv f โ invertible f
sol f ((s , ฮต) , (r , ฮท)) = (s , sf , ฮต)
where
sf = ฮป (x : domain f) โ s(f x) โกโจ (ฮท (s (f x)))โปยน โฉ
r(f(s(f x))) โกโจ ap r (ฮต (f x)) โฉ
r(f x) โกโจ ฮท x โฉ
x โ
joyal-equivs-are-equivs = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-joyal-equiv f โ is-equiv f
sol f j = invertibles-are-equivs f (joyal-equivs-are-invertible f j)
invertibles-are-joyal-equivs = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ invertible f โ is-joyal-equiv f
sol f (g , ฮท , ฮต) = ((g , ฮต) , (g , ฮท))
equivs-are-joyal-equivs = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-equiv f โ is-joyal-equiv f
sol f e = invertibles-are-joyal-equivs f (equivs-are-invertible f e)
equivs-closed-under-โผ = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {f g : X โ Y}
โ is-equiv f โ g โผ f โ is-equiv g
sol {๐ค} {๐ฅ} {X} {Y} {f} {g} e h = joyal-equivs-are-equivs g
(retractions-closed-under-โผ f g
(equivs-have-sections f e) h ,
sections-closed-under-โผ f g
(equivs-have-retractions f e) h)
equiv-to-singleton' = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ X โ Y โ is-singleton X โ is-singleton Y
sol e = retract-of-singleton (โ-gives-โท e)
subtypes-of-sets-are-sets = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (m : X โ Y)
โ left-cancellable m โ is-set Y โ is-set X
sol {๐ค} {๐ฅ} {X} m i h = types-with-wconstant-โก-endomaps-are-sets X c
where
f : (x x' : X) โ x โก x' โ x โก x'
f x x' r = i (ap m r)
ฮบ : (x x' : X) (r s : x โก x') โ f x x' r โก f x x' s
ฮบ x x' r s = ap i (h (m x) (m x') (ap m r) (ap m s))
c : wconstant-โก-endomaps X
c x x' = f x x' , ฮบ x x'
prโ-lc = sol
where
sol : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ }
โ ((x : X) โ is-subsingleton (A x))
โ left-cancellable (ฮป (t : ฮฃ A) โ prโ t)
sol i p = to-ฮฃ-โก (p , i _ _ _)
subsets-of-sets-are-sets = sol
where
sol : (X : ๐ค ฬ ) (A : X โ ๐ฅ ฬ )
โ is-set X
โ ((x : X) โ is-subsingleton (A x))
โ is-set (ฮฃ x ๊ X , A x)
sol X A h p = subtypes-of-sets-are-sets prโ (prโ-lc p) h
to-subtype-โก = sol
where
sol : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ }
{x y : X} {a : A x} {b : A y}
โ ((x : X) โ is-subsingleton (A x))
โ x โก y
โ (x , a) โก (y , b)
sol {๐ค} {๐ฅ} {X} {A} {x} {y} {a} {b} s p = to-ฮฃ-โก (p , s y (transport A p a) b)
prโ-is-equiv = sol
where
sol : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ }
โ ((x : X) โ is-singleton (A x))
โ is-equiv (ฮป (t : ฮฃ A) โ prโ t)
sol {๐ค} {๐ฅ} {X} {A} s = invertibles-are-equivs prโ (g , ฮท , ฮต)
where
g : X โ ฮฃ A
g x = x , prโ(s x)
ฮต : (x : X) โ prโ (g x) โก x
ฮต x = refl (prโ (g x))
ฮท : (ฯ : ฮฃ A) โ g (prโ ฯ) โก ฯ
ฮท (x , a) = to-subtype-โก (ฮป x โ singletons-are-subsingletons (A x) (s x)) (ฮต x)
ฮ ฮฃ-distr-โ = sol
where
sol : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {P : (x : X) โ A x โ ๐ฆ ฬ }
โ (ฮ x ๊ X , ฮฃ a ๊ A x , P x a)
โ (ฮฃ f ๊ ฮ A , ฮ x ๊ X , P x (f x))
sol {๐ค} {๐ฅ} {๐ฆ} {X} {A} {P} = invertibility-gives-โ ฯ (ฮณ , ฮท , ฮต)
where
ฯ : (ฮ x ๊ X , ฮฃ a ๊ A x , P x a)
โ ฮฃ f ๊ ฮ A , ฮ x ๊ X , P x (f x)
ฯ g = ((ฮป x โ prโ (g x)) , ฮป x โ prโ (g x))
ฮณ : (ฮฃ f ๊ ฮ A , ฮ x ๊ X , P x (f x))
โ ฮ x ๊ X , ฮฃ a ๊ A x , P x a
ฮณ (f , ฯ) x = f x , ฯ x
ฮท : ฮณ โ ฯ โผ id
ฮท = refl
ฮต : ฯ โ ฮณ โผ id
ฮต = refl
ฮฃ-assoc = sol
where
sol : {X : ๐ค ฬ } {Y : X โ ๐ฅ ฬ } {Z : ฮฃ Y โ ๐ฆ ฬ }
โ ฮฃ Z โ (ฮฃ x ๊ X , ฮฃ y ๊ Y x , Z (x , y))
sol {๐ค} {๐ฅ} {๐ฆ} {X} {Y} {Z} = invertibility-gives-โ f (g , refl , refl)
where
f : ฮฃ Z โ ฮฃ x ๊ X , ฮฃ y ๊ Y x , Z (x , y)
f ((x , y) , z) = (x , (y , z))
g : (ฮฃ x ๊ X , ฮฃ y ๊ Y x , Z (x , y)) โ ฮฃ Z
g (x , (y , z)) = ((x , y) , z)
โปยน-is-equiv : {X : ๐ค ฬ } (x y : X)
โ is-equiv (ฮป (p : x โก y) โ p โปยน)
โปยน-is-equiv x y = invertibles-are-equivs _โปยน
(_โปยน , โปยน-involutive , โปยน-involutive)
โปยน-โ = sol
where
sol : {X : ๐ค ฬ } (x y : X) โ (x โก y) โ (y โก x)
sol x y = (_โปยน , โปยน-is-equiv x y)
singleton-types-โ = sol
where
sol : {X : ๐ค ฬ } (x : X) โ singleton-type' x โ singleton-type x
sol x = ฮฃ-cong (ฮป y โ โปยน-โ x y)
singletons-โ = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ is-singleton X โ is-singleton Y โ X โ Y
sol {๐ค} {๐ฅ} {X} {Y} i j = invertibility-gives-โ f (g , ฮท , ฮต)
where
f : X โ Y
f x = center Y j
g : Y โ X
g y = center X i
ฮท : (x : X) โ g (f x) โก x
ฮท = centrality X i
ฮต : (y : Y) โ f (g y) โก y
ฮต = centrality Y j
maps-of-singletons-are-equivs = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-singleton X โ is-singleton Y โ is-equiv f
sol {๐ค} {๐ฅ} {X} {Y} f i j = invertibles-are-equivs f (g , ฮท , ฮต)
where
g : Y โ X
g y = center X i
ฮท : (x : X) โ g (f x) โก x
ฮท = centrality X i
ฮต : (y : Y) โ f (g y) โก y
ฮต y = singletons-are-subsingletons Y j (f (g y)) y
logically-equivalent-subsingletons-are-equivalent = sol
where
sol : (X : ๐ค ฬ ) (Y : ๐ฅ ฬ )
โ is-subsingleton X โ is-subsingleton Y โ X โ Y โ X โ Y
sol X Y i j (f , g) = invertibility-gives-โ f
(g ,
(ฮป x โ i (g (f x)) x) ,
(ฮป y โ j (f (g y)) y))
singletons-are-equivalent = sol
where
sol : (X : ๐ค ฬ ) (Y : ๐ฅ ฬ )
โ is-singleton X โ is-singleton Y โ X โ Y
sol X Y i j = invertibility-gives-โ (ฮป _ โ center Y j)
((ฮป _ โ center X i) ,
centrality X i ,
centrality Y j)
Natฮฃ-fiber-equiv = sol
where
sol : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) (B : X โ ๐ฆ ฬ ) (ฯ : Nat A B)
(x : X) (b : B x)
โ fiber (ฯ x) b โ fiber (Natฮฃ ฯ) (x , b)
sol A B ฯ x b = invertibility-gives-โ f (g , ฮต , ฮท)
where
f : fiber (ฯ x) b โ fiber (Natฮฃ ฯ) (x , b)
f (a , refl _) = ((x , a) , refl (x , ฯ x a))
g : fiber (Natฮฃ ฯ) (x , b) โ fiber (ฯ x) b
g ((x , a) , refl _) = (a , refl (ฯ x a))
ฮต : (w : fiber (ฯ x) b) โ g (f w) โก w
ฮต (a , refl _) = refl (a , refl (ฯ x a))
ฮท : (t : fiber (Natฮฃ ฯ) (x , b)) โ f (g t) โก t
ฮท ((x , a) , refl _) = refl ((x , a) , refl (Natฮฃ ฯ (x , a)))
Natฮฃ-equiv-gives-fiberwise-equiv = sol
where
sol : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {B : X โ ๐ฆ ฬ } (ฯ : Nat A B)
โ is-equiv (Natฮฃ ฯ) โ ((x : X) โ is-equiv (ฯ x))
sol {๐ค} {๐ฅ} {๐ฆ} {X} {A} {B} ฯ e x b = ฮณ
where
d : fiber (ฯ x) b โ fiber (Natฮฃ ฯ) (x , b)
d = Natฮฃ-fiber-equiv A B ฯ x b
s : is-singleton (fiber (Natฮฃ ฯ) (x , b))
s = e (x , b)
ฮณ : is-singleton (fiber (ฯ x) b)
ฮณ = equiv-to-singleton d s
ฮฃ-is-subsingleton = sol
where
sol : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ }
โ is-subsingleton X
โ ((x : X) โ is-subsingleton (A x))
โ is-subsingleton (ฮฃ A)
sol i j (x , _) (y , _) = to-subtype-โก j (i x y)
ร-is-singleton = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ is-singleton X
โ is-singleton Y
โ is-singleton (X ร Y)
sol (x , ฯ) (y , ฮณ) = (x , y) , ฮด
where
ฮด : โ z โ (x , y) โก z
ฮด (x' , y' ) = to-ร-โก (ฯ x' , ฮณ y')
ร-is-subsingleton = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ is-subsingleton X โ is-subsingleton Y โ is-subsingleton (X ร Y)
sol i j = ฮฃ-is-subsingleton i (ฮป _ โ j)
ร-is-subsingleton' = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ ((Y โ is-subsingleton X) ร (X โ is-subsingleton Y))
โ is-subsingleton (X ร Y)
sol {๐ค} {๐ฅ} {X} {Y} (i , j) = k
where
k : is-subsingleton (X ร Y)
k (x , y) (x' , y') = to-ร-โก (i y x x' , j x y y')
ร-is-subsingleton'-back = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ is-subsingleton (X ร Y)
โ (Y โ is-subsingleton X) ร (X โ is-subsingleton Y)
sol {๐ค} {๐ฅ} {X} {Y} k = i , j
where
i : Y โ is-subsingleton X
i y x x' = ap prโ (k (x , y) (x' , y))
j : X โ is-subsingleton Y
j x y y' = ap prโ (k (x , y) (x , y'))
apโ = sol
where
sol : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {Z : ๐ฆ ฬ } (f : X โ Y โ Z) {x x' : X} {y y' : Y}
โ x โก x' โ y โก y' โ f x y โก f x' y'
sol f (refl x) (refl y) = refl (f x y)
equiv-singleton-lemma : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } (x : X)
(f : (y : X) โ x โก y โ A y)
โ ((y : X) โ is-equiv (f y))
โ is-singleton (ฮฃ A)
equiv-singleton-lemma {๐ค} {๐ฅ} {X} {A} x f i = ฮณ
where
abstract
e : (y : X) โ (x โก y) โ A y
e y = (f y , i y)
d : singleton-type' x โ ฮฃ A
d = ฮฃ-cong e
ฮณ : is-singleton (ฮฃ A)
ฮณ = equiv-to-singleton (โ-sym d) (singleton-types'-are-singletons X x)
singleton-equiv-lemma : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } (x : X)
(f : (y : X) โ x โก y โ A y)
โ is-singleton (ฮฃ A)
โ (y : X) โ is-equiv (f y)
singleton-equiv-lemma {๐ค} {๐ฅ} {X} {A} x f i = ฮณ
where
abstract
g : singleton-type' x โ ฮฃ A
g = Natฮฃ f
e : is-equiv g
e = maps-of-singletons-are-equivs g (singleton-types'-are-singletons X x) i
ฮณ : (y : X) โ is-equiv (f y)
ฮณ = Natฮฃ-equiv-gives-fiberwise-equiv f e
univalenceโ : is-univalent ๐ค
โ (X : ๐ค ฬ ) โ is-singleton (ฮฃ Y ๊ ๐ค ฬ , X โ Y)
univalenceโ ua X = equiv-singleton-lemma X (IdโEq X) (ua X)
โunivalence : ((X : ๐ค ฬ ) โ is-singleton (ฮฃ Y ๊ ๐ค ฬ , X โ Y))
โ is-univalent ๐ค
โunivalence i X = singleton-equiv-lemma X (IdโEq X) (i X)
univalenceโ : is-univalent ๐ค
โ (X : ๐ค ฬ ) โ is-subsingleton (ฮฃ Y ๊ ๐ค ฬ , X โ Y)
univalenceโ ua X = singletons-are-subsingletons
(ฮฃ (X โ_)) (univalenceโ ua X)
โunivalence : ((X : ๐ค ฬ ) โ is-subsingleton (ฮฃ Y ๊ ๐ค ฬ , X โ Y))
โ is-univalent ๐ค
โunivalence i = โunivalence (ฮป X โ pointed-subsingletons-are-singletons
(ฮฃ (X โ_)) (X , id-โ X) (i X))
๐พ-โ : is-univalent ๐ค
โ (X : ๐ค ฬ ) (A : (ฮฃ Y ๊ ๐ค ฬ , X โ Y) โ ๐ฅ ฬ )
โ A (X , id-โ X) โ (Y : ๐ค ฬ ) (e : X โ Y) โ A (Y , e)
๐พ-โ {๐ค} ua X A a Y e = transport A p a
where
t : ฮฃ Y ๊ ๐ค ฬ , X โ Y
t = (X , id-โ X)
p : t โก (Y , e)
p = univalenceโ {๐ค} ua X t (Y , e)
๐พ-โ-equation : (ua : is-univalent ๐ค)
โ (X : ๐ค ฬ ) (A : (ฮฃ Y ๊ ๐ค ฬ , X โ Y) โ ๐ฅ ฬ ) (a : A (X , id-โ X))
โ ๐พ-โ ua X A a X (id-โ X) โก a
๐พ-โ-equation {๐ค} {๐ฅ} ua X A a =
๐พ-โ ua X A a X (id-โ X) โกโจ refl _ โฉ
transport A p a โกโจ ap (ฮป - โ transport A - a) q โฉ
transport A (refl t) a โกโจ refl _ โฉ
a โ
where
t : ฮฃ Y ๊ ๐ค ฬ , X โ Y
t = (X , id-โ X)
p : t โก t
p = univalenceโ {๐ค} ua X t t
q : p โก refl t
q = subsingletons-are-sets (ฮฃ Y ๊ ๐ค ฬ , X โ Y)
(univalenceโ {๐ค} ua X) t t p (refl t)
โ-โ : is-univalent ๐ค
โ (X : ๐ค ฬ ) (A : (Y : ๐ค ฬ ) โ X โ Y โ ๐ฅ ฬ )
โ A X (id-โ X) โ (Y : ๐ค ฬ ) (e : X โ Y) โ A Y e
โ-โ ua X A = ๐พ-โ ua X (ฮฃ-induction A)
โ-โ-equation : (ua : is-univalent ๐ค)
โ (X : ๐ค ฬ ) (A : (Y : ๐ค ฬ ) โ X โ Y โ ๐ฅ ฬ ) (a : A X (id-โ X))
โ โ-โ ua X A a X (id-โ X) โก a
โ-โ-equation ua X A = ๐พ-โ-equation ua X (ฮฃ-induction A)
๐-โ : is-univalent ๐ค
โ (A : (X Y : ๐ค ฬ ) โ X โ Y โ ๐ฅ ฬ )
โ ((X : ๐ค ฬ ) โ A X X (id-โ X))
โ (X Y : ๐ค ฬ ) (e : X โ Y) โ A X Y e
๐-โ ua A ฯ X = โ-โ ua X (A X) (ฯ X)
๐-โ-equation : (ua : is-univalent ๐ค)
โ (A : (X Y : ๐ค ฬ ) โ X โ Y โ ๐ฅ ฬ )
โ (ฯ : (X : ๐ค ฬ ) โ A X X (id-โ X))
โ (X : ๐ค ฬ ) โ ๐-โ ua A ฯ X X (id-โ X) โก ฯ X
๐-โ-equation ua A ฯ X = โ-โ-equation ua X (A X) (ฯ X)
โ-equiv : is-univalent ๐ค
โ (X : ๐ค ฬ ) (A : (Y : ๐ค ฬ ) โ (X โ Y) โ ๐ฅ ฬ )
โ A X (๐๐ X) โ (Y : ๐ค ฬ ) (f : X โ Y) โ is-equiv f โ A Y f
โ-equiv {๐ค} {๐ฅ} ua X A a Y f i = ฮณ (f , i)
where
B : (Y : ๐ค ฬ ) โ X โ Y โ ๐ฅ ฬ
B Y (f , i) = A Y f
b : B X (id-โ X)
b = a
ฮณ : (e : X โ Y) โ B Y e
ฮณ = โ-โ ua X B b Y
๐-equiv : is-univalent ๐ค
โ (A : (X Y : ๐ค ฬ ) โ (X โ Y) โ ๐ฅ ฬ )
โ ((X : ๐ค ฬ ) โ A X X (๐๐ X))
โ (X Y : ๐ค ฬ ) (f : X โ Y) โ is-equiv f โ A X Y f
๐-equiv ua A ฯ X = โ-equiv ua X (A X) (ฯ X)
๐-invertible : is-univalent ๐ค
โ (A : (X Y : ๐ค ฬ ) โ (X โ Y) โ ๐ฅ ฬ )
โ ((X : ๐ค ฬ ) โ A X X (๐๐ X))
โ (X Y : ๐ค ฬ ) (f : X โ Y) โ invertible f โ A X Y f
๐-invertible ua A ฯ X Y f i = ๐-equiv ua A ฯ X Y f (invertibles-are-equivs f i)
automatic-equiv-functoriality :
(F : ๐ค ฬ โ ๐ค ฬ )
(๐ : {X Y : ๐ค ฬ } โ (X โ Y) โ F X โ F Y)
(๐-id : {X : ๐ค ฬ } โ ๐ (๐๐ X) โก ๐๐ (F X))
{X Y Z : ๐ค ฬ }
(f : X โ Y)
(g : Y โ Z)
โ is-univalent ๐ค
โ is-equiv f + is-equiv g
โ ๐ (g โ f) โก ๐ g โ ๐ f
automatic-equiv-functoriality {๐ค} F ๐ ๐-id {X} {Y} {Z} f g ua = ฮณ
where
ฮณ : is-equiv f + is-equiv g โ ๐ (g โ f) โก ๐ g โ ๐ f
ฮณ (inl i) = โ-equiv ua X A a Y f i g
where
A : (Y : ๐ค ฬ ) โ (X โ Y) โ ๐ค ฬ
A Y f = (g : Y โ Z) โ ๐ (g โ f) โก ๐ g โ ๐ f
a : (g : X โ Z) โ ๐ g โก ๐ g โ ๐ id
a g = ap (๐ g โ_) (๐-id โปยน)
ฮณ (inr j) = โ-equiv ua Y B b Z g j f
where
B : (Z : ๐ค ฬ ) โ (Y โ Z) โ ๐ค ฬ
B Z g = (f : X โ Y) โ ๐ (g โ f) โก ๐ g โ ๐ f
b : (f : X โ Y) โ ๐ f โก ๐ (๐๐ Y) โ ๐ f
b f = ap (_โ ๐ f) (๐-id โปยน)
ฮฃ-change-of-variable' : is-univalent ๐ค
โ {X : ๐ค ฬ } {Y : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) (f : X โ Y)
โ (i : is-equiv f)
โ (ฮฃ x ๊ X , A x) โก (ฮฃ y ๊ Y , A (inverse f i y))
ฮฃ-change-of-variable' {๐ค} {๐ฅ} ua {X} {Y} A f i = โ-โ ua X B b Y (f , i)
where
B : (Y : ๐ค ฬ ) โ X โ Y โ (๐ค โ ๐ฅ)โบ ฬ
B Y (f , i) = ฮฃ A โก (ฮฃ (A โ inverse f i))
b : B X (id-โ X)
b = refl (ฮฃ A)
ฮฃ-change-of-variable'' : is-univalent ๐ค
โ {X : ๐ค ฬ } {Y : ๐ค ฬ } (A : Y โ ๐ฅ ฬ ) (f : X โ Y)
โ is-equiv f
โ (ฮฃ y ๊ Y , A y) โก (ฮฃ x ๊ X , A (f x))
ฮฃ-change-of-variable'' ua A f i = ฮฃ-change-of-variable' ua A
(inverse f i)
(inverses-are-equivs f i)
transport-map-along-โก : {X Y Z : ๐ค ฬ }
(p : X โก Y) (g : X โ Z)
โ transport (ฮป - โ - โ Z) p g
โก g โ Idโfun (p โปยน)
transport-map-along-โก (refl X) = refl
transport-map-along-โ : (ua : is-univalent ๐ค) {X Y Z : ๐ค ฬ }
(e : X โ Y) (g : X โ Z)
โ transport (ฮป - โ - โ Z) (EqโId ua X Y e) g
โก g โ โ โ-sym e โ
transport-map-along-โ {๐ค} ua {X} {Y} {Z} = ๐-โ ua A a X Y
where
A : (X Y : ๐ค ฬ ) โ X โ Y โ ๐ค ฬ
A X Y e = (g : X โ Z) โ transport (ฮป - โ - โ Z) (EqโId ua X Y e) g
โก g โ โ โ-sym e โ
a : (X : ๐ค ฬ ) โ A X X (id-โ X)
a X g = transport (ฮป - โ - โ Z) (EqโId ua X X (id-โ X)) g โกโจ q โฉ
transport (ฮป - โ - โ Z) (refl X) g โกโจ refl _ โฉ
g โ
where
p : EqโId ua X X (id-โ X) โก refl X
p = inverses-are-retractions (IdโEq X X) (ua X X) (refl X)
q = ap (ฮป - โ transport (ฮป - โ - โ Z) - g) p
is-hae : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ ๐ค โ ๐ฅ ฬ
is-hae f = ฮฃ g ๊ (codomain f โ domain f)
, ฮฃ ฮท ๊ g โ f โผ id
, ฮฃ ฮต ๊ f โ g โผ id
, ((x : domain f) โ ap f (ฮท x) โก ฮต (f x))
haes-are-invertible : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-hae f โ invertible f
haes-are-invertible f (g , ฮท , ฮต , ฯ) = g , ฮท , ฮต
transport-ap-โ : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
{x x' : X} (a : x' โก x) (b : f x' โก f x)
โ (transport (ฮป - โ f - โก f x) a b โก refl (f x))
โ (ap f a โก b)
transport-ap-โ f (refl x) b = ฮณ
where
ฮณ : (b โก refl (f x)) โ (refl (f x) โก b)
ฮณ = โปยน-โ b (refl (f x))
haes-are-equivs : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-hae f โ is-equiv f
haes-are-equivs f (g , ฮท , ฮต , ฯ) y = ฮณ
where
c : (ฯ : fiber f y) โ (g y , ฮต y) โก ฯ
c (x , refl .(f x)) = q
where
p : transport (ฮป - โ f - โก f x) (ฮท x) (ฮต (f x)) โก refl (f x)
p = โ โ-sym (transport-ap-โ f (ฮท x) (ฮต (f x))) โ (ฯ x)
q : (g (f x) , ฮต (f x)) โก (x , refl (f x))
q = to-ฮฃ-โก (ฮท x , p)
ฮณ : is-singleton (fiber f y)
ฮณ = (g y , ฮต y) , c
id-is-hae : (X : ๐ค ฬ ) โ is-hae (๐๐ X)
id-is-hae X = ๐๐ X , refl , refl , (ฮป x โ refl (refl x))
ua-equivs-are-haes : is-univalent ๐ค
โ {X Y : ๐ค ฬ } (f : X โ Y)
โ is-equiv f โ is-hae f
ua-equivs-are-haes ua {X} {Y} = ๐-equiv ua (ฮป X Y f โ is-hae f) id-is-hae X Y
equivs-are-haes : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-equiv f โ is-hae f
equivs-are-haes {๐ค} {๐ฅ} {X} {Y} f i = (g , ฮท , ฮต , ฯ)
where
g : Y โ X
g = inverse f i
ฮท : g โ f โผ id
ฮท = inverses-are-retractions f i
ฮต : f โ g โผ id
ฮต = inverses-are-sections f i
ฯ : (x : X) โ ap f (ฮท x) โก ฮต (f x)
ฯ x = ฮณ
where
ฯ : fiber f (f x)
ฯ = center (fiber f (f x)) (i (f x))
by-definition-of-g : g (f x) โก fiber-point ฯ
by-definition-of-g = refl _
p : ฯ โก (x , refl (f x))
p = centrality (fiber f (f x)) (i (f x)) (x , refl (f x))
a : g (f x) โก x
a = ap fiber-point p
b : f (g (f x)) โก f x
b = fiber-identification ฯ
by-definition-of-ฮท : ฮท x โก a
by-definition-of-ฮท = refl _
by-definition-of-ฮต : ฮต (f x) โก b
by-definition-of-ฮต = refl _
q = transport (ฮป - โ f - โก f x) a b โกโจ refl _ โฉ
transport (ฮป - โ f - โก f x) (ap prโ p) (prโ ฯ) โกโจ t โฉ
transport (ฮป - โ f (prโ -) โก f x) p (prโ ฯ) โกโจ apd prโ p โฉ
refl (f x) โ
where
t = (transport-ap (ฮป - โ f - โก f x) prโ p b)โปยน
ฮณ : ap f (ฮท x) โก ฮต (f x)
ฮณ = โ transport-ap-โ f a b โ q
equivs-are-haes' : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-equiv f โ is-hae f
equivs-are-haes' f e = (inverse f e ,
inverses-are-retractions f e ,
inverses-are-sections f e ,
ฯ)
where
ฯ : โ x โ ap f (inverses-are-retractions f e x) โก inverses-are-sections f e (f x)
ฯ x = โ transport-ap-โ f (ap prโ p) (prโ ฯ) โ q
where
ฯ : fiber f (f x)
ฯ = prโ (e (f x))
p : ฯ โก (x , refl (f x))
p = prโ (e (f x)) (x , refl (f x))
q : transport (ฮป - โ f - โก f x) (ap prโ p) (prโ ฯ) โก refl (f x)
q = (transport-ap (ฮป - โ f - โก f x) prโ p ((prโ ฯ)))โปยน โ apd prโ p
equiv-invertible-hae-factorization : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ equivs-are-invertible f
โผ haes-are-invertible f โ equivs-are-haes f
equiv-invertible-hae-factorization f e = refl (equivs-are-invertible f e)
half-adjoint-condition : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y) (e : is-equiv f) (x : X)
โ ap f (inverses-are-retractions f e x) โก inverses-are-sections f e (f x)
half-adjoint-condition f e = prโ (prโ (prโ (equivs-are-haes f e)))
ฮฃ-change-of-variable : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (A : Y โ ๐ฆ ฬ ) (f : X โ Y)
โ is-equiv f โ (ฮฃ y ๊ Y , A y) โ (ฮฃ x ๊ X , A (f x))
ฮฃ-change-of-variable {๐ค} {๐ฅ} {๐ฆ} {X} {Y} A f i = ฮณ
where
g = inverse f i
ฮท = inverses-are-retractions f i
ฮต = inverses-are-sections f i
ฯ = half-adjoint-condition f i
ฯ : ฮฃ A โ ฮฃ (A โ f)
ฯ (y , a) = (g y , transport A ((ฮต y)โปยน) a)
ฯ : ฮฃ (A โ f) โ ฮฃ A
ฯ (x , a) = (f x , a)
ฯฯ : (z : ฮฃ A) โ ฯ (ฯ z) โก z
ฯฯ (y , a) = p
where
p : (f (g y) , transport A ((ฮต y)โปยน) a) โก (y , a)
p = to-ฮฃ-โก (ฮต y , transport-is-retraction A (ฮต y) a)
ฯฯ : (t : ฮฃ (A โ f)) โ ฯ (ฯ t) โก t
ฯฯ (x , a) = p
where
a' : A (f (g (f x)))
a' = transport A ((ฮต (f x))โปยน) a
q = transport (A โ f) (ฮท x) a' โกโจ transport-ap A f (ฮท x) a' โฉ
transport A (ap f (ฮท x)) a' โกโจ ap (ฮป - โ transport A - a') (ฯ x) โฉ
transport A (ฮต (f x)) a' โกโจ transport-is-retraction A (ฮต (f x)) a โฉ
a โ
p : (g (f x) , transport A ((ฮต (f x))โปยน) a) โก (x , a)
p = to-ฮฃ-โก (ฮท x , q)
ฮณ : ฮฃ A โ ฮฃ (A โ f)
ฮณ = invertibility-gives-โ ฯ (ฯ , ฯฯ , ฯฯ)
~-naturality : {X : ๐ค ฬ } {A : ๐ฅ ฬ }
(f g : X โ A) (H : f โผ g) {x y : X} {p : x โก y}
โ H x โ ap g p โก ap f p โ H y
~-naturality f g H {x} {_} {refl a} = refl-left โปยน
~-naturality' : {X : ๐ค ฬ } {A : ๐ฅ ฬ }
(f g : X โ A) (H : f โผ g) {x y : X} {p : x โก y}
โ H x โ ap g p โ (H y)โปยน โก ap f p
~-naturality' f g H {x} {x} {refl x} = โปยน-rightโ (H x)
~-id-naturality : {X : ๐ค ฬ }
(h : X โ X) (ฮท : h โผ id) {x : X}
โ ฮท (h x) โก ap h (ฮท x)
~-id-naturality h ฮท {x} =
ฮท (h x) โกโจ refl _ โฉ
ฮท (h x) โ refl (h x) โกโจ i โฉ
ฮท (h x) โ (ฮท x โ (ฮท x)โปยน) โกโจ ii โฉ
ฮท (h x) โ ฮท x โ (ฮท x)โปยน โกโจ iii โฉ
ฮท (h x) โ ap id (ฮท x) โ (ฮท x)โปยน โกโจ iv โฉ
ap h (ฮท x) โ
where
i = ap (ฮท(h x) โ_) ((โปยน-rightโ (ฮท x))โปยน)
ii = (โassoc (ฮท (h x)) (ฮท x) (ฮท x โปยน))โปยน
iii = ap (ฮป - โ ฮท (h x) โ - โ ฮท x โปยน) ((ap-id (ฮท x))โปยน)
iv = ~-naturality' h id ฮท {h x} {x} {ฮท x}
invertibles-are-haes : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ invertible f โ is-hae f
invertibles-are-haes f (g , ฮท , ฮต) = g , ฮท , ฮต' , ฯ
where
ฮต' = ฮป y โ f (g y) โกโจ (ฮต (f (g y)))โปยน โฉ
f (g (f (g y))) โกโจ ap f (ฮท (g y)) โฉ
f (g y) โกโจ ฮต y โฉ
y โ
module _ (x : domain f) where
p = ฮท (g (f x)) โกโจ ~-id-naturality (g โ f) ฮท โฉ
ap (g โ f) (ฮท x) โกโจ ap-โ f g (ฮท x) โฉ
ap g (ap f (ฮท x)) โ
q = ap f (ฮท (g (f x))) โ ฮต (f x) โกโจ by-p โฉ
ap f (ap g (ap f (ฮท x))) โ ฮต (f x) โกโจ by-ap-โ โฉ
ap (f โ g) (ap f (ฮท x)) โ ฮต (f x) โกโจ by-~-naturality โฉ
ฮต (f (g (f x))) โ ap id (ap f (ฮท x)) โกโจ by-ap-id โฉ
ฮต (f (g (f x))) โ ap f (ฮท x) โ
where
by-p = ap (ฮป - โ ap f - โ ฮต (f x)) p
by-ap-โ = ap (_โ ฮต (f x)) ((ap-โ g f (ap f (ฮท x)))โปยน)
by-~-naturality = (~-naturality (f โ g) id ฮต {f (g (f x))} {f x} {ap f (ฮท x)})โปยน
by-ap-id = ap (ฮต (f (g (f x))) โ_) (ap-id (ap f (ฮท x)))
ฯ = ap f (ฮท x) โกโจ refl-left โปยน โฉ
refl (f (g (f x))) โ ap f (ฮท x) โกโจ by-โปยน-leftโ โฉ
(ฮต (f (g (f x))))โปยน โ ฮต (f (g (f x))) โ ap f (ฮท x) โกโจ by-โassoc โฉ
(ฮต (f (g (f x))))โปยน โ (ฮต (f (g (f x))) โ ap f (ฮท x)) โกโจ by-q โฉ
(ฮต (f (g (f x))))โปยน โ (ap f (ฮท (g (f x))) โ ฮต (f x)) โกโจ refl _ โฉ
ฮต' (f x) โ
where
by-โปยน-leftโ = ap (_โ ap f (ฮท x)) ((โปยน-leftโ (ฮต (f (g (f x)))))โปยน)
by-โassoc = โassoc ((ฮต (f (g (f x))))โปยน) (ฮต (f (g (f x)))) (ap f (ฮท x))
by-q = ap ((ฮต (f (g (f x))))โปยน โ_) (q โปยน)
funext : โ ๐ค ๐ฅ โ (๐ค โ ๐ฅ)โบ ฬ
funext ๐ค ๐ฅ = {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {f g : X โ Y} โ f โผ g โ f โก g
precomp-is-equiv : is-univalent ๐ค
โ (X Y : ๐ค ฬ ) (f : X โ Y)
โ is-equiv f
โ (Z : ๐ค ฬ ) โ is-equiv (ฮป (g : Y โ Z) โ g โ f)
precomp-is-equiv {๐ค} ua =
๐-equiv ua
(ฮป X Y (f : X โ Y) โ (Z : ๐ค ฬ ) โ is-equiv (ฮป g โ g โ f))
(ฮป X Z โ id-is-equiv (X โ Z))
univalence-gives-funext : is-univalent ๐ค โ funext ๐ฅ ๐ค
univalence-gives-funext {๐ค} {๐ฅ} ua {X} {Y} {fโ} {fโ} = ฮณ
where
ฮ : ๐ค ฬ
ฮ = ฮฃ yโ ๊ Y , ฮฃ yโ ๊ Y , yโ โก yโ
ฮด : Y โ ฮ
ฮด y = (y , y , refl y)
ฯโ ฯโ : ฮ โ Y
ฯโ (yโ , yโ , p) = yโ
ฯโ (yโ , yโ , p) = yโ
ฮด-is-equiv : is-equiv ฮด
ฮด-is-equiv = invertibles-are-equivs ฮด (ฯโ , ฮท , ฮต)
where
ฮท : (y : Y) โ ฯโ (ฮด y) โก y
ฮท y = refl y
ฮต : (d : ฮ) โ ฮด (ฯโ d) โก d
ฮต (y , y , refl y) = refl (y , y , refl y)
ฯ : (ฮ โ Y) โ (Y โ Y)
ฯ ฯ = ฯ โ ฮด
ฯ-is-equiv : is-equiv ฯ
ฯ-is-equiv = precomp-is-equiv ua Y ฮ ฮด ฮด-is-equiv Y
p : ฯ ฯโ โก ฯ ฯโ
p = refl (๐๐ Y)
q : ฯโ โก ฯโ
q = equivs-are-lc ฯ ฯ-is-equiv p
ฮณ : fโ โผ fโ โ fโ โก fโ
ฮณ h = ap (ฮป ฯ x โ ฯ (fโ x , fโ x , h x)) q
ฮณ' : fโ โผ fโ โ fโ โก fโ
ฮณ' h = fโ โกโจ refl _ โฉ
(ฮป x โ fโ x) โกโจ refl _ โฉ
(ฮป x โ ฯโ (fโ x , fโ x , h x)) โกโจ ap (ฮป - x โ - (fโ x , fโ x , h x)) q โฉ
(ฮป x โ ฯโ (fโ x , fโ x , h x)) โกโจ refl _ โฉ
(ฮป x โ fโ x) โกโจ refl _ โฉ
fโ โ
dfunext : โ ๐ค ๐ฅ โ (๐ค โ ๐ฅ)โบ ฬ
dfunext ๐ค ๐ฅ = {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {f g : ฮ A} โ f โผ g โ f โก g
happly : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } (f g : ฮ A) โ f โก g โ f โผ g
happly f g p x = ap (ฮป - โ - x) p
hfunext : โ ๐ค ๐ฅ โ (๐ค โ ๐ฅ)โบ ฬ
hfunext ๐ค ๐ฅ = {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } (f g : ฮ A) โ is-equiv (happly f g)
hfunext-gives-dfunext : hfunext ๐ค ๐ฅ โ dfunext ๐ค ๐ฅ
hfunext-gives-dfunext hfe {X} {A} {f} {g} = inverse (happly f g) (hfe f g)
vvfunext : โ ๐ค ๐ฅ โ (๐ค โ ๐ฅ)โบ ฬ
vvfunext ๐ค ๐ฅ = {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ }
โ ((x : X) โ is-singleton (A x))
โ is-singleton (ฮ A)
dfunext-gives-vvfunext : dfunext ๐ค ๐ฅ โ vvfunext ๐ค ๐ฅ
dfunext-gives-vvfunext fe {X} {A} i = ฮณ
where
f : ฮ A
f x = center (A x) (i x)
c : (g : ฮ A) โ f โก g
c g = fe (ฮป (x : X) โ centrality (A x) (i x) (g x))
ฮณ : is-singleton (ฮ A)
ฮณ = f , c
vvfunext-gives-hfunext : vvfunext ๐ค ๐ฅ โ hfunext ๐ค ๐ฅ
vvfunext-gives-hfunext vfe {X} {Y} f = ฮณ
where
a : (x : X) โ is-singleton (ฮฃ y ๊ Y x , f x โก y)
a x = singleton-types'-are-singletons (Y x) (f x)
c : is-singleton (ฮ x ๊ X , ฮฃ y ๊ Y x , f x โก y)
c = vfe a
ฯ : (ฮฃ g ๊ ฮ Y , f โผ g) โ (ฮ x ๊ X , ฮฃ y ๊ Y x , f x โก y)
ฯ = โ-gives-โท ฮ ฮฃ-distr-โ
d : is-singleton (ฮฃ g ๊ ฮ Y , f โผ g)
d = retract-of-singleton ฯ c
e : (ฮฃ g ๊ ฮ Y , f โก g) โ (ฮฃ g ๊ ฮ Y , f โผ g)
e = Natฮฃ (happly f)
i : is-equiv e
i = maps-of-singletons-are-equivs e (singleton-types'-are-singletons (ฮ Y) f) d
ฮณ : (g : ฮ Y) โ is-equiv (happly f g)
ฮณ = Natฮฃ-equiv-gives-fiberwise-equiv (happly f) i
postcomp-invertible : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {A : ๐ฆ ฬ }
โ funext ๐ฆ ๐ค
โ funext ๐ฆ ๐ฅ
โ (f : X โ Y)
โ invertible f
โ invertible (ฮป (h : A โ X) โ f โ h)
postcomp-invertible {๐ค} {๐ฅ} {๐ฆ} {X} {Y} {A} fe fe' f (g , ฮท , ฮต) = ฮณ
where
f' : (A โ X) โ (A โ Y)
f' h = f โ h
g' : (A โ Y) โ (A โ X)
g' k = g โ k
ฮท' : (h : A โ X) โ g' (f' h) โก h
ฮท' h = fe (ฮท โ h)
ฮต' : (k : A โ Y) โ f' (g' k) โก k
ฮต' k = fe' (ฮต โ k)
ฮณ : invertible f'
ฮณ = (g' , ฮท' , ฮต')
postcomp-is-equiv : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {A : ๐ฆ ฬ }
โ funext ๐ฆ ๐ค
โ funext ๐ฆ ๐ฅ
โ (f : X โ Y)
โ is-equiv f
โ is-equiv (ฮป (h : A โ X) โ f โ h)
postcomp-is-equiv fe fe' f e =
invertibles-are-equivs
(ฮป h โ f โ h)
(postcomp-invertible fe fe' f (equivs-are-invertible f e))
funext-gives-vvfunext : funext ๐ค (๐ค โ ๐ฅ) โ funext ๐ค ๐ค โ vvfunext ๐ค ๐ฅ
funext-gives-vvfunext {๐ค} {๐ฅ} fe fe' {X} {A} ฯ = ฮณ
where
f : ฮฃ A โ X
f = prโ
f-is-equiv : is-equiv f
f-is-equiv = prโ-is-equiv ฯ
g : (X โ ฮฃ A) โ (X โ X)
g h = f โ h
e : is-equiv g
e = postcomp-is-equiv fe fe' f f-is-equiv
i : is-singleton (ฮฃ h ๊ (X โ ฮฃ A), f โ h โก ๐๐ X)
i = e (๐๐ X)
r : (ฮฃ h ๊ (X โ ฮฃ A), f โ h โก ๐๐ X) โ ฮ A
r (h , p) x = transport A (happly (f โ h) (๐๐ X) p x) (prโ (h x))
s : ฮ A โ (ฮฃ h ๊ (X โ ฮฃ A), f โ h โก ๐๐ X)
s ฯ = (ฮป x โ x , ฯ x) , refl (๐๐ X)
ฮท : โ ฯ โ r (s ฯ) โก ฯ
ฮท ฯ = refl (r (s ฯ))
ฮณ : is-singleton (ฮ A)
ฮณ = retract-of-singleton (r , s , ฮท) i
abstract
funext-gives-hfunext : funext ๐ค (๐ค โ ๐ฅ) โ funext ๐ค ๐ค โ hfunext ๐ค ๐ฅ
dfunext-gives-hfunext : dfunext ๐ค ๐ฅ โ hfunext ๐ค ๐ฅ
funext-gives-dfunext : funext ๐ค (๐ค โ ๐ฅ) โ funext ๐ค ๐ค โ dfunext ๐ค ๐ฅ
univalence-gives-dfunext' : is-univalent ๐ค โ is-univalent (๐ค โ ๐ฅ) โ dfunext ๐ค ๐ฅ
univalence-gives-hfunext' : is-univalent ๐ค โ is-univalent (๐ค โ ๐ฅ) โ hfunext ๐ค ๐ฅ
univalence-gives-vvfunext' : is-univalent ๐ค โ is-univalent (๐ค โ ๐ฅ) โ vvfunext ๐ค ๐ฅ
univalence-gives-hfunext : is-univalent ๐ค โ hfunext ๐ค ๐ค
univalence-gives-dfunext : is-univalent ๐ค โ dfunext ๐ค ๐ค
univalence-gives-vvfunext : is-univalent ๐ค โ vvfunext ๐ค ๐ค
funext-gives-hfunext fe fe' = vvfunext-gives-hfunext (funext-gives-vvfunext fe fe')
funext-gives-dfunext fe fe' = hfunext-gives-dfunext (funext-gives-hfunext fe fe')
dfunext-gives-hfunext fe = vvfunext-gives-hfunext (dfunext-gives-vvfunext fe)
univalence-gives-dfunext' ua ua' = funext-gives-dfunext
(univalence-gives-funext ua')
(univalence-gives-funext ua)
univalence-gives-hfunext' ua ua' = funext-gives-hfunext
(univalence-gives-funext ua')
(univalence-gives-funext ua)
univalence-gives-vvfunext' ua ua' = funext-gives-vvfunext
(univalence-gives-funext ua')
(univalence-gives-funext ua)
univalence-gives-hfunext ua = univalence-gives-hfunext' ua ua
univalence-gives-dfunext ua = univalence-gives-dfunext' ua ua
univalence-gives-vvfunext ua = univalence-gives-vvfunext' ua ua
_/_ : (๐ค : Universe) โ ๐ฅ ฬ โ ๐ค โบ โ ๐ฅ ฬ
๐ค / Y = ฮฃ X ๊ ๐ค ฬ , (X โ Y)
total-fiber-is-domain : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ ฮฃ (fiber f) โ X
total-fiber-is-domain {๐ค} {๐ฅ} {X} {Y} f = invertibility-gives-โ g (h , ฮท , ฮต)
where
g : (ฮฃ y ๊ Y , ฮฃ x ๊ X , f x โก y) โ X
g (y , x , p) = x
h : X โ ฮฃ y ๊ Y , ฮฃ x ๊ X , f x โก y
h x = (f x , x , refl (f x))
ฮท : โ t โ h (g t) โก t
ฮท (_ , x , refl _) = refl (f x , x , refl _)
ฮต : (x : X) โ g (h x) โก x
ฮต = refl
ฯ : (Y : ๐ค ฬ ) โ ๐ค / Y โ (Y โ ๐ค ฬ )
ฯ Y (X , f) = fiber f
is-map-classifier : (๐ค : Universe) โ ๐ค โบ ฬ
is-map-classifier ๐ค = (Y : ๐ค ฬ ) โ is-equiv (ฯ Y)
๐ : (Y : ๐ค ฬ ) โ (Y โ ๐ค ฬ ) โ ๐ค / Y
๐ Y A = ฮฃ A , prโ
ฯฮท : is-univalent ๐ค
โ (Y : ๐ค ฬ ) (ฯ : ๐ค / Y) โ ๐ Y (ฯ Y ฯ) โก ฯ
ฯฮท ua Y (X , f) = r
where
e : ฮฃ (fiber f) โ X
e = total-fiber-is-domain f
p : ฮฃ (fiber f) โก X
p = EqโId ua (ฮฃ (fiber f)) X e
observation : โ โ-sym e โ โก (ฮป x โ f x , x , refl (f x))
observation = refl _
q = transport (ฮป - โ - โ Y) p prโ โกโจ transport-map-along-โ ua e prโ โฉ
prโ โ โ โ-sym e โ โกโจ refl _ โฉ
f โ
r : (ฮฃ (fiber f) , prโ) โก (X , f)
r = to-ฮฃ-โก (p , q)
ฯฮต : is-univalent ๐ค
โ dfunext ๐ค (๐ค โบ)
โ (Y : ๐ค ฬ ) (A : Y โ ๐ค ฬ ) โ ฯ Y (๐ Y A) โก A
ฯฮต ua fe Y A = fe ฮณ
where
f : โ y โ fiber prโ y โ A y
f y ((y , a) , refl p) = a
g : โ y โ A y โ fiber prโ y
g y a = (y , a) , refl y
ฮท : โ y ฯ โ g y (f y ฯ) โก ฯ
ฮท y ((y , a) , refl p) = refl ((y , a) , refl p)
ฮต : โ y a โ f y (g y a) โก a
ฮต y a = refl a
ฮณ : โ y โ fiber prโ y โก A y
ฮณ y = EqโId ua _ _ (invertibility-gives-โ (f y) (g y , ฮท y , ฮต y))
universes-are-map-classifiers : is-univalent ๐ค
โ dfunext ๐ค (๐ค โบ)
โ is-map-classifier ๐ค
universes-are-map-classifiers ua fe Y = invertibles-are-equivs (ฯ Y)
(๐ Y , ฯฮท ua Y , ฯฮต ua fe Y)
map-classification : is-univalent ๐ค
โ dfunext ๐ค (๐ค โบ)
โ (Y : ๐ค ฬ ) โ ๐ค / Y โ (Y โ ๐ค ฬ )
map-classification ua fe Y = ฯ Y , universes-are-map-classifiers ua fe Y
ฮ -is-subsingleton : dfunext ๐ค ๐ฅ
โ {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ }
โ ((x : X) โ is-subsingleton (A x))
โ is-subsingleton (ฮ A)
ฮ -is-subsingleton fe i f g = fe (ฮป x โ i x (f x) (g x))
being-singleton-is-subsingleton : dfunext ๐ค ๐ค
โ {X : ๐ค ฬ } โ is-subsingleton (is-singleton X)
being-singleton-is-subsingleton fe {X} (x , ฯ) (y , ฮณ) = p
where
i : is-subsingleton X
i = singletons-are-subsingletons X (y , ฮณ)
s : is-set X
s = subsingletons-are-sets X i
a : (z : X) โ is-subsingleton ((t : X) โ z โก t)
a z = ฮ -is-subsingleton fe (s z)
b : x โก y
b = ฯ y
p : (x , ฯ) โก (y , ฮณ)
p = to-subtype-โก a b
being-equiv-is-subsingleton : dfunext ๐ฅ (๐ค โ ๐ฅ)
โ dfunext (๐ค โ ๐ฅ) (๐ค โ ๐ฅ)
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-subsingleton (is-equiv f)
being-equiv-is-subsingleton fe fe' f = ฮ -is-subsingleton fe
(ฮป x โ being-singleton-is-subsingleton fe')
subsingletons-are-retracts-of-logically-equivalent-types : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ is-subsingleton X
โ (X โ Y)
โ X โ Y
subsingletons-are-retracts-of-logically-equivalent-types i (f , g) = g , f , ฮท
where
ฮท : g โ f โผ id
ฮท x = i (g (f x)) x
equivalence-property-is-retract-of-invertibility-data : dfunext ๐ฅ (๐ค โ ๐ฅ)
โ dfunext (๐ค โ ๐ฅ) (๐ค โ ๐ฅ)
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-equiv f โ invertible f
equivalence-property-is-retract-of-invertibility-data fe fe' f =
subsingletons-are-retracts-of-logically-equivalent-types
(being-equiv-is-subsingleton fe fe' f)
(equivs-are-invertible f , invertibles-are-equivs f)
univalence-is-subsingleton : is-univalent (๐ค โบ)
โ is-subsingleton (is-univalent ๐ค)
univalence-is-subsingleton {๐ค} uaโบ = subsingleton-criterion' ฮณ
where
ฮณ : is-univalent ๐ค โ is-subsingleton (is-univalent ๐ค)
ฮณ ua = i
where
dfeโ : dfunext ๐ค (๐ค โบ)
dfeโ : dfunext (๐ค โบ) (๐ค โบ)
dfeโ = univalence-gives-dfunext' ua uaโบ
dfeโ = univalence-gives-dfunext uaโบ
i : is-subsingleton (is-univalent ๐ค)
i = ฮ -is-subsingleton dfeโ
(ฮป X โ ฮ -is-subsingleton dfeโ
(ฮป Y โ being-equiv-is-subsingleton dfeโ dfeโ (IdโEq X Y)))
Univalence : ๐คฯ
Univalence = โ ๐ค โ is-univalent ๐ค
univalence-is-subsingletonฯ : Univalence โ is-subsingleton (is-univalent ๐ค)
univalence-is-subsingletonฯ {๐ค} ฮณ = univalence-is-subsingleton (ฮณ (๐ค โบ))
univalence-is-a-singleton : Univalence โ is-singleton (is-univalent ๐ค)
univalence-is-a-singleton {๐ค} ฮณ = pointed-subsingletons-are-singletons
(is-univalent ๐ค)
(ฮณ ๐ค)
(univalence-is-subsingletonฯ ฮณ)
global-dfunext : ๐คฯ
global-dfunext = โ {๐ค ๐ฅ} โ dfunext ๐ค ๐ฅ
univalence-gives-global-dfunext : Univalence โ global-dfunext
univalence-gives-global-dfunext ua {๐ค} {๐ฅ} = univalence-gives-dfunext'
(ua ๐ค) (ua (๐ค โ ๐ฅ))
global-hfunext : ๐คฯ
global-hfunext = โ {๐ค ๐ฅ} โ hfunext ๐ค ๐ฅ
univalence-gives-global-hfunext : Univalence โ global-hfunext
univalence-gives-global-hfunext ua {๐ค} {๐ฅ} = univalence-gives-hfunext'
(ua ๐ค) (ua (๐ค โ ๐ฅ))
ฮ -is-subsingleton' : dfunext ๐ค ๐ฅ
โ {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ }
โ ((x : X) โ is-subsingleton (A x))
โ is-subsingleton ({x : X} โ A x)
ฮ -is-subsingleton' fe {X} {A} i = ฮณ
where
ฯ : ({x : X} โ A x) โ ฮ A
ฯ = (ฮป f {x} โ f x) , (ฮป g x โ g {x}) , refl
ฮณ : is-subsingleton ({x : X} โ A x)
ฮณ = retract-of-subsingleton ฯ (ฮ -is-subsingleton fe i)
vv-and-hfunext-are-subsingletons-lemma : dfunext (๐ค โบ) (๐ค โ (๐ฅ โบ))
โ dfunext (๐ค โ (๐ฅ โบ)) (๐ค โ ๐ฅ)
โ dfunext (๐ค โ ๐ฅ) (๐ค โ ๐ฅ)
โ is-subsingleton (vvfunext ๐ค ๐ฅ)
ร is-subsingleton (hfunext ๐ค ๐ฅ)
vv-and-hfunext-are-subsingletons-lemma {๐ค} {๐ฅ} dfe dfe' dfe'' = ฯ , ฮณ
where
ฯ : is-subsingleton (vvfunext ๐ค ๐ฅ)
ฯ = ฮ -is-subsingleton' dfe
(ฮป X โ ฮ -is-subsingleton' dfe'
(ฮป A โ ฮ -is-subsingleton dfe''
(ฮป i โ being-singleton-is-subsingleton dfe'')))
ฮณ : is-subsingleton (hfunext ๐ค ๐ฅ)
ฮณ = ฮ -is-subsingleton' dfe
(ฮป X โ ฮ -is-subsingleton' dfe'
(ฮป A โ ฮ -is-subsingleton dfe''
(ฮป f โ ฮ -is-subsingleton dfe''
(ฮป g โ being-equiv-is-subsingleton dfe'' dfe''
(happly f g)))))
vv-and-hfunext-are-singletons : Univalence
โ is-singleton (vvfunext ๐ค ๐ฅ)
ร is-singleton (hfunext ๐ค ๐ฅ)
vv-and-hfunext-are-singletons {๐ค} {๐ฅ} ua =
f (vv-and-hfunext-are-subsingletons-lemma
(univalence-gives-dfunext' (ua (๐ค โบ)) (ua ((๐ค โบ) โ (๐ฅ โบ))))
(univalence-gives-dfunext' (ua (๐ค โ (๐ฅ โบ))) (ua (๐ค โ (๐ฅ โบ))))
(univalence-gives-dfunext' (ua (๐ค โ ๐ฅ)) (ua (๐ค โ ๐ฅ))))
where
f : is-subsingleton (vvfunext ๐ค ๐ฅ) ร is-subsingleton (hfunext ๐ค ๐ฅ)
โ is-singleton (vvfunext ๐ค ๐ฅ) ร is-singleton (hfunext ๐ค ๐ฅ)
f (i , j) = pointed-subsingletons-are-singletons (vvfunext ๐ค ๐ฅ)
(univalence-gives-vvfunext' (ua ๐ค) (ua (๐ค โ ๐ฅ))) i ,
pointed-subsingletons-are-singletons (hfunext ๐ค ๐ฅ)
(univalence-gives-hfunext' (ua ๐ค) (ua (๐ค โ ๐ฅ))) j
โ! : {X : ๐ค ฬ } โ (X โ ๐ฅ ฬ ) โ ๐ค โ ๐ฅ ฬ
โ! A = is-singleton (ฮฃ A)
-โ! : {๐ค ๐ฅ : Universe} (X : ๐ค ฬ ) (Y : X โ ๐ฅ ฬ ) โ ๐ค โ ๐ฅ ฬ
-โ! X Y = โ! Y
syntax -โ! A (ฮป x โ b) = โ! x ๊ A , b
โ!-is-subsingleton : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ )
โ dfunext (๐ค โ ๐ฅ) (๐ค โ ๐ฅ)
โ is-subsingleton (โ! A)
โ!-is-subsingleton A fe = being-singleton-is-subsingleton fe
unique-existence-gives-weak-unique-existence : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ )
โ (โ! x ๊ X , A x)
โ (ฮฃ x ๊ X , A x) ร ((x y : X) โ A x โ A y โ x โก y)
unique-existence-gives-weak-unique-existence A s = center (ฮฃ A) s , u
where
u : โ x y โ A x โ A y โ x โก y
u x y a b = ap prโ (singletons-are-subsingletons (ฮฃ A) s (x , a) (y , b))
weak-unique-existence-gives-unique-existence-sometimes : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ )
โ ((x : X) โ is-subsingleton (A x))
โ ((ฮฃ x ๊ X , A x) ร ((x y : X) โ A x โ A y โ x โก y))
โ (โ! x ๊ X , A x)
weak-unique-existence-gives-unique-existence-sometimes A i ((x , a) , u) = (x , a) , ฯ
where
ฯ : (ฯ : ฮฃ A) โ x , a โก ฯ
ฯ (y , b) = to-subtype-โก i (u x y a b)
โ-is-nno : hfunext ๐คโ ๐ค
โ (Y : ๐ค ฬ ) (yโ : Y) (g : Y โ Y)
โ โ! h ๊ (โ โ Y), (h 0 โก yโ) ร (h โ succ โผ g โ h)
โ-is-nno {๐ค} hfe Y yโ g = ฮณ
where
lemmaโ : (h : โ โ Y) โ ((h 0 โก yโ) ร (h โ succ โผ g โ h)) โ (h โผ โ-iteration Y yโ g)
lemmaโ h = r , s , ฮท
where
s : (h 0 โก yโ) ร (h โ succ โผ g โ h) โ h โผ โ-iteration Y yโ g
s (p , K) 0 = p
s (p , K) (succ n) = h (succ n) โกโจ K n โฉ
g (h n) โกโจ ap g (s (p , K) n) โฉ
โ-iteration Y yโ g (succ n) โ
r : codomain s โ domain s
r H = H 0 , (ฮป n โ h (succ n) โกโจ H (succ n) โฉ
g (โ-iteration Y yโ g n) โกโจ ap g ((H n)โปยน) โฉ
g (h n ) โ)
ฮท : (z : (h 0 โก yโ) ร (h โ succ โผ g โ h)) โ r (s z) โก z
ฮท (p , K) = v
where
i = ฮป n โ
K n โ ap g (s (p , K) n) โ ap g ((s (p , K) n) โปยน) โกโจ ii n โฉ
K n โ (ap g (s (p , K) n) โ ap g ((s (p , K) n) โปยน)) โกโจ iii n โฉ
K n โ (ap g (s (p , K) n) โ (ap g (s (p , K) n))โปยน) โกโจ iv n โฉ
K n โ
where
ii = ฮป n โ โassoc (K n) (ap g (s (p , K) n)) (ap g ((s (p , K) n)โปยน))
iii = ฮป n โ ap (ฮป - โ K n โ (ap g (s (p , K) n) โ -)) (apโปยน g (s (p , K) n) โปยน)
iv = ฮป n โ ap (K n โ_) (โปยน-rightโ (ap g (s (p , K) n)))
v : (p , (ฮป n โ s (p , K) (succ n) โ ap g ((s (p , K) n)โปยน))) โก (p , K)
v = ap (p ,_) (hfunext-gives-dfunext hfe i)
lemmaโ = ฮป h โ (h 0 โก yโ) ร (h โ succ โผ g โ h) โโจ lemmaโ h โฉ
(h โผ โ-iteration Y yโ g) โโจ i h โฉ
(h โก โ-iteration Y yโ g) โ
where
i = ฮป h โ โ-gives-โท (happly h (โ-iteration Y yโ g) , hfe _ _)
lemmaโ : (ฮฃ h ๊ (โ โ Y), (h 0 โก yโ) ร (h โ succ โผ g โ h))
โ (ฮฃ h ๊ (โ โ Y), h โก โ-iteration Y yโ g)
lemmaโ = ฮฃ-retract lemmaโ
ฮณ : is-singleton (ฮฃ h ๊ (โ โ Y), (h 0 โก yโ) ร (h โ succ โผ g โ h))
ฮณ = retract-of-singleton
lemmaโ
(singleton-types-are-singletons (โ โ Y) (โ-iteration Y yโ g))
module finite-types (hfe : hfunext ๐คโ ๐คโ) where
fin : โ! Fin ๊ (โ โ ๐คโ ฬ )
, (Fin 0 โก ๐)
ร ((n : โ) โ Fin (succ n) โก Fin n + ๐)
fin = โ-is-nno hfe (๐คโ ฬ ) ๐ (_+ ๐)
Fin : โ โ ๐คโ ฬ
Fin = prโ (center _ fin)
Fin-equationโ : Fin 0 โก ๐
Fin-equationโ = refl _
Fin-equation-succ : Fin โ succ โก ฮป n โ Fin n + ๐
Fin-equation-succ = refl _
Fin-equation-succ' : (n : โ) โ Fin (succ n) โก Fin n + ๐
Fin-equation-succ' n = refl _
Fin-equationโ : Fin 1 โก ๐ + ๐
Fin-equationโ = refl _
Fin-equationโ : Fin 2 โก (๐ + ๐) + ๐
Fin-equationโ = refl _
Fin-equationโ : Fin 3 โก ((๐ + ๐) + ๐) + ๐
Fin-equationโ = refl _
being-subsingleton-is-subsingleton : dfunext ๐ค ๐ค
โ {X : ๐ค ฬ }
โ is-subsingleton (is-subsingleton X)
being-subsingleton-is-subsingleton fe {X} i j = c
where
l : is-set X
l = subsingletons-are-sets X i
a : (x y : X) โ i x y โก j x y
a x y = l x y (i x y) (j x y)
b : (x : X) โ i x โก j x
b x = fe (a x)
c : i โก j
c = fe b
being-center-is-subsingleton : dfunext ๐ค ๐ค
โ {X : ๐ค ฬ } (c : X)
โ is-subsingleton (is-center X c)
being-center-is-subsingleton fe {X} c ฯ ฮณ = k
where
i : is-singleton X
i = c , ฯ
j : (x : X) โ is-subsingleton (c โก x)
j x = singletons-are-sets X i c x
k : ฯ โก ฮณ
k = fe (ฮป x โ j x (ฯ x) (ฮณ x))
ฮ -is-set : hfunext ๐ค ๐ฅ
โ {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ }
โ ((x : X) โ is-set (A x))
โ is-set (ฮ A)
ฮ -is-set hfe s f g = b
where
a : is-subsingleton (f โผ g)
a p q = ฮณ
where
h : โ x โ p x โก q x
h x = s x (f x) (g x) (p x) (q x)
ฮณ : p โก q
ฮณ = hfunext-gives-dfunext hfe h
e : (f โก g) โ (f โผ g)
e = (happly f g , hfe f g)
b : is-subsingleton (f โก g)
b = equiv-to-subsingleton e a
being-set-is-subsingleton : dfunext ๐ค ๐ค
โ {X : ๐ค ฬ }
โ is-subsingleton (is-set X)
being-set-is-subsingleton fe = ฮ -is-subsingleton fe
(ฮป x โ ฮ -is-subsingleton fe
(ฮป y โ being-subsingleton-is-subsingleton fe))
hlevel-relation-is-subsingleton : dfunext ๐ค ๐ค
โ (n : โ) (X : ๐ค ฬ )
โ is-subsingleton (X is-of-hlevel n)
hlevel-relation-is-subsingleton {๐ค} fe zero X =
being-singleton-is-subsingleton fe
hlevel-relation-is-subsingleton fe (succ n) X =
ฮ -is-subsingleton fe
(ฮป x โ ฮ -is-subsingleton fe
(ฮป x' โ hlevel-relation-is-subsingleton fe n (x โก x')))
โ-assoc : dfunext ๐ฃ (๐ค โ ๐ฃ)
โ dfunext (๐ค โ ๐ฃ) (๐ค โ ๐ฃ)
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {Z : ๐ฆ ฬ } {T : ๐ฃ ฬ }
(ฮฑ : X โ Y) (ฮฒ : Y โ Z) (ฮณ : Z โ T)
โ ฮฑ โ (ฮฒ โ ฮณ) โก (ฮฑ โ ฮฒ) โ ฮณ
โ-assoc fe fe' (f , a) (g , b) (h , c) = ap (h โ g โ f ,_) q
where
d e : is-equiv (h โ g โ f)
d = โ-is-equiv (โ-is-equiv c b) a
e = โ-is-equiv c (โ-is-equiv b a)
q : d โก e
q = being-equiv-is-subsingleton fe fe' (h โ g โ f) _ _
โ-sym-involutive : dfunext ๐ฅ (๐ค โ ๐ฅ)
โ dfunext (๐ค โ ๐ฅ) (๐ค โ ๐ฅ) โ
{X : ๐ค ฬ } {Y : ๐ฅ ฬ } (ฮฑ : X โ Y)
โ โ-sym (โ-sym ฮฑ) โก ฮฑ
โ-sym-involutive fe fe' (f , a) = to-subtype-โก
(being-equiv-is-subsingleton fe fe')
(inversion-involutive f a)
โ-sym-is-equiv : dfunext ๐ฅ (๐ค โ ๐ฅ)
โ dfunext ๐ค (๐ค โ ๐ฅ)
โ dfunext (๐ค โ ๐ฅ) (๐ค โ ๐ฅ)
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ is-equiv (โ-sym {๐ค} {๐ฅ} {X} {Y})
โ-sym-is-equiv feโ feโ feโ = invertibles-are-equivs โ-sym
(โ-sym ,
โ-sym-involutive feโ feโ ,
โ-sym-involutive feโ feโ)
โ-sym-โ : dfunext ๐ฅ (๐ค โ ๐ฅ)
โ dfunext ๐ค (๐ค โ ๐ฅ)
โ dfunext (๐ค โ ๐ฅ) (๐ค โ ๐ฅ)
โ (X : ๐ค ฬ ) (Y : ๐ฅ ฬ )
โ (X โ Y) โ (Y โ X)
โ-sym-โ feโ feโ feโ X Y = โ-sym , โ-sym-is-equiv feโ feโ feโ
ฮ -cong : dfunext ๐ค ๐ฅ
โ dfunext ๐ค ๐ฆ
โ {X : ๐ค ฬ } {Y : X โ ๐ฅ ฬ } {Y' : X โ ๐ฆ ฬ }
โ ((x : X) โ Y x โ Y' x) โ ฮ Y โ ฮ Y'
ฮ -cong fe fe' {X} {Y} {Y'} ฯ = invertibility-gives-โ F (G , GF , FG)
where
f : (x : X) โ Y x โ Y' x
f x = โ ฯ x โ
e : (x : X) โ is-equiv (f x)
e x = โโ-is-equiv (ฯ x)
g : (x : X) โ Y' x โ Y x
g x = inverse (f x) (e x)
fg : (x : X) (y' : Y' x) โ f x (g x y') โก y'
fg x = inverses-are-sections (f x) (e x)
gf : (x : X) (y : Y x) โ g x (f x y) โก y
gf x = inverses-are-retractions (f x) (e x)
F : ((x : X) โ Y x) โ ((x : X) โ Y' x)
F ฯ x = f x (ฯ x)
G : ((x : X) โ Y' x) โ (x : X) โ Y x
G ฮณ x = g x (ฮณ x)
FG : (ฮณ : ((x : X) โ Y' x)) โ F(G ฮณ) โก ฮณ
FG ฮณ = fe' (ฮป x โ fg x (ฮณ x))
GF : (ฯ : ((x : X) โ Y x)) โ G(F ฯ) โก ฯ
GF ฯ = fe (ฮป x โ gf x (ฯ x))
hfunext-โ : hfunext ๐ค ๐ฅ
โ {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } (f g : ฮ A)
โ (f โก g) โ (f โผ g)
hfunext-โ hfe f g = (happly f g , hfe f g)
hfunextโ-โ : hfunext ๐ค (๐ฅ โ ๐ฆ) โ hfunext ๐ฅ ๐ฆ
โ {X : ๐ค ฬ } {Y : X โ ๐ฅ ฬ } {A : (x : X) โ Y x โ ๐ฆ ฬ }
(f g : (x : X) (y : Y x) โ A x y)
โ (f โก g) โ (โ x y โ f x y โก g x y)
hfunextโ-โ fe fe' {X} f g =
(f โก g) โโจ i โฉ
(โ x โ f x โก g x) โโจ ii โฉ
(โ x y โ f x y โก g x y) โ
where
i = hfunext-โ fe f g
ii = ฮ -cong
(hfunext-gives-dfunext fe)
(hfunext-gives-dfunext fe)
(ฮป x โ hfunext-โ fe' (f x) (g x))
precomp-invertible : dfunext ๐ฅ ๐ฆ
โ dfunext ๐ค ๐ฆ
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {Z : ๐ฆ ฬ } (f : X โ Y)
โ invertible f
โ invertible (ฮป (h : Y โ Z) โ h โ f)
precomp-invertible fe fe' {X} {Y} {Z} f (g , ฮท , ฮต) = (g' , ฮท' , ฮต')
where
f' : (Y โ Z) โ (X โ Z)
f' h = h โ f
g' : (X โ Z) โ (Y โ Z)
g' k = k โ g
ฮท' : (h : Y โ Z) โ g' (f' h) โก h
ฮท' h = fe (ฮป y โ ap h (ฮต y))
ฮต' : (k : X โ Z) โ f' (g' k) โก k
ฮต' k = fe' (ฮป x โ ap k (ฮท x))
precomp-is-equiv' : dfunext ๐ฅ ๐ฆ
โ dfunext ๐ค ๐ฆ
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {Z : ๐ฆ ฬ } (f : X โ Y)
โ is-equiv f
โ is-equiv (ฮป (h : Y โ Z) โ h โ f)
precomp-is-equiv' fe fe' {X} {Y} {Z} f i = invertibles-are-equivs (_โ f)
(precomp-invertible fe fe' f
(equivs-are-invertible f i))
dprecomp : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (A : Y โ ๐ฆ ฬ ) (f : X โ Y)
โ ฮ A โ ฮ (A โ f)
dprecomp A f = _โ f
dprecomp-is-equiv : dfunext ๐ค ๐ฆ
โ dfunext ๐ฅ ๐ฆ
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (A : Y โ ๐ฆ ฬ ) (f : X โ Y)
โ is-equiv f
โ is-equiv (dprecomp A f)
dprecomp-is-equiv fe fe' {X} {Y} A f i = invertibles-are-equivs ฯ (ฯ , ฯฯ , ฯฯ)
where
g = inverse f i
ฮท = inverses-are-retractions f i
ฮต = inverses-are-sections f i
ฯ : (x : X) โ ap f (ฮท x) โก ฮต (f x)
ฯ = half-adjoint-condition f i
ฯ : ฮ A โ ฮ (A โ f)
ฯ = dprecomp A f
ฯ : ฮ (A โ f) โ ฮ A
ฯ k y = transport A (ฮต y) (k (g y))
ฯฯโ : (k : ฮ (A โ f)) (x : X) โ transport A (ฮต (f x)) (k (g (f x))) โก k x
ฯฯโ k x = transport A (ฮต (f x)) (k (g (f x))) โกโจ a โฉ
transport A (ap f (ฮท x))(k (g (f x))) โกโจ b โฉ
transport (A โ f) (ฮท x) (k (g (f x))) โกโจ c โฉ
k x โ
where
a = ap (ฮป - โ transport A - (k (g (f x)))) ((ฯ x)โปยน)
b = (transport-ap A f (ฮท x) (k (g (f x))))โปยน
c = apd k (ฮท x)
ฯฯ : ฯ โ ฯ โผ id
ฯฯ k = fe (ฯฯโ k)
ฯฯโ : (h : ฮ A) (y : Y) โ transport A (ฮต y) (h (f (g y))) โก h y
ฯฯโ h y = apd h (ฮต y)
ฯฯ : ฯ โ ฯ โผ id
ฯฯ h = fe' (ฯฯโ h)
ฮ -change-of-variable : dfunext ๐ค ๐ฆ
โ dfunext ๐ฅ ๐ฆ
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (A : Y โ ๐ฆ ฬ ) (f : X โ Y)
โ is-equiv f
โ (ฮ y ๊ Y , A y) โ (ฮ x ๊ X , A (f x))
ฮ -change-of-variable fe fe' A f i = dprecomp A f , dprecomp-is-equiv fe fe' A f i
at-most-one-section : dfunext ๐ฅ ๐ค
โ hfunext ๐ฅ ๐ฅ
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ has-retraction f
โ is-subsingleton (has-section f)
at-most-one-section {๐ฅ} {๐ค} fe hfe {X} {Y} f (g , gf) (h , fh) = d
where
fe' : dfunext ๐ฅ ๐ฅ
fe' = hfunext-gives-dfunext hfe
a : invertible f
a = joyal-equivs-are-invertible f ((h , fh) , (g , gf))
b : is-singleton (fiber (ฮป h โ f โ h) id)
b = invertibles-are-equivs (ฮป h โ f โ h) (postcomp-invertible fe fe' f a) id
r : fiber (ฮป h โ f โ h) id โ has-section f
r (h , p) = (h , happly (f โ h) id p)
s : has-section f โ fiber (ฮป h โ f โ h) id
s (h , ฮท) = (h , fe' ฮท)
rs : (ฯ : has-section f) โ r (s ฯ) โก ฯ
rs (h , ฮท) = to-ฮฃ-โก' q
where
q : happly (f โ h) id (inverse (happly (f โ h) id) (hfe (f โ h) id) ฮท) โก ฮท
q = inverses-are-sections (happly (f โ h) id) (hfe (f โ h) id) ฮท
c : is-singleton (has-section f)
c = retract-of-singleton (r , s , rs) b
d : (ฯ : has-section f) โ h , fh โก ฯ
d = singletons-are-subsingletons (has-section f) c (h , fh)
at-most-one-retraction : hfunext ๐ค ๐ค
โ dfunext ๐ฅ ๐ค
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ has-section f
โ is-subsingleton (has-retraction f)
at-most-one-retraction {๐ค} {๐ฅ} hfe fe' {X} {Y} f (g , fg) (h , hf) = d
where
fe : dfunext ๐ค ๐ค
fe = hfunext-gives-dfunext hfe
a : invertible f
a = joyal-equivs-are-invertible f ((g , fg) , (h , hf))
b : is-singleton (fiber (ฮป h โ h โ f) id)
b = invertibles-are-equivs (ฮป h โ h โ f) (precomp-invertible fe' fe f a) id
r : fiber (ฮป h โ h โ f) id โ has-retraction f
r (h , p) = (h , happly (h โ f) id p)
s : has-retraction f โ fiber (ฮป h โ h โ f) id
s (h , ฮท) = (h , fe ฮท)
rs : (ฯ : has-retraction f) โ r (s ฯ) โก ฯ
rs (h , ฮท) = to-ฮฃ-โก' q
where
q : happly (h โ f) id (inverse (happly (h โ f) id) (hfe (h โ f) id) ฮท) โก ฮท
q = inverses-are-sections (happly (h โ f) id) (hfe (h โ f) id) ฮท
c : is-singleton (has-retraction f)
c = retract-of-singleton (r , s , rs) b
d : (ฯ : has-retraction f) โ h , hf โก ฯ
d = singletons-are-subsingletons (has-retraction f) c (h , hf)
being-joyal-equiv-is-subsingleton : hfunext ๐ค ๐ค
โ hfunext ๐ฅ ๐ฅ
โ dfunext ๐ฅ ๐ค
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ (f : X โ Y)
โ is-subsingleton (is-joyal-equiv f)
being-joyal-equiv-is-subsingleton feโ feโ feโ f = ร-is-subsingleton'
(at-most-one-section feโ feโ f ,
at-most-one-retraction feโ feโ f)
being-hae-is-subsingleton : dfunext ๐ฅ ๐ค
โ hfunext ๐ฅ ๐ฅ
โ dfunext ๐ค (๐ฅ โ ๐ค)
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-subsingleton (is-hae f)
being-hae-is-subsingleton feโ feโ feโ {X} {Y} f = subsingleton-criterion' ฮณ
where
a = ฮป g ฮต x
โ ((g (f x) , ฮต (f x)) โก (x , refl (f x))) โโจ i g ฮต x โฉ
(ฮฃ p ๊ g (f x) โก x , transport (ฮป - โ f - โก f x) p (ฮต (f x)) โก refl (f x)) โโจ ii g ฮต x โฉ
(ฮฃ p ๊ g (f x) โก x , ap f p โก ฮต (f x)) โ
where
i = ฮป g ฮต x โ ฮฃ-โก-โ (g (f x) , ฮต (f x)) (x , refl (f x))
ii = ฮป g ฮต x โ ฮฃ-cong (ฮป p โ transport-ap-โ f p (ฮต (f x)))
b = (ฮฃ (g , ฮต) ๊ has-section f , โ x โ (g (f x) , ฮต (f x)) โก (x , refl (f x))) โโจ i โฉ
(ฮฃ (g , ฮต) ๊ has-section f , โ x โ ฮฃ p ๊ g (f x) โก x , ap f p โก ฮต (f x)) โโจ ii โฉ
(ฮฃ g ๊ (Y โ X) , ฮฃ ฮต ๊ f โ g โผ id , โ x โ ฮฃ p ๊ g (f x) โก x , ap f p โก ฮต (f x)) โโจ iii โฉ
(ฮฃ g ๊ (Y โ X) , ฮฃ ฮต ๊ f โ g โผ id , ฮฃ ฮท ๊ g โ f โผ id , โ x โ ap f (ฮท x) โก ฮต (f x)) โโจ iv โฉ
is-hae f โ
where
i = ฮฃ-cong (ฮป (g , ฮต) โ ฮ -cong feโ feโ (a g ฮต))
ii = ฮฃ-assoc
iii = ฮฃ-cong (ฮป g โ ฮฃ-cong (ฮป ฮต โ ฮ ฮฃ-distr-โ))
iv = ฮฃ-cong (ฮป g โ ฮฃ-flip)
ฮณ : is-hae f โ is-subsingleton (is-hae f)
ฮณ (gโ , ฮตโ , ฮทโ , ฯโ) = i
where
c : (x : X) โ is-set (fiber f (f x))
c x = singletons-are-sets (fiber f (f x)) (haes-are-equivs f (gโ , ฮตโ , ฮทโ , ฯโ) (f x))
d : ((g , ฮต) : has-section f) โ is-subsingleton (โ x โ (g (f x) , ฮต (f x)) โก (x , refl (f x)))
d (g , ฮต) = ฮ -is-subsingleton feโ (ฮป x โ c x (g (f x) , ฮต (f x)) (x , refl (f x)))
e : is-subsingleton (ฮฃ (g , ฮต) ๊ has-section f , โ x โ (g (f x) , ฮต (f x)) โก (x , refl (f x)))
e = ฮฃ-is-subsingleton (at-most-one-section feโ feโ f (gโ , ฮตโ)) d
i : is-subsingleton (is-hae f)
i = equiv-to-subsingleton (โ-sym b) e
emptiness-is-subsingleton : dfunext ๐ค ๐คโ โ (X : ๐ค ฬ )
โ is-subsingleton (is-empty X)
emptiness-is-subsingleton fe X f g = fe (ฮป x โ !๐ (f x โก g x) (f x))
+-is-subsingleton : {P : ๐ค ฬ } {Q : ๐ฅ ฬ }
โ is-subsingleton P
โ is-subsingleton Q
โ (P โ Q โ ๐) โ is-subsingleton (P + Q)
+-is-subsingleton {๐ค} {๐ฅ} {P} {Q} i j f = ฮณ
where
ฮณ : (x y : P + Q) โ x โก y
ฮณ (inl p) (inl p') = ap inl (i p p')
ฮณ (inl p) (inr q) = !๐ (inl p โก inr q) (f p q)
ฮณ (inr q) (inl p) = !๐ (inr q โก inl p) (f p q)
ฮณ (inr q) (inr q') = ap inr (j q q')
+-is-subsingleton' : dfunext ๐ค ๐คโ
โ {P : ๐ค ฬ } โ is-subsingleton P โ is-subsingleton (P + ยฌ P)
+-is-subsingleton' fe {P} i = +-is-subsingleton i
(emptiness-is-subsingleton fe P)
(ฮป p n โ n p)
EM-is-subsingleton : dfunext (๐ค โบ) ๐ค
โ dfunext ๐ค ๐ค
โ dfunext ๐ค ๐คโ
โ is-subsingleton (EM ๐ค)
EM-is-subsingleton feโบ fe feโ = ฮ -is-subsingleton feโบ
(ฮป P โ ฮ -is-subsingleton fe
(ฮป i โ +-is-subsingleton' feโ i))
propext : โ ๐ค โ ๐ค โบ ฬ
propext ๐ค = {P Q : ๐ค ฬ } โ is-prop P โ is-prop Q โ (P โ Q) โ (Q โ P) โ P โก Q
global-propext : ๐คฯ
global-propext = โ {๐ค} โ propext ๐ค
univalence-gives-propext : is-univalent ๐ค โ propext ๐ค
univalence-gives-propext ua {P} {Q} i j f g = EqโId ua P Q ฮณ
where
ฮณ : P โ Q
ฮณ = logically-equivalent-subsingletons-are-equivalent P Q i j (f , g)
ฮฉ : (๐ค : Universe) โ ๐ค โบ ฬ
ฮฉ ๐ค = ฮฃ P ๊ ๐ค ฬ , is-subsingleton P
_holds : ฮฉ ๐ค โ ๐ค ฬ
_holds (P , i) = P
holds-is-subsingleton : (p : ฮฉ ๐ค) โ is-subsingleton (p holds)
holds-is-subsingleton (P , i) = i
ฮฉ-ext : dfunext ๐ค ๐ค โ propext ๐ค โ {p q : ฮฉ ๐ค}
โ (p holds โ q holds) โ (q holds โ p holds) โ p โก q
ฮฉ-ext {๐ค} fe pe {p} {q} f g = to-subtype-โก
(ฮป _ โ being-subsingleton-is-subsingleton fe)
(pe (holds-is-subsingleton p) (holds-is-subsingleton q) f g)
ฮฉ-is-a-set : dfunext ๐ค ๐ค โ propext ๐ค โ is-set (ฮฉ ๐ค)
ฮฉ-is-a-set {๐ค} fe pe = types-with-wconstant-โก-endomaps-are-sets (ฮฉ ๐ค) c
where
A : (p q : ฮฉ ๐ค) โ ๐ค ฬ
A p q = (p holds โ q holds) ร (q holds โ p holds)
i : (p q : ฮฉ ๐ค) โ is-subsingleton (A p q)
i p q = ฮฃ-is-subsingleton
(ฮ -is-subsingleton fe
(ฮป _ โ holds-is-subsingleton q))
(ฮป _ โ ฮ -is-subsingleton fe (ฮป _ โ holds-is-subsingleton p))
g : (p q : ฮฉ ๐ค) โ p โก q โ A p q
g p q e = (u , v)
where
a : p holds โก q holds
a = ap _holds e
u : p holds โ q holds
u = Idโfun a
v : q holds โ p holds
v = Idโfun (a โปยน)
h : (p q : ฮฉ ๐ค) โ A p q โ p โก q
h p q (u , v) = ฮฉ-ext fe pe u v
f : (p q : ฮฉ ๐ค) โ p โก q โ p โก q
f p q e = h p q (g p q e)
k : (p q : ฮฉ ๐ค) (d e : p โก q) โ f p q d โก f p q e
k p q d e = ap (h p q) (i p q (g p q d) (g p q e))
c : (p q : ฮฉ ๐ค) โ ฮฃ f ๊ (p โก q โ p โก q), wconstant f
c p q = (f p q , k p q)
powersets-are-sets : hfunext ๐ค (๐ฅ โบ)
โ dfunext ๐ฅ ๐ฅ
โ propext ๐ฅ
โ {X : ๐ค ฬ } โ is-set (X โ ฮฉ ๐ฅ)
powersets-are-sets fe fe' pe = ฮ -is-set fe (ฮป x โ ฮฉ-is-a-set fe' pe)
๐ : ๐ค ฬ โ ๐ค โบ ฬ
๐ {๐ค} X = X โ ฮฉ ๐ค
powersets-are-sets' : Univalence
โ {X : ๐ค ฬ } โ is-set (๐ X)
powersets-are-sets' {๐ค} ua = powersets-are-sets
(univalence-gives-hfunext' (ua ๐ค) (ua (๐ค โบ)))
(univalence-gives-dfunext (ua ๐ค))
(univalence-gives-propext (ua ๐ค))
_โ_ : {X : ๐ค ฬ } โ X โ ๐ X โ ๐ค ฬ
x โ A = A x holds
_โ_ : {X : ๐ค ฬ } โ X โ ๐ X โ ๐ค ฬ
x โ A = ยฌ(x โ A)
_โ_ : {X : ๐ค ฬ } โ ๐ X โ ๐ X โ ๐ค ฬ
A โ B = โ x โ x โ A โ x โ B
โ-is-subsingleton : {X : ๐ค ฬ } (A : ๐ X) (x : X) โ is-subsingleton (x โ A)
โ-is-subsingleton A x = holds-is-subsingleton (A x)
โ-is-subsingleton : dfunext ๐ค ๐ค
โ {X : ๐ค ฬ } (A B : ๐ X) โ is-subsingleton (A โ B)
โ-is-subsingleton fe A B = ฮ -is-subsingleton fe
(ฮป x โ ฮ -is-subsingleton fe
(ฮป _ โ โ-is-subsingleton B x))
โ-refl : {X : ๐ค ฬ } (A : ๐ X) โ A โ A
โ-refl A x = ๐๐ (x โ A)
โ-refl-consequence : {X : ๐ค ฬ } (A B : ๐ X)
โ A โก B โ (A โ B) ร (B โ A)
โ-refl-consequence {X} A A (refl A) = โ-refl A , โ-refl A
subset-extensionality : propext ๐ค
โ dfunext ๐ค ๐ค
โ dfunext ๐ค (๐ค โบ)
โ {X : ๐ค ฬ } {A B : ๐ X}
โ A โ B โ B โ A โ A โก B
subset-extensionality pe fe fe' {X} {A} {B} h k = fe' ฯ
where
ฯ : (x : X) โ A x โก B x
ฯ x = to-subtype-โก
(ฮป _ โ being-subsingleton-is-subsingleton fe)
(pe (holds-is-subsingleton (A x)) (holds-is-subsingleton (B x))
(h x) (k x))
subset-extensionality' : Univalence
โ {X : ๐ค ฬ } {A B : ๐ X}
โ A โ B โ B โ A โ A โก B
subset-extensionality' {๐ค} ua = subset-extensionality
(univalence-gives-propext (ua ๐ค))
(univalence-gives-dfunext (ua ๐ค))
(univalence-gives-dfunext' (ua ๐ค) (ua (๐ค โบ)))
prop-univalence prop-univalence' : (๐ค : Universe) โ ๐ค โบ ฬ
prop-univalence ๐ค = (A : ๐ค ฬ ) โ is-prop A โ (X : ๐ค ฬ ) โ is-equiv (IdโEq A X)
prop-univalence' ๐ค = (A : ๐ค ฬ ) โ is-prop A โ (X : ๐ค ฬ ) โ is-prop X โ is-equiv (IdโEq A X)
prop-univalence-agreement : prop-univalence' ๐ค โ prop-univalence ๐ค
prop-univalence-agreement = (ฮป pu' A i X e โ pu' A i X (equiv-to-subsingleton (โ-sym e) i) e) ,
(ฮป pu A i X _ โ pu A i X)
props-form-exponential-ideal
props-are-closed-under-ฮ
prop-vvfunext
prop-hfunext : โ ๐ค โ ๐ค โบ ฬ
props-form-exponential-ideal ๐ค = (X A : ๐ค ฬ ) โ is-prop A โ is-prop (X โ A)
props-are-closed-under-ฮ ๐ค = {X : ๐ค ฬ } {A : X โ ๐ค ฬ }
โ is-prop X
โ ((x : X) โ is-prop (A x))
โ is-prop (ฮ A)
prop-vvfunext ๐ค = {X : ๐ค ฬ } {A : X โ ๐ค ฬ }
โ is-prop X
โ ((x : X) โ is-singleton (A x))
โ is-singleton (ฮ A)
prop-hfunext ๐ค = {X : ๐ค ฬ } {A : X โ ๐ค ฬ }
โ is-prop X
โ (f g : ฮ A) โ is-equiv (happly f g)
first-propositional-function-extensionality-agreement :
(props-are-closed-under-ฮ ๐ค โ prop-vvfunext ๐ค)
ร (prop-vvfunext ๐ค โ prop-hfunext ๐ค)
ร (prop-hfunext ๐ค โ props-are-closed-under-ฮ ๐ค)
second-propositional-function-extensionality-agreement :
propext ๐ค โ (props-form-exponential-ideal ๐ค โ props-are-closed-under-ฮ ๐ค)
characterization-of-propositional-univalence : prop-univalence ๐ค
โ (propext ๐ค ร props-are-closed-under-ฮ ๐ค)
prop-univalence-gives-propext : prop-univalence ๐ค โ propext ๐ค
prop-univalence-gives-propext pu {P} {Q} i j f g = ฮด
where
ฮณ : P โ Q
ฮณ = logically-equivalent-subsingletons-are-equivalent P Q i j (f , g)
ฮด : P โก Q
ฮด = inverse (IdโEq P Q) (pu P i Q) ฮณ
prop-โ-induction : (๐ค ๐ฅ : Universe) โ (๐ค โ ๐ฅ)โบ ฬ
prop-โ-induction ๐ค ๐ฅ = (P : ๐ค ฬ )
โ is-prop P
โ (A : (X : ๐ค ฬ ) โ P โ X โ ๐ฅ ฬ )
โ A P (id-โ P) โ (X : ๐ค ฬ ) (e : P โ X) โ A X e
prop-J-equiv : prop-univalence ๐ค
โ (๐ฅ : Universe) โ prop-โ-induction ๐ค ๐ฅ
prop-J-equiv {๐ค} pu ๐ฅ P i A a X e = ฮณ
where
A' : (X : ๐ค ฬ ) โ P โก X โ ๐ฅ ฬ
A' X q = A X (IdโEq P X q)
f : (X : ๐ค ฬ ) (q : P โก X) โ A' X q
f = โ P A' a
r : P โก X
r = inverse (IdโEq P X) (pu P i X) e
g : A X (IdโEq P X r)
g = f X r
ฮณ : A X (id e)
ฮณ = transport (A X) (inverses-are-sections (IdโEq P X) (pu P i X) e) g
prop-precomp-is-equiv : prop-univalence ๐ค
โ (X Y Z : ๐ค ฬ )
โ is-prop X
โ (f : X โ Y)
โ is-equiv f
โ is-equiv (ฮป (g : Y โ Z) โ g โ f)
prop-precomp-is-equiv {๐ค} pu X Y Z i f f-is-equiv =
prop-J-equiv pu ๐ค X i (ฮป _ e โ is-equiv (ฮป g โ g โ โ e โ))
(id-is-equiv (X โ Z)) Y (f , f-is-equiv)
prop-univalence-gives-props-form-exponential-ideal : prop-univalence ๐ค
โ props-form-exponential-ideal ๐ค
prop-univalence-gives-props-form-exponential-ideal {๐ค} pu X A A-is-prop = ฮณ
where
ฮ : ๐ค ฬ
ฮ = ฮฃ aโ ๊ A , ฮฃ aโ ๊ A , aโ โก aโ
ฮด : A โ ฮ
ฮด a = (a , a , refl a)
ฯโ ฯโ : ฮ โ A
ฯโ (aโ , aโ , a) = aโ
ฯโ (aโ , aโ , a) = aโ
ฮด-is-equiv : is-equiv ฮด
ฮด-is-equiv = invertibles-are-equivs ฮด (ฯโ , ฮท , ฮต)
where
ฮท : (a : A) โ ฯโ (ฮด a) โก a
ฮท a = refl a
ฮต : (d : ฮ) โ ฮด (ฯโ d) โก d
ฮต (a , a , refl a) = refl (a , a , refl a)
ฯ : (ฮ โ A) โ (A โ A)
ฯ ฯ = ฯ โ ฮด
ฯ-is-equiv : is-equiv ฯ
ฯ-is-equiv = prop-precomp-is-equiv pu A ฮ A A-is-prop ฮด ฮด-is-equiv
p : ฯ ฯโ โก ฯ ฯโ
p = refl (๐๐ A)
q : ฯโ โก ฯโ
q = equivs-are-lc ฯ ฯ-is-equiv p
h : (fโ fโ : X โ A) โ fโ โผ fโ
h fโ fโ x = A-is-prop (fโ x) (fโ x)
ฮณ : (fโ fโ : X โ A) โ fโ โก fโ
ฮณ fโ fโ = ap (ฮป ฯ x โ ฯ (fโ x , fโ x , h fโ fโ x)) q
props-are-closed-under-ฮ -gives-prop-vvfunext : props-are-closed-under-ฮ ๐ค โ prop-vvfunext ๐ค
props-are-closed-under-ฮ -gives-prop-vvfunext c {X} {A} X-is-prop A-is-prop-valued = ฮณ
where
f : ฮ A
f x = center (A x) (A-is-prop-valued x)
d : (g : ฮ A) โ f โก g
d = c X-is-prop (ฮป (x : X) โ singletons-are-subsingletons (A x) (A-is-prop-valued x)) f
ฮณ : is-singleton (ฮ A)
ฮณ = f , d
prop-vvfunext-gives-prop-hfunext : prop-vvfunext ๐ค โ prop-hfunext ๐ค
prop-vvfunext-gives-prop-hfunext vfe {X} {Y} X-is-prop f = ฮณ
where
a : (x : X) โ is-singleton (ฮฃ y ๊ Y x , f x โก y)
a x = singleton-types'-are-singletons (Y x) (f x)
c : is-singleton (ฮ x ๊ X , ฮฃ y ๊ Y x , f x โก y)
c = vfe X-is-prop a
ฯ : (ฮฃ g ๊ ฮ Y , f โผ g) โ (ฮ x ๊ X , ฮฃ y ๊ Y x , f x โก y)
ฯ = โ-gives-โท ฮ ฮฃ-distr-โ
d : is-singleton (ฮฃ g ๊ ฮ Y , f โผ g)
d = retract-of-singleton ฯ c
e : (ฮฃ g ๊ ฮ Y , f โก g) โ (ฮฃ g ๊ ฮ Y , f โผ g)
e = Natฮฃ (happly f)
i : is-equiv e
i = maps-of-singletons-are-equivs e (singleton-types'-are-singletons (ฮ Y) f) d
ฮณ : (g : ฮ Y) โ is-equiv (happly f g)
ฮณ = Natฮฃ-equiv-gives-fiberwise-equiv (happly f) i
prop-hfunext-gives-props-are-closed-under-ฮ : prop-hfunext ๐ค โ props-are-closed-under-ฮ ๐ค
prop-hfunext-gives-props-are-closed-under-ฮ hfe {X} {A} X-is-prop A-is-prop-valued f g = ฮณ
where
ฮณ : f โก g
ฮณ = inverse (happly f g) (hfe X-is-prop f g) (ฮป x โ A-is-prop-valued x (f x) (g x))
first-propositional-function-extensionality-agreement =
props-are-closed-under-ฮ -gives-prop-vvfunext ,
prop-vvfunext-gives-prop-hfunext ,
prop-hfunext-gives-props-are-closed-under-ฮ
prop-vvfunext-gives-props-are-closed-under-ฮ : prop-vvfunext ๐ค โ props-are-closed-under-ฮ ๐ค
prop-vvfunext-gives-props-are-closed-under-ฮ vfe =
prop-hfunext-gives-props-are-closed-under-ฮ (prop-vvfunext-gives-prop-hfunext vfe)
being-prop-is-prop : prop-vvfunext ๐ค
โ {X : ๐ค ฬ } โ is-prop (is-prop X)
being-prop-is-prop vfe {X} i j = ฮณ
where
k : is-set X
k = subsingletons-are-sets X i
a : (x y : X) โ i x y โก j x y
a x y = k x y (i x y) (j x y)
b : (x : X) โ i x โก j x
b x = prop-vvfunext-gives-props-are-closed-under-ฮ vfe i
(subsingletons-are-sets X i x) (i x) (j x)
c : (x : X) โ is-prop ((y : X) โ x โก y)
c x = singletons-are-subsingletons ((y : X) โ x โก y)
(vfe i (ฮป y โ pointed-subsingletons-are-singletons (x โก y) (i x y) (k x y)))
ฮณ : i โก j
ฮณ = prop-vvfunext-gives-props-are-closed-under-ฮ vfe i c i j
being-singleton-is-prop : props-are-closed-under-ฮ ๐ค
โ {X : ๐ค ฬ } โ is-prop (is-singleton X)
being-singleton-is-prop c {X} (x , ฯ) (y , ฮณ) = p
where
i : is-subsingleton X
i = singletons-are-subsingletons X (y , ฮณ)
s : is-set X
s = subsingletons-are-sets X i
a : (z : X) โ is-subsingleton ((t : X) โ z โก t)
a z = c i (ฮป x โ s z x)
b : x โก y
b = ฯ y
p : (x , ฯ) โก (y , ฮณ)
p = to-subtype-โก a b
Id-of-props-is-prop : propext ๐ค
โ prop-vvfunext ๐ค
โ (P : ๐ค ฬ )
โ is-prop P
โ (X : ๐ค ฬ ) โ is-prop (P โก X)
Id-of-props-is-prop {๐ค} pe vfe P i = Hedberg P (ฮป X โ h X , k X)
where
module _ (X : ๐ค ฬ ) where
f : P โก X โ is-prop X ร (P โ X)
f p = transport is-prop p i , Idโfun p , (Idโfun (p โปยน))
g : is-prop X ร (P โ X) โ P โก X
g (l , ฯ , ฯ) = pe i l ฯ ฯ
h : P โก X โ P โก X
h = g โ f
j : is-prop (is-prop X ร (P โ X))
j = ร-is-subsingleton'
((ฮป (_ : P โ X) โ being-prop-is-prop vfe) ,
(ฮป (l : is-prop X)
โ ร-is-subsingleton
(prop-vvfunext-gives-props-are-closed-under-ฮ vfe i (ฮป _ โ l))
(prop-vvfunext-gives-props-are-closed-under-ฮ vfe l (ฮป _ โ i))))
k : wconstant h
k p q = ap g (j (f p) (f q))
being-equiv-of-props-is-prop : props-are-closed-under-ฮ ๐ค
โ {X Y : ๐ค ฬ }
โ is-prop X
โ is-prop Y
โ (f : X โ Y) โ is-prop (is-equiv f)
being-equiv-of-props-is-prop c i j f = c j (ฮป y โ being-singleton-is-prop c)
propext-and-props-are-closed-under-ฮ -give-prop-univalence : propext ๐ค
โ props-are-closed-under-ฮ ๐ค
โ prop-univalence ๐ค
propext-and-props-are-closed-under-ฮ -give-prop-univalence pe c A i X = ฮณ
where
l : A โ X โ is-subsingleton X
l e = equiv-to-subsingleton (โ-sym e) i
eqtoid : A โ X โ A โก X
eqtoid e = pe i
(equiv-to-subsingleton (โ-sym e) i)
โ e โ
โ โ-sym e โ
m : is-subsingleton (A โ X)
m (fโ , kโ) (fโ , kโ) = ฮด
where
j : (f : A โ X) โ is-prop (is-equiv f)
j = being-equiv-of-props-is-prop c i
(equiv-to-subsingleton (โ-sym (fโ , kโ)) i)
p : fโ โก fโ
p = c i (ฮป (a : A) โ l (fโ , kโ)) fโ fโ
ฮด : (fโ , kโ) โก (fโ , kโ)
ฮด = to-subtype-โก j p
ฮต : (e : A โ X) โ IdโEq A X (eqtoid e) โก e
ฮต e = m (IdโEq A X (eqtoid e)) e
ฮท : (q : A โก X) โ eqtoid (IdโEq A X q) โก q
ฮท q = Id-of-props-is-prop pe
(props-are-closed-under-ฮ -gives-prop-vvfunext c)
A i X
(eqtoid (IdโEq A X q)) q
ฮณ : is-equiv (IdโEq A X)
ฮณ = invertibles-are-equivs (IdโEq A X) (eqtoid , ฮท , ฮต)
prop-postcomp-invertible : {X Y A : ๐ค ฬ }
โ props-form-exponential-ideal ๐ค
โ is-prop X
โ is-prop Y
โ (f : X โ Y)
โ invertible f
โ invertible (ฮป (h : A โ X) โ f โ h)
prop-postcomp-invertible {๐ค} {X} {Y} {A} pei i j f (g , ฮท , ฮต) = ฮณ
where
f' : (A โ X) โ (A โ Y)
f' h = f โ h
g' : (A โ Y) โ (A โ X)
g' k = g โ k
ฮท' : (h : A โ X) โ g' (f' h) โก h
ฮท' h = pei A X i (g' (f' h)) h
ฮต' : (k : A โ Y) โ f' (g' k) โก k
ฮต' k = pei A Y j (f' (g' k)) k
ฮณ : invertible f'
ฮณ = (g' , ฮท' , ฮต')
prop-postcomp-is-equiv : {X Y A : ๐ค ฬ }
โ props-form-exponential-ideal ๐ค
โ is-prop X
โ is-prop Y
โ (f : X โ Y)
โ is-equiv f
โ is-equiv (ฮป (h : A โ X) โ f โ h)
prop-postcomp-is-equiv pei i j f e =
invertibles-are-equivs
(ฮป h โ f โ h)
(prop-postcomp-invertible pei i j f (equivs-are-invertible f e))
props-form-exponential-ideal-gives-vvfunext : props-form-exponential-ideal ๐ค โ prop-vvfunext ๐ค
props-form-exponential-ideal-gives-vvfunext {๐ค} pei {X} {A} X-is-prop ฯ = ฮณ
where
f : ฮฃ A โ X
f = prโ
A-is-prop-valued : (x : X) โ is-prop (A x)
A-is-prop-valued x = singletons-are-subsingletons (A x) (ฯ x)
k : is-prop (ฮฃ A)
k = ฮฃ-is-subsingleton X-is-prop A-is-prop-valued
f-is-equiv : is-equiv f
f-is-equiv = prโ-is-equiv ฯ
g : (X โ ฮฃ A) โ (X โ X)
g h = f โ h
e : is-equiv g
e = prop-postcomp-is-equiv pei k X-is-prop f f-is-equiv
i : is-singleton (ฮฃ h ๊ (X โ ฮฃ A), f โ h โก ๐๐ X)
i = e (๐๐ X)
r : (ฮฃ h ๊ (X โ ฮฃ A), f โ h โก ๐๐ X) โ ฮ A
r (h , p) x = transport A (happly (f โ h) (๐๐ X) p x) (prโ (h x))
s : ฮ A โ (ฮฃ h ๊ (X โ ฮฃ A), f โ h โก ๐๐ X)
s ฯ = (ฮป x โ x , ฯ x) , refl (๐๐ X)
ฮท : โ ฯ โ r (s ฯ) โก ฯ
ฮท ฯ = refl (r (s ฯ))
ฮณ : is-singleton (ฮ A)
ฮณ = retract-of-singleton (r , s , ฮท) i
prop-univalence-gives-props-are-closed-under-ฮ : prop-univalence ๐ค โ props-are-closed-under-ฮ ๐ค
prop-univalence-gives-props-are-closed-under-ฮ pu =
prop-vvfunext-gives-props-are-closed-under-ฮ
(props-form-exponential-ideal-gives-vvfunext
(prop-univalence-gives-props-form-exponential-ideal pu))
propext-and-props-closed-under-ฮ -give-props-form-exponential-ideal :
propext ๐ค
โ props-are-closed-under-ฮ ๐ค
โ props-form-exponential-ideal ๐ค
propext-and-props-closed-under-ฮ -give-props-form-exponential-ideal pe c =
prop-univalence-gives-props-form-exponential-ideal
(propext-and-props-are-closed-under-ฮ -give-prop-univalence pe c)
props-form-exponential-ideal-gives-props-are-closed-under-ฮ :
props-form-exponential-ideal ๐ค
โ props-are-closed-under-ฮ ๐ค
props-form-exponential-ideal-gives-props-are-closed-under-ฮ pei =
prop-vvfunext-gives-props-are-closed-under-ฮ
(props-form-exponential-ideal-gives-vvfunext pei)
characterization-of-propositional-univalence {๐ค} = ฮฑ , ฮฒ
where
ฮฑ : prop-univalence ๐ค โ propext ๐ค ร props-are-closed-under-ฮ ๐ค
ฮฑ pu = prop-univalence-gives-propext pu , prop-univalence-gives-props-are-closed-under-ฮ pu
ฮฒ : propext ๐ค ร props-are-closed-under-ฮ ๐ค โ prop-univalence ๐ค
ฮฒ (pe , fe) = propext-and-props-are-closed-under-ฮ -give-prop-univalence pe fe
second-propositional-function-extensionality-agreement {๐ค} pe =
props-form-exponential-ideal-gives-props-are-closed-under-ฮ ,
propext-and-props-closed-under-ฮ -give-props-form-exponential-ideal pe
id-โ-left : dfunext ๐ฅ (๐ค โ ๐ฅ)
โ dfunext (๐ค โ ๐ฅ) (๐ค โ ๐ฅ)
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (ฮฑ : X โ Y)
โ id-โ X โ ฮฑ โก ฮฑ
id-โ-left fe fe' ฮฑ = to-subtype-โก (being-equiv-is-subsingleton fe fe') (refl _)
โ-sym-left-inverse : dfunext ๐ฅ ๐ฅ
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (ฮฑ : X โ Y)
โ โ-sym ฮฑ โ ฮฑ โก id-โ Y
โ-sym-left-inverse fe (f , e) = to-subtype-โก (being-equiv-is-subsingleton fe fe) p
where
p : f โ inverse f e โก id
p = fe (inverses-are-sections f e)
โ-sym-right-inverse : dfunext ๐ค ๐ค
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (ฮฑ : X โ Y)
โ ฮฑ โ โ-sym ฮฑ โก id-โ X
โ-sym-right-inverse fe (f , e) = to-subtype-โก (being-equiv-is-subsingleton fe fe) p
where
p : inverse f e โ f โก id
p = fe (inverses-are-retractions f e)
โ-Sym : dfunext ๐ฅ (๐ค โ ๐ฅ)
โ dfunext ๐ค (๐ค โ ๐ฅ)
โ dfunext (๐ค โ ๐ฅ) (๐ค โ ๐ฅ)
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ (X โ Y) โ (Y โ X)
โ-Sym feโ feโ feโ = โ-sym , โ-sym-is-equiv feโ feโ feโ
โ-Comp : dfunext ๐ฆ (๐ฅ โ ๐ฆ)
โ dfunext (๐ฅ โ ๐ฆ) (๐ฅ โ ๐ฆ )
โ dfunext ๐ฅ ๐ฅ
โ dfunext ๐ฆ (๐ค โ ๐ฆ)
โ dfunext (๐ค โ ๐ฆ) (๐ค โ ๐ฆ )
โ dfunext ๐ค ๐ค
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (Z : ๐ฆ ฬ )
โ X โ Y โ (Y โ Z) โ (X โ Z)
โ-Comp feโ feโ feโ feโ feโ feโ
Z ฮฑ = invertibility-gives-โ (ฮฑ โ_)
((โ-sym ฮฑ โ_) , p , q)
where
p = ฮป ฮฒ โ โ-sym ฮฑ โ (ฮฑ โ ฮฒ) โกโจ โ-assoc feโ feโ (โ-sym ฮฑ) ฮฑ ฮฒ โฉ
(โ-sym ฮฑ โ ฮฑ) โ ฮฒ โกโจ ap (_โ ฮฒ) (โ-sym-left-inverse feโ ฮฑ) โฉ
id-โ _ โ ฮฒ โกโจ id-โ-left feโ feโ _ โฉ
ฮฒ โ
q = ฮป ฮณ โ ฮฑ โ (โ-sym ฮฑ โ ฮณ) โกโจ โ-assoc feโ feโ ฮฑ (โ-sym ฮฑ) ฮณ โฉ
(ฮฑ โ โ-sym ฮฑ) โ ฮณ โกโจ ap (_โ ฮณ) (โ-sym-right-inverse feโ
ฮฑ) โฉ
id-โ _ โ ฮณ โกโจ id-โ-left feโ feโ _ โฉ
ฮณ โ
Eq-Eq-cong' : dfunext ๐ฅ (๐ค โ ๐ฅ)
โ dfunext (๐ค โ ๐ฅ) (๐ค โ ๐ฅ)
โ dfunext ๐ค ๐ค
โ dfunext ๐ฅ (๐ฅ โ ๐ฆ)
โ dfunext (๐ฅ โ ๐ฆ) (๐ฅ โ ๐ฆ)
โ dfunext ๐ฆ ๐ฆ
โ dfunext ๐ฆ (๐ฅ โ ๐ฆ)
โ dfunext ๐ฅ ๐ฅ
โ dfunext ๐ฆ (๐ฆ โ ๐ฃ)
โ dfunext (๐ฆ โ ๐ฃ) (๐ฆ โ ๐ฃ)
โ dfunext ๐ฃ ๐ฃ
โ dfunext ๐ฃ (๐ฆ โ ๐ฃ)
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {A : ๐ฆ ฬ } {B : ๐ฃ ฬ }
โ X โ A โ Y โ B โ (X โ Y) โ (A โ B)
Eq-Eq-cong' feโ feโ feโ feโ feโ feโ
feโ feโ feโ feโ feโโ feโโ {X} {Y} {A} {B} ฮฑ ฮฒ =
X โ Y โโจ โ-Comp feโ feโ feโ feโ feโ feโ
Y (โ-sym ฮฑ) โฉ
A โ Y โโจ โ-Sym feโ feโ feโ โฉ
Y โ A โโจ โ-Comp feโ feโ feโ feโ feโ feโโ A (โ-sym ฮฒ) โฉ
B โ A โโจ โ-Sym feโ feโโ feโ โฉ
A โ B โ
Eq-Eq-cong : global-dfunext
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {A : ๐ฆ ฬ } {B : ๐ฃ ฬ }
โ X โ A โ Y โ B โ (X โ Y) โ (A โ B)
Eq-Eq-cong fe = Eq-Eq-cong' fe fe fe fe fe fe fe fe fe fe fe fe
is-embedding : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ ๐ค โ ๐ฅ ฬ
is-embedding f = (y : codomain f) โ is-subsingleton (fiber f y)
being-embedding-is-subsingleton : global-dfunext
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-subsingleton (is-embedding f)
being-embedding-is-subsingleton fe f =
ฮ -is-subsingleton fe
(ฮป x โ being-subsingleton-is-subsingleton fe)
prโ-embedding : (A : ๐ค ฬ ) (X : ๐ฅ ฬ )
โ is-subsingleton A
โ is-embedding (ฮป (z : A ร X) โ prโ z)
prโ-embedding A X i x ((a , x) , refl x) ((b , x) , refl x) = p
where
p : ((a , x) , refl x) โก ((b , x) , refl x)
p = ap (ฮป - โ ((- , x) , refl x)) (i a b)
prโ-is-embedding : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ }
โ ((x : X) โ is-subsingleton (A x))
โ is-embedding (ฮป (ฯ : ฮฃ A) โ prโ ฯ)
prโ-is-embedding i x ((x , a) , refl x) ((x , a') , refl x) = ฮณ
where
p : a โก a'
p = i x a a'
ฮณ : (x , a) , refl x โก (x , a') , refl x
ฮณ = ap (ฮป - โ (x , -) , refl x) p
equivs-are-embeddings : {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
(f : X โ Y)
โ is-equiv f
โ is-embedding f
equivs-are-embeddings f i y = singletons-are-subsingletons (fiber f y) (i y)
id-is-embedding : {X : ๐ค ฬ } โ is-embedding (๐๐ X)
id-is-embedding {๐ค} {X} = equivs-are-embeddings id (id-is-equiv X)
โ-embedding : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {Z : ๐ฆ ฬ }
{f : X โ Y} {g : Y โ Z}
โ is-embedding g
โ is-embedding f
โ is-embedding (g โ f)
โ-embedding {๐ค} {๐ฅ} {๐ฆ} {X} {Y} {Z} {f} {g} d e = h
where
A : (z : Z) โ ๐ค โ ๐ฅ โ ๐ฆ ฬ
A z = ฮฃ (y , p) ๊ fiber g z , fiber f y
i : (z : Z) โ is-subsingleton (A z)
i z = ฮฃ-is-subsingleton (d z) (ฮป w โ e (prโ w))
ฯ : (z : Z) โ fiber (g โ f) z โ A z
ฯ z (x , p) = (f x , p) , x , refl (f x)
ฮณ : (z : Z) โ A z โ fiber (g โ f) z
ฮณ z ((_ , p) , x , refl _) = x , p
ฮท : (z : Z) (t : fiber (g โ f) z) โ ฮณ z (ฯ z t) โก t
ฮท _ (x , refl _) = refl (x , refl ((g โ f) x))
h : (z : Z) โ is-subsingleton (fiber (g โ f) z)
h z = lc-maps-reflect-subsingletons (ฯ z) (sections-are-lc (ฯ z) (ฮณ z , ฮท z)) (i z)
embedding-lemma : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ ((x : X) โ is-singleton (fiber f (f x)))
โ is-embedding f
embedding-lemma f ฯ = ฮณ
where
ฮณ : (y : codomain f) (u v : fiber f y) โ u โก v
ฮณ y (x , p) v = j (x , p) v
where
q : fiber f (f x) โก fiber f y
q = ap (fiber f) p
i : is-singleton (fiber f y)
i = transport is-singleton q (ฯ x)
j : is-subsingleton (fiber f y)
j = singletons-are-subsingletons (fiber f y) i
embedding-criterion : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ ((x x' : X) โ (f x โก f x') โ (x โก x'))
โ is-embedding f
embedding-criterion f e = embedding-lemma f b
where
X = domain f
a : (x : X) โ (ฮฃ x' ๊ X , f x' โก f x) โ (ฮฃ x' ๊ X , x' โก x)
a x = ฮฃ-cong (ฮป x' โ e x' x)
a' : (x : X) โ fiber f (f x) โ singleton-type x
a' = a
b : (x : X) โ is-singleton (fiber f (f x))
b x = equiv-to-singleton (a' x) (singleton-types-are-singletons X x)
ap-is-equiv-gives-embedding : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ ((x x' : X) โ is-equiv (ap f {x} {x'}))
โ is-embedding f
ap-is-equiv-gives-embedding f i = embedding-criterion f
(ฮป x' x โ โ-sym (ap f {x'} {x} , i x' x))
embedding-gives-ap-is-equiv : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-embedding f
โ (x x' : X) โ is-equiv (ap f {x} {x'})
embedding-gives-ap-is-equiv {๐ค} {๐ฅ} {X} f e = ฮณ
where
d : (x' : X) โ (ฮฃ x ๊ X , f x' โก f x) โ (ฮฃ x ๊ X , f x โก f x')
d x' = ฮฃ-cong (ฮป x โ โปยน-โ (f x') (f x))
s : (x' : X) โ is-subsingleton (ฮฃ x ๊ X , f x' โก f x)
s x' = equiv-to-subsingleton (d x') (e (f x'))
ฮณ : (x x' : X) โ is-equiv (ap f {x} {x'})
ฮณ x = singleton-equiv-lemma x (ฮป x' โ ap f {x} {x'})
(pointed-subsingletons-are-singletons
(ฮฃ x' ๊ X , f x โก f x') (x , (refl (f x))) (s x))
embedding-criterion-converse : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-embedding f
โ ((x' x : X) โ (f x' โก f x) โ (x' โก x))
embedding-criterion-converse f e x' x = โ-sym
(ap f {x'} {x} ,
embedding-gives-ap-is-equiv f e x' x)
embeddings-are-lc : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-embedding f
โ left-cancellable f
embeddings-are-lc f e {x} {y} = โ embedding-criterion-converse f e x y โ
lc-maps-into-sets-are-embeddings : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ left-cancellable f
โ is-set Y
โ is-embedding f
lc-maps-into-sets-are-embeddings {๐ค} {๐ฅ} {X} {Y} f lc i y = ฮณ
where
ฮณ : is-subsingleton (ฮฃ x ๊ X , f x โก y)
ฮณ (x , p) (x' , p') = to-subtype-โก j q
where
j : (x : X) โ is-subsingleton (f x โก y)
j x = i (f x) y
q : x โก x'
q = lc (f x โกโจ p โฉ
y โกโจ p' โปยน โฉ
f x' โ)
embedding-with-section-is-equiv : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-embedding f
โ has-section f
โ is-equiv f
embedding-with-section-is-equiv f i (g , ฮท) y = pointed-subsingletons-are-singletons
(fiber f y) (g y , ฮท y) (i y)
Natฮ : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {B : X โ ๐ฆ ฬ } โ Nat A B โ ฮ A โ ฮ B
Natฮ ฯ f x = ฯ x (f x)
Natฮ -is-embedding : hfunext ๐ค ๐ฅ
โ hfunext ๐ค ๐ฆ
โ {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {B : X โ ๐ฆ ฬ }
โ (ฯ : Nat A B)
โ ((x : X) โ is-embedding (ฯ x))
โ is-embedding (Natฮ ฯ)
Natฮ -is-embedding v w {X} {A} ฯ i = embedding-criterion (Natฮ ฯ) ฮณ
where
ฮณ : (f g : ฮ A) โ (Natฮ ฯ f โก Natฮ ฯ g) โ (f โก g)
ฮณ f g = (Natฮ ฯ f โก Natฮ ฯ g) โโจ hfunext-โ w (Natฮ ฯ f) (Natฮ ฯ g) โฉ
(Natฮ ฯ f โผ Natฮ ฯ g) โโจ b โฉ
(f โผ g) โโจ โ-sym (hfunext-โ v f g) โฉ
(f โก g) โ
where
a : (x : X) โ (Natฮ ฯ f x โก Natฮ ฯ g x) โ (f x โก g x)
a x = embedding-criterion-converse (ฯ x) (i x) (f x) (g x)
b : (Natฮ ฯ f โผ Natฮ ฯ g) โ (f โผ g)
b = ฮ -cong (hfunext-gives-dfunext w) (hfunext-gives-dfunext v) a
triangle-lemma : dfunext ๐ฆ (๐ค โ ๐ฅ)
โ {Y : ๐ค ฬ } {A : ๐ฅ ฬ } (g : Y โ A)
โ is-embedding g
โ {X : ๐ฆ ฬ } (f : X โ A) โ is-subsingleton (ฮฃ h ๊ (X โ Y) , g โ h โผ f)
triangle-lemma fe {Y} {A} g i {X} f = iv
where
ii : (x : X) โ is-subsingleton (ฮฃ y ๊ Y , g y โก f x)
ii x = i (f x)
iii : is-subsingleton (ฮ x ๊ X , ฮฃ y ๊ Y , g y โก f x)
iii = ฮ -is-subsingleton fe ii
iv : is-subsingleton (ฮฃ h ๊ (X โ Y) , g โ h โผ f)
iv = equiv-to-subsingleton (โ-sym ฮ ฮฃ-distr-โ) iii
postcomp-is-embedding : dfunext ๐ฆ (๐ค โ ๐ฅ) โ hfunext ๐ฆ ๐ฅ
โ {Y : ๐ค ฬ } {A : ๐ฅ ฬ } (g : Y โ A)
โ is-embedding g
โ (X : ๐ฆ ฬ ) โ is-embedding (ฮป (h : X โ Y) โ g โ h)
postcomp-is-embedding fe hfe {Y} {A} g i X = ฮณ
where
ฮณ : (f : X โ A) โ is-subsingleton (ฮฃ h ๊ (X โ Y) , g โ h โก f)
ฮณ f = equiv-to-subsingleton u (triangle-lemma fe g i f)
where
u : (ฮฃ h ๊ (X โ Y) , g โ h โก f) โ (ฮฃ h ๊ (X โ Y) , g โ h โผ f)
u = ฮฃ-cong (ฮป h โ hfunext-โ hfe (g โ h) f)
_โช_ : ๐ค ฬ โ ๐ฅ ฬ โ ๐ค โ ๐ฅ ฬ
X โช Y = ฮฃ f ๊ (X โ Y), is-embedding f
Embโfun : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โช Y) โ (X โ Y)
Embโfun (f , i) = f
๐จ : {X : ๐ค ฬ } โ X โ (X โ ๐ค ฬ )
๐จ {๐ค} {X} = Id X
๐ : (X : ๐ค ฬ ) โ X โ (X โ ๐ค ฬ )
๐ {๐ค} X = ๐จ {๐ค} {X}
transport-lemma : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) (x : X)
โ (ฯ : Nat (๐จ x) A)
โ (y : X) (p : x โก y) โ ฯ y p โก transport A p (ฯ x (refl x))
transport-lemma A x ฯ x (refl x) = refl (ฯ x (refl x))
๐ : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) (x : X) โ Nat (๐จ x) A โ A x
๐ A x ฯ = ฯ x (refl x)
๐ : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) (x : X) โ A x โ Nat (๐จ x) A
๐ A x a y p = transport A p a
yoneda-ฮท : dfunext ๐ค (๐ค โ ๐ฅ)
โ dfunext ๐ค ๐ฅ
โ {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) (x : X)
โ ๐ A x โ ๐ A x โผ id
yoneda-ฮท fe fe' A x = ฮณ
where
ฮณ : (ฯ : Nat (๐จ x) A) โ (ฮป y p โ transport A p (ฯ x (refl x))) โก ฯ
ฮณ ฯ = fe (ฮป y โ fe' (ฮป p โ (transport-lemma A x ฯ y p)โปยน))
yoneda-ฮต : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) (x : X)
โ ๐ A x โ ๐ A x โผ id
yoneda-ฮต A x = ฮณ
where
ฮณ : (a : A x) โ transport A (refl x) a โก a
ฮณ = refl
is-fiberwise-equiv : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {B : X โ ๐ฆ ฬ } โ Nat A B โ ๐ค โ ๐ฅ โ ๐ฆ ฬ
is-fiberwise-equiv ฯ = โ x โ is-equiv (ฯ x)
๐-is-equiv : dfunext ๐ค (๐ค โ ๐ฅ)
โ dfunext ๐ค ๐ฅ
โ {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ )
โ is-fiberwise-equiv (๐ A)
๐-is-equiv fe fe' A x = invertibles-are-equivs (๐ A x )
(๐ A x , yoneda-ฮท fe fe' A x , yoneda-ฮต A x)
๐-is-equiv : dfunext ๐ค (๐ค โ ๐ฅ)
โ dfunext ๐ค ๐ฅ
โ {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ )
โ is-fiberwise-equiv (๐ A)
๐-is-equiv fe fe' A x = invertibles-are-equivs (๐ A x)
(๐ A x , yoneda-ฮต A x , yoneda-ฮท fe fe' A x)
Yoneda-Lemma : dfunext ๐ค (๐ค โ ๐ฅ)
โ dfunext ๐ค ๐ฅ
โ {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) (x : X)
โ Nat (๐จ x) A โ A x
Yoneda-Lemma fe fe' A x = ๐ A x , ๐-is-equiv fe fe' A x
retract-universal-lemma : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) (x : X)
โ ((y : X) โ A y โ (x โก y))
โ โ! A
retract-universal-lemma A x ฯ = i
where
ฯ : ฮฃ A โ singleton-type' x
ฯ = ฮฃ-retract ฯ
i : โ! A
i = retract-of-singleton ฯ (singleton-types'-are-singletons (domain A) x)
fiberwise-equiv-universal : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ )
(x : X) (ฯ : Nat (๐จ x) A)
โ is-fiberwise-equiv ฯ
โ โ! A
fiberwise-equiv-universal A x ฯ e = retract-universal-lemma A x ฯ
where
ฯ : โ y โ A y โ (x โก y)
ฯ y = โ-gives-โท ((ฯ y) , e y)
universal-fiberwise-equiv : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ )
โ โ! A
โ (x : X) (ฯ : Nat (๐จ x) A) โ is-fiberwise-equiv ฯ
universal-fiberwise-equiv {๐ค} {๐ฅ} {X} A u x ฯ = ฮณ
where
g : singleton-type' x โ ฮฃ A
g = Natฮฃ ฯ
e : is-equiv g
e = maps-of-singletons-are-equivs g (singleton-types'-are-singletons X x) u
ฮณ : is-fiberwise-equiv ฯ
ฮณ = Natฮฃ-equiv-gives-fiberwise-equiv ฯ e
hfunextโ : hfunext ๐ค ๐ฅ
โ ((X : ๐ค ฬ ) (A : X โ ๐ฅ ฬ ) (f : ฮ A) โ โ! g ๊ ฮ A , f โผ g)
hfunextโ hfe X A f = fiberwise-equiv-universal (f โผ_) f (happly f) (hfe f)
โhfunext : ((X : ๐ค ฬ ) (A : X โ ๐ฅ ฬ ) (f : ฮ A) โ โ! g ๊ ฮ A , f โผ g)
โ hfunext ๐ค ๐ฅ
โhfunext ฯ {X} {A} f = universal-fiberwise-equiv (f โผ_) (ฯ X A f) f (happly f)
fiberwise-equiv-criterion : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ )
(x : X)
โ ((y : X) โ A y โ (x โก y))
โ (ฯ : Nat (๐จ x) A) โ is-fiberwise-equiv ฯ
fiberwise-equiv-criterion A x ฯ ฯ = universal-fiberwise-equiv A
(retract-universal-lemma A x ฯ) x ฯ
fiberwise-equiv-criterion' : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ )
(x : X)
โ ((y : X) โ (x โก y) โ A y)
โ (ฯ : Nat (๐จ x) A) โ is-fiberwise-equiv ฯ
fiberwise-equiv-criterion' A x e = fiberwise-equiv-criterion A x
(ฮป y โ โ-gives-โท (e y))
_โฬ_ : {X : ๐ค ฬ } โ (X โ ๐ฅ ฬ ) โ (X โ ๐ฆ ฬ ) โ ๐ค โ ๐ฅ โ ๐ฆ ฬ
A โฬ B = โ x โ A x โ B x
is-representable : {X : ๐ค ฬ } โ (X โ ๐ฅ ฬ ) โ ๐ค โ ๐ฅ ฬ
is-representable A = ฮฃ x ๊ domain A , ๐จ x โฬ A
representable-universal : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ )
โ is-representable A
โ โ! A
representable-universal A (x , e) = retract-universal-lemma A x
(ฮป x โ โ-gives-โท (e x))
universal-representable : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ }
โ โ! A
โ is-representable A
universal-representable {๐ค} {๐ฅ} {X} {A} ((x , a) , p) = x , ฯ
where
e : is-fiberwise-equiv (๐ A x a)
e = universal-fiberwise-equiv A ((x , a) , p) x (๐ A x a)
ฯ : (y : X) โ (x โก y) โ A y
ฯ y = (๐ A x a y , e y)
fiberwise-retractions-are-equivs : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) (x : X)
โ (ฯ : Nat (๐จ x) A)
โ ((y : X) โ has-section (ฯ y))
โ is-fiberwise-equiv ฯ
fiberwise-retractions-are-equivs {๐ค} {๐ฅ} {X} A x ฯ s = ฮณ
where
ฯ : (y : X) โ A y โ (x โก y)
ฯ y = ฯ y , s y
i : โ! A
i = retract-universal-lemma A x ฯ
ฮณ : is-fiberwise-equiv ฯ
ฮณ = universal-fiberwise-equiv A i x ฯ
fiberwise-โ-gives-โ : (X : ๐ค ฬ ) (A : X โ ๐ฅ ฬ ) (x : X)
โ ((y : X) โ A y โ (x โก y))
โ ((y : X) โ A y โ (x โก y))
fiberwise-โ-gives-โ X A x ฯ = ฮณ
where
f : (y : X) โ (x โก y) โ A y
f y = retraction (ฯ y)
e : is-fiberwise-equiv f
e = fiberwise-retractions-are-equivs A x f (ฮป y โ retraction-has-section (ฯ y))
ฮณ : (y : X) โ A y โ (x โก y)
ฮณ y = โ-sym(f y , e y)
embedding-criterion' : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ ((x x' : X) โ (f x โก f x') โ (x โก x'))
โ is-embedding f
embedding-criterion' f ฯ = embedding-criterion f
(ฮป x โ fiberwise-โ-gives-โ (domain f)
(ฮป - โ f x โก f -) x (ฯ x))
being-fiberwise-equiv-is-subsingleton : global-dfunext
โ {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {B : X โ ๐ฆ ฬ }
โ (ฯ : Nat A B)
โ is-subsingleton (is-fiberwise-equiv ฯ)
being-fiberwise-equiv-is-subsingleton fe ฯ =
ฮ -is-subsingleton fe (ฮป y โ being-equiv-is-subsingleton fe fe (ฯ y))
being-representable-is-subsingleton : global-dfunext
โ {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ )
โ is-subsingleton (is-representable A)
being-representable-is-subsingleton fe {X} A rโ rโ = ฮณ
where
u : โ! A
u = representable-universal A rโ
i : (x : X) (ฯ : Nat (๐จ x) A) โ is-singleton (is-fiberwise-equiv ฯ)
i x ฯ = pointed-subsingletons-are-singletons
(is-fiberwise-equiv ฯ)
(universal-fiberwise-equiv A u x ฯ)
(being-fiberwise-equiv-is-subsingleton fe ฯ)
ฮต : (x : X) โ (๐จ x โฬ A) โ A x
ฮต x = ((y : X) โ ๐จ x y โ A y) โโจ ฮ ฮฃ-distr-โ โฉ
(ฮฃ ฯ ๊ Nat (๐จ x) A , is-fiberwise-equiv ฯ) โโจ prโ-โ (i x) โฉ
Nat (๐จ x) A โโจ Yoneda-Lemma fe fe A x โฉ
A x โ
ฮด : is-representable A โ ฮฃ A
ฮด = ฮฃ-cong ฮต
v : is-singleton (is-representable A)
v = equiv-to-singleton ฮด u
ฮณ : rโ โก rโ
ฮณ = singletons-are-subsingletons (is-representable A) v rโ rโ
๐จ-is-embedding : Univalence โ (X : ๐ค ฬ ) โ is-embedding (๐ X)
๐จ-is-embedding {๐ค} ua X A = ฮณ
where
hfe : global-hfunext
hfe = univalence-gives-global-hfunext ua
dfe : global-dfunext
dfe = univalence-gives-global-dfunext ua
p = ฮป x โ (๐จ x โก A) โโจ i x โฉ
((y : X) โ ๐จ x y โก A y) โโจ ii x โฉ
((y : X) โ ๐จ x y โ A y) โ
where
i = ฮป x โ (happly (๐จ x) A , hfe (๐จ x) A)
ii = ฮป x โ ฮ -cong dfe dfe
(ฮป y โ univalence-โ (ua ๐ค)
(๐จ x y) (A y))
e : fiber ๐จ A โ is-representable A
e = ฮฃ-cong p
ฮณ : is-subsingleton (fiber ๐จ A)
ฮณ = equiv-to-subsingleton e (being-representable-is-subsingleton dfe A)
module function-graphs
(ua : Univalence)
{๐ค ๐ฅ : Universe}
(X : ๐ค ฬ )
(A : X โ ๐ฅ ฬ )
where
hfe : global-hfunext
hfe = univalence-gives-global-hfunext ua
fe : global-dfunext
fe = univalence-gives-global-dfunext ua
Function : ๐ค โ ๐ฅ ฬ
Function = (x : X) โ A x
Relation : ๐ค โ (๐ฅ โบ) ฬ
Relation = (x : X) โ A x โ ๐ฅ ฬ
is-functional : Relation โ ๐ค โ ๐ฅ ฬ
is-functional R = (x : X) โ โ! a ๊ A x , R x a
being-functional-is-subsingleton : (R : Relation)
โ is-subsingleton (is-functional R)
being-functional-is-subsingleton R = ฮ -is-subsingleton fe
(ฮป x โ โ!-is-subsingleton (R x) fe)
Functional-Relation : ๐ค โ (๐ฅ โบ) ฬ
Functional-Relation = ฮฃ R ๊ Relation , is-functional R
ฯ : Function โ Relation
ฯ f = ฮป x a โ f x โก a
ฯ-is-embedding : is-embedding ฯ
ฯ-is-embedding = Natฮ -is-embedding hfe hfe
(ฮป x โ ๐ (A x))
(ฮป x โ ๐จ-is-embedding ua (A x))
where
ฯ : (x : X) โ A x โ (A x โ ๐ฅ ฬ )
ฯ x a b = a โก b
remarkโ : ฯ โก ฮป x โ ๐ (A x)
remarkโ = refl _
remarkโ : ฯ โก Natฮ ฯ
remarkโ = refl _
ฯ-is-functional : (f : Function) โ is-functional (ฯ f)
ฯ-is-functional f = ฯ
where
ฯ : (x : X) โ โ! a ๊ A x , f x โก a
ฯ x = singleton-types'-are-singletons (A x) (f x)
ฮ : Function โ Functional-Relation
ฮ f = ฯ f , ฯ-is-functional f
ฮฆ : Functional-Relation โ Function
ฮฆ (R , ฯ) = ฮป x โ prโ (center (ฮฃ a ๊ A x , R x a) (ฯ x))
ฮ-is-equiv : is-equiv ฮ
ฮ-is-equiv = invertibles-are-equivs ฮ (ฮฆ , ฮท , ฮต)
where
ฮท : ฮฆ โ ฮ โผ id
ฮท = refl
ฮต : ฮ โ ฮฆ โผ id
ฮต (R , ฯ) = a
where
f : Function
f = ฮฆ (R , ฯ)
e : (x : X) โ R x (f x)
e x = prโ (center (ฮฃ a ๊ A x , R x a) (ฯ x))
ฯ : (x : X) โ Nat (๐จ (f x)) (R x)
ฯ x = ๐ (R x) (f x) (e x)
ฯ-is-fiberwise-equiv : (x : X) โ is-fiberwise-equiv (ฯ x)
ฯ-is-fiberwise-equiv x = universal-fiberwise-equiv (R x) (ฯ x) (f x) (ฯ x)
d : (x : X) (a : A x) โ (f x โก a) โ R x a
d x a = ฯ x a , ฯ-is-fiberwise-equiv x a
c : (x : X) (a : A x) โ (f x โก a) โก R x a
c x a = EqโId (ua ๐ฅ) _ _ (d x a)
b : ฯ f โก R
b = fe (ฮป x โ fe (c x))
a : (ฯ f , ฯ-is-functional f) โก (R , ฯ)
a = to-subtype-โก being-functional-is-subsingleton b
functions-amount-to-functional-relations : Function โ Functional-Relation
functions-amount-to-functional-relations = ฮ , ฮ-is-equiv
ฮ โ : {X : ๐ค ฬ } โ (X โ ๐ฅ ฬ ) โ ๐ค โ (๐ฅ โบ) ฬ
ฮ โ {๐ค} {๐ฅ} {X} A = ฮฃ R ๊ ((x : X) โ A x โ ๐ฅ ฬ )
, ((x : X) โ is-subsingleton (ฮฃ a ๊ A x , R x a))
_โ_ : ๐ค ฬ โ ๐ฅ ฬ โ ๐ค โ (๐ฅ โบ) ฬ
X โ Y = ฮ โ (ฮป (_ : X) โ Y)
is-defined : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } โ ฮ โ A โ X โ ๐ฅ ฬ
is-defined (R , ฯ) x = ฮฃ a ๊ _ , R x a
being-defined-is-subsingleton : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } (f : ฮ โ A) (x : X)
โ is-subsingleton (is-defined f x)
being-defined-is-subsingleton (R , ฯ) x = ฯ x
_[_,_] : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } (f : ฮ โ A) (x : X) โ is-defined f x โ A x
(R , s) [ x , (a , r)] = a
_โกโ_ : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } โ ฮ โ A โ ฮ โ A โ ๐ค โ ๐ฅ ฬ
f โกโ g = โ x โ (is-defined f x โ is-defined g x)
ร ((i : is-defined f x) (j : is-defined g x) โ f [ x , i ] โก g [ x , j ])
module ฮผ-operator (fe : dfunext ๐คโ ๐คโ) where
open basic-arithmetic-and-order
being-minimal-root-is-subsingleton : (f : โ โ โ) (m : โ)
โ is-subsingleton (is-minimal-root f m)
being-minimal-root-is-subsingleton f m = ร-is-subsingleton
(โ-is-set (f m) 0)
(ฮ -is-subsingleton fe
(ฮป _ โ ฮ -is-subsingleton fe
(ฮป _ โ ฮ -is-subsingleton fe
(ฮป _ โ ๐-is-subsingleton))))
minimal-root-is-subsingleton : (f : โ โ โ)
โ is-subsingleton (minimal-root f)
minimal-root-is-subsingleton f (m , p , ฯ) (m' , p' , ฯ') =
to-subtype-โก
(being-minimal-root-is-subsingleton f)
(at-most-one-minimal-root f m m' (p , ฯ) (p' , ฯ'))
ฮผ : (โ โ โ) โ โ
ฮผ = is-minimal-root , minimal-root-is-subsingleton
ฮผ-propertyโ : (f : โ โ โ) โ (ฮฃ n ๊ โ , f n โก 0) โ is-defined ฮผ f
ฮผ-propertyโ = root-gives-minimal-root
ฮผ-propertyโ : (f : โ โ โ) (i : is-defined ฮผ f)
โ (f (ฮผ [ f , i ]) โก 0)
ร ((n : โ) โ n < ฮผ [ f , i ] โ f n โข 0)
ฮผ-propertyโ f = prโ
is-total : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } โ ฮ โ A โ ๐ค โ ๐ฅ ฬ
is-total f = โ x โ is-defined f x
record Lift {๐ค : Universe} (๐ฅ : Universe) (X : ๐ค ฬ ) : ๐ค โ ๐ฅ ฬ where
constructor
lift
field
lower : X
open Lift public
type-of-Lift : type-of (Lift {๐ค} ๐ฅ) โก (๐ค ฬ โ ๐ค โ ๐ฅ ฬ )
type-of-lift : {X : ๐ค ฬ } โ type-of (lift {๐ค} {๐ฅ} {X}) โก (X โ Lift ๐ฅ X)
type-of-lower : {X : ๐ค ฬ } โ type-of (lower {๐ค} {๐ฅ} {X}) โก (Lift ๐ฅ X โ X)
type-of-Lift = refl _
type-of-lift = refl _
type-of-lower = refl _
Lift-induction : โ {๐ค} ๐ฅ (X : ๐ค ฬ ) (A : Lift ๐ฅ X โ ๐ฆ ฬ )
โ ((x : X) โ A (lift x))
โ (l : Lift ๐ฅ X) โ A l
Lift-induction ๐ฅ X A ฯ (lift x) = ฯ x
Lift-recursion : โ {๐ค} ๐ฅ {X : ๐ค ฬ } {B : ๐ฆ ฬ }
โ (X โ B) โ Lift ๐ฅ X โ B
Lift-recursion ๐ฅ {X} {B} = Lift-induction ๐ฅ X (ฮป _ โ B)
lower-lift : {X : ๐ค ฬ } (x : X) โ lower {๐ค} {๐ฅ} (lift x) โก x
lower-lift = refl
lift-lower : {X : ๐ค ฬ } (l : Lift ๐ฅ X) โ lift (lower l) โก l
lift-lower = refl
Lift-โ : (X : ๐ค ฬ ) โ Lift ๐ฅ X โ X
Lift-โ {๐ค} {๐ฅ} X = invertibility-gives-โ lower
(lift , lift-lower , lower-lift {๐ค} {๐ฅ})
โ-Lift : (X : ๐ค ฬ ) โ X โ Lift ๐ฅ X
โ-Lift {๐ค} {๐ฅ} X = invertibility-gives-โ lift
(lower , lower-lift {๐ค} {๐ฅ} , lift-lower)
lower-dfunext : โ ๐ฆ ๐ฃ ๐ค ๐ฅ โ dfunext (๐ค โ ๐ฆ) (๐ฅ โ ๐ฃ) โ dfunext ๐ค ๐ฅ
lower-dfunext ๐ฆ ๐ฃ ๐ค ๐ฅ fe {X} {A} {f} {g} h = p
where
A' : Lift ๐ฆ X โ ๐ฅ โ ๐ฃ ฬ
A' y = Lift ๐ฃ (A (lower y))
f' g' : ฮ A'
f' y = lift (f (lower y))
g' y = lift (g (lower y))
h' : f' โผ g'
h' y = ap lift (h (lower y))
p' : f' โก g'
p' = fe h'
p : f โก g
p = ap (ฮป f' x โ lower (f' (lift x))) p'
universe-embedding-criterion : is-univalent ๐ค
โ is-univalent (๐ค โ ๐ฅ)
โ (f : ๐ค ฬ โ ๐ค โ ๐ฅ ฬ )
โ ((X : ๐ค ฬ ) โ f X โ X)
โ is-embedding f
universe-embedding-criterion {๐ค} {๐ฅ} ua ua' f e = embedding-criterion f ฮณ
where
fe : dfunext (๐ค โ ๐ฅ) (๐ค โ ๐ฅ)
fe = univalence-gives-dfunext ua'
feโ : dfunext ๐ค ๐ค
feโ = lower-dfunext ๐ฅ ๐ฅ ๐ค ๐ค fe
feโ : dfunext ๐ค (๐ค โ ๐ฅ)
feโ = lower-dfunext ๐ฅ ๐ฅ ๐ค (๐ค โ ๐ฅ) fe
ฮณ : (X X' : ๐ค ฬ ) โ (f X โก f X') โ (X โก X')
ฮณ X X' = (f X โก f X') โโจ i โฉ
(f X โ f X') โโจ ii โฉ
(X โ X') โโจ iii โฉ
(X โก X') โ
where
i = univalence-โ ua' (f X) (f X')
ii = Eq-Eq-cong' fe fe fe fe fe feโ feโ fe feโ feโ feโ feโ (e X) (e X')
iii = โ-sym (univalence-โ ua X X')
Lift-is-embedding : is-univalent ๐ค โ is-univalent (๐ค โ ๐ฅ)
โ is-embedding (Lift {๐ค} ๐ฅ)
Lift-is-embedding {๐ค} {๐ฅ} ua ua' = universe-embedding-criterion {๐ค} {๐ฅ} ua ua'
(Lift ๐ฅ) Lift-โ
module _ {๐ค ๐ฅ : Universe}
(ua : is-univalent ๐ฅ)
(ua' : is-univalent (๐ค โ ๐ฅ))
where
private
fe : dfunext (๐ค โ ๐ฅ) (๐ค โ ๐ฅ)
fe = univalence-gives-dfunext ua'
feโ : dfunext ๐ฅ (๐ค โ ๐ฅ)
feโ = lower-dfunext ๐ค ๐ค ๐ฅ (๐ค โ ๐ฅ) fe
feโ : dfunext ๐ค (๐ค โ ๐ฅ)
feโ = lower-dfunext (๐ค โ ๐ฅ) ๐ค ๐ค (๐ค โ ๐ฅ) fe
feโ : dfunext ๐ฅ ๐ฅ
feโ = lower-dfunext ๐ค ๐ค ๐ฅ ๐ฅ fe
feโ : dfunext ๐ค ๐ค
feโ = lower-dfunext ๐ฅ ๐ฅ ๐ค ๐ค fe
univalenceโ' : (X : ๐ค ฬ ) โ is-subsingleton (ฮฃ Y ๊ ๐ฅ ฬ , X โ Y)
univalenceโ' X = s
where
e : (Y : ๐ฅ ฬ ) โ (X โ Y) โ (Lift ๐ค Y โก Lift ๐ฅ X)
e Y = (X โ Y) โโจ i โฉ
(Y โ X) โโจ ii โฉ
(Lift ๐ค Y โ Lift ๐ฅ X) โโจ iii โฉ
(Lift ๐ค Y โก Lift ๐ฅ X) โ
where
i = โ-Sym feโ feโ fe
ii = Eq-Eq-cong' feโ fe feโ feโ fe fe fe feโ
fe fe fe fe (โ-Lift Y) (โ-Lift X)
iii = โ-sym (univalence-โ ua' (Lift ๐ค Y) (Lift ๐ฅ X))
d : (ฮฃ Y ๊ ๐ฅ ฬ , X โ Y) โ (ฮฃ Y ๊ ๐ฅ ฬ , Lift ๐ค Y โก Lift ๐ฅ X)
d = ฮฃ-cong e
j : is-subsingleton (ฮฃ Y ๊ ๐ฅ ฬ , Lift ๐ค Y โก Lift ๐ฅ X)
j = Lift-is-embedding ua ua' (Lift ๐ฅ X)
abstract
s : is-subsingleton (ฮฃ Y ๊ ๐ฅ ฬ , X โ Y)
s = equiv-to-subsingleton d j
univalenceโ'-dual : (Y : ๐ค ฬ ) โ is-subsingleton (ฮฃ X ๊ ๐ฅ ฬ , X โ Y)
univalenceโ'-dual Y = equiv-to-subsingleton e i
where
e : (ฮฃ X ๊ ๐ฅ ฬ , X โ Y) โ (ฮฃ X ๊ ๐ฅ ฬ , Y โ X)
e = ฮฃ-cong (ฮป X โ โ-Sym feโ feโ fe)
i : is-subsingleton (ฮฃ X ๊ ๐ฅ ฬ , Y โ X)
i = univalenceโ' Y
univalenceโ'' : is-univalent (๐ค โ ๐ฅ)
โ (X : ๐ค ฬ ) โ is-subsingleton (ฮฃ Y ๊ ๐ค โ ๐ฅ ฬ , X โ Y)
univalenceโ'' ua = univalenceโ' ua ua
univalenceโ''-dual : is-univalent (๐ค โ ๐ฅ)
โ (Y : ๐ค ฬ ) โ is-subsingleton (ฮฃ X ๊ ๐ค โ ๐ฅ ฬ , X โ Y)
univalenceโ''-dual ua = univalenceโ'-dual ua ua
Gโ-โ : is-univalent (๐ค โ ๐ฅ)
โ (X : ๐ค ฬ ) (A : (ฮฃ Y ๊ ๐ค โ ๐ฅ ฬ , X โ Y) โ ๐ฆ ฬ )
โ A (Lift ๐ฅ X , โ-Lift X) โ (Y : ๐ค โ ๐ฅ ฬ ) (e : X โ Y) โ A (Y , e)
Gโ-โ {๐ค} {๐ฅ} ua X A a Y e = transport A p a
where
t : ฮฃ Y ๊ ๐ค โ ๐ฅ ฬ , X โ Y
t = (Lift ๐ฅ X , โ-Lift X)
p : t โก (Y , e)
p = univalenceโ'' {๐ค} {๐ฅ} ua X t (Y , e)
Hโ-โ : is-univalent (๐ค โ ๐ฅ)
โ (X : ๐ค ฬ ) (A : (Y : ๐ค โ ๐ฅ ฬ ) โ X โ Y โ ๐ฆ ฬ )
โ A (Lift ๐ฅ X) (โ-Lift X) โ (Y : ๐ค โ ๐ฅ ฬ ) (e : X โ Y) โ A Y e
Hโ-โ ua X A = Gโ-โ ua X (ฮฃ-induction A)
Jโ-โ : is-univalent (๐ค โ ๐ฅ)
โ (A : (X : ๐ค ฬ ) (Y : ๐ค โ ๐ฅ ฬ ) โ X โ Y โ ๐ฆ ฬ )
โ ((X : ๐ค ฬ ) โ A X (Lift ๐ฅ X) (โ-Lift X))
โ (X : ๐ค ฬ ) (Y : ๐ค โ ๐ฅ ฬ ) (e : X โ Y) โ A X Y e
Jโ-โ ua A ฯ X = Hโ-โ ua X (A X) (ฯ X)
Hโ-equiv : is-univalent (๐ค โ ๐ฅ)
โ (X : ๐ค ฬ ) (A : (Y : ๐ค โ ๐ฅ ฬ ) โ (X โ Y) โ ๐ฆ ฬ )
โ A (Lift ๐ฅ X) lift โ (Y : ๐ค โ ๐ฅ ฬ ) (f : X โ Y) โ is-equiv f โ A Y f
Hโ-equiv {๐ค} {๐ฅ} {๐ฆ} ua X A a Y f i = ฮณ (f , i)
where
B : (Y : ๐ค โ ๐ฅ ฬ ) โ X โ Y โ ๐ฆ ฬ
B Y (f , i) = A Y f
b : B (Lift ๐ฅ X) (โ-Lift X)
b = a
ฮณ : (e : X โ Y) โ B Y e
ฮณ = Hโ-โ ua X B b Y
Jโ-equiv : is-univalent (๐ค โ ๐ฅ)
โ (A : (X : ๐ค ฬ ) (Y : ๐ค โ ๐ฅ ฬ ) โ (X โ Y) โ ๐ฆ ฬ )
โ ((X : ๐ค ฬ ) โ A X (Lift ๐ฅ X) lift)
โ (X : ๐ค ฬ ) (Y : ๐ค โ ๐ฅ ฬ ) (f : X โ Y) โ is-equiv f โ A X Y f
Jโ-equiv ua A ฯ X = Hโ-equiv ua X (A X) (ฯ X)
Jโ-invertible : is-univalent (๐ค โ ๐ฅ)
โ (A : (X : ๐ค ฬ ) (Y : ๐ค โ ๐ฅ ฬ ) โ (X โ Y) โ ๐ฆ ฬ )
โ ((X : ๐ค ฬ ) โ A X (Lift ๐ฅ X) lift)
โ (X : ๐ค ฬ ) (Y : ๐ค โ ๐ฅ ฬ ) (f : X โ Y) โ invertible f โ A X Y f
Jโ-invertible ua A ฯ X Y f i = Jโ-equiv ua A ฯ X Y f (invertibles-are-equivs f i)
lift-is-hae : (X : ๐ค ฬ ) โ is-hae {๐ค} {๐ค โ ๐ฅ} {X} {Lift ๐ฅ X} (lift {๐ค} {๐ฅ})
lift-is-hae {๐ค} {๐ฅ} X = lower ,
lower-lift {๐ค} {๐ฅ} ,
lift-lower ,
ฮป x โ refl (refl (lift x))
equivs-are-haesโ : is-univalent (๐ค โ ๐ฅ)
โ {X : ๐ค ฬ } {Y : ๐ค โ ๐ฅ ฬ } (f : X โ Y)
โ is-equiv f โ is-hae f
equivs-are-haesโ {๐ค} {๐ฅ} ua {X} {Y} = Jโ-equiv {๐ค} {๐ฅ} ua (ฮป X Y f โ is-hae f)
lift-is-hae X Y
Gโ-โ : is-univalent (๐ค โ ๐ฅ)
โ (Y : ๐ค ฬ ) (A : (ฮฃ X ๊ ๐ค โ ๐ฅ ฬ , X โ Y) โ ๐ฆ ฬ )
โ A (Lift ๐ฅ Y , Lift-โ Y) โ (X : ๐ค โ ๐ฅ ฬ ) (e : X โ Y) โ A (X , e)
Gโ-โ {๐ค} {๐ฅ} ua Y A a X e = transport A p a
where
t : ฮฃ X ๊ ๐ค โ ๐ฅ ฬ , X โ Y
t = (Lift ๐ฅ Y , Lift-โ Y)
p : t โก (X , e)
p = univalenceโ'-dual {๐ค} {๐ค โ ๐ฅ} ua ua Y t (X , e)
Hโ-โ : is-univalent (๐ค โ ๐ฅ)
โ (Y : ๐ค ฬ ) (A : (X : ๐ค โ ๐ฅ ฬ ) โ X โ Y โ ๐ฆ ฬ )
โ A (Lift ๐ฅ Y) (Lift-โ Y) โ (X : ๐ค โ ๐ฅ ฬ ) (e : X โ Y) โ A X e
Hโ-โ ua Y A = Gโ-โ ua Y (ฮฃ-induction A)
Jโ-โ : is-univalent (๐ค โ ๐ฅ)
โ (A : (X : ๐ค โ ๐ฅ ฬ ) (Y : ๐ค ฬ ) โ X โ Y โ ๐ฆ ฬ )
โ ((Y : ๐ค ฬ ) โ A (Lift ๐ฅ Y) Y (Lift-โ Y))
โ (X : ๐ค โ ๐ฅ ฬ ) (Y : ๐ค ฬ ) (e : X โ Y) โ A X Y e
Jโ-โ ua A ฯ X Y = Hโ-โ ua Y (ฮป X โ A X Y) (ฯ Y) X
Hโ-equiv : is-univalent (๐ค โ ๐ฅ)
โ (Y : ๐ค ฬ ) (A : (X : ๐ค โ ๐ฅ ฬ ) โ (X โ Y) โ ๐ฆ ฬ )
โ A (Lift ๐ฅ Y) lower โ (X : ๐ค โ ๐ฅ ฬ ) (f : X โ Y) โ is-equiv f โ A X f
Hโ-equiv {๐ค} {๐ฅ} {๐ฆ} ua Y A a X f i = ฮณ (f , i)
where
B : (X : ๐ค โ ๐ฅ ฬ ) โ X โ Y โ ๐ฆ ฬ
B X (f , i) = A X f
b : B (Lift ๐ฅ Y) (Lift-โ Y)
b = a
ฮณ : (e : X โ Y) โ B X e
ฮณ = Hโ-โ ua Y B b X
Jโ-equiv : is-univalent (๐ค โ ๐ฅ)
โ (A : (X : ๐ค โ ๐ฅ ฬ ) (Y : ๐ค ฬ ) โ (X โ Y) โ ๐ฆ ฬ )
โ ((Y : ๐ค ฬ ) โ A (Lift ๐ฅ Y) Y lower)
โ (X : ๐ค โ ๐ฅ ฬ ) (Y : ๐ค ฬ ) (f : X โ Y) โ is-equiv f โ A X Y f
Jโ-equiv ua A ฯ X Y = Hโ-equiv ua Y (ฮป X โ A X Y) (ฯ Y) X
Jโ-invertible : is-univalent (๐ค โ ๐ฅ)
โ (A : (X : ๐ค โ ๐ฅ ฬ ) (Y : ๐ค ฬ ) โ (X โ Y) โ ๐ฆ ฬ )
โ ((Y : ๐ค ฬ ) โ A (Lift ๐ฅ Y) Y lower)
โ (X : ๐ค โ ๐ฅ ฬ ) (Y : ๐ค ฬ ) (f : X โ Y) โ invertible f โ A X Y f
Jโ-invertible ua A ฯ X Y f i = Jโ-equiv ua A ฯ X Y f (invertibles-are-equivs f i)
lower-is-hae : (X : ๐ค ฬ ) โ is-hae (lower {๐ค} {๐ฅ} {X})
lower-is-hae {๐ค} {๐ฅ} X = lift ,
lift-lower ,
lower-lift {๐ค} {๐ฅ} ,
(ฮป x โ refl (refl (lower x)))
equivs-are-haesโ : is-univalent (๐ค โ ๐ฅ)
โ {X : ๐ค โ ๐ฅ ฬ } {Y : ๐ค ฬ } (f : X โ Y)
โ is-equiv f โ is-hae f
equivs-are-haesโ {๐ค} {๐ฅ} ua {X} {Y} = Jโ-equiv {๐ค} {๐ฅ} ua (ฮป X Y f โ is-hae f)
lower-is-hae X Y
IdโEq-is-hae' : is-univalent ๐ค โ is-univalent (๐ค โบ)
โ {X Y : ๐ค ฬ } โ is-hae (IdโEq X Y)
IdโEq-is-hae' ua uaโบ {X} {Y} = equivs-are-haesโ uaโบ (IdโEq X Y) (ua X Y)
IdโEq-is-hae : is-univalent ๐ค
โ {X Y : ๐ค ฬ } โ is-hae (IdโEq X Y)
IdโEq-is-hae ua {X} {Y} = invertibles-are-haes (IdโEq X Y)
(equivs-are-invertible (IdโEq X Y) (ua X Y))
global-property-of-types : ๐คฯ
global-property-of-types = {๐ค : Universe} โ ๐ค ฬ โ ๐ค ฬ
cumulative : global-property-of-types โ ๐คฯ
cumulative A = {๐ค ๐ฅ : Universe} (X : ๐ค ฬ ) โ A X โ A (Lift ๐ฅ X)
global-โ-ap : Univalence
โ (A : global-property-of-types)
โ cumulative A
โ (X : ๐ค ฬ ) (Y : ๐ฅ ฬ ) โ X โ Y โ A X โ A Y
global-โ-ap' : Univalence
โ (F : Universe โ Universe)
โ (A : {๐ค : Universe} โ ๐ค ฬ โ (F ๐ค) ฬ )
โ ({๐ค ๐ฅ : Universe} (X : ๐ค ฬ ) โ A X โ A (Lift ๐ฅ X))
โ (X : ๐ค ฬ ) (Y : ๐ฅ ฬ ) โ X โ Y โ A X โ A Y
global-โ-ap' {๐ค} {๐ฅ} ua F A ฯ X Y e =
A X โโจ ฯ X โฉ
A (Lift ๐ฅ X) โโจ IdโEq (A (Lift ๐ฅ X)) (A (Lift ๐ค Y)) q โฉ
A (Lift ๐ค Y) โโจ โ-sym (ฯ Y) โฉ
A Y โ
where
d : Lift ๐ฅ X โ Lift ๐ค Y
d = Lift ๐ฅ X โโจ Lift-โ X โฉ
X โโจ e โฉ
Y โโจ โ-sym (Lift-โ Y) โฉ
Lift ๐ค Y โ
p : Lift ๐ฅ X โก Lift ๐ค Y
p = EqโId (ua (๐ค โ ๐ฅ)) (Lift ๐ฅ X) (Lift ๐ค Y) d
q : A (Lift ๐ฅ X) โก A (Lift ๐ค Y)
q = ap A p
global-โ-ap ua = global-โ-ap' ua id
Subtype : ๐ค ฬ โ ๐ค โบ ฬ
Subtype {๐ค} Y = ฮฃ X ๊ ๐ค ฬ , X โช Y
_/[_]_ : (๐ค : Universe) โ (๐ค ฬ โ ๐ฅ ฬ ) โ ๐ค ฬ โ ๐ค โบ โ ๐ฅ ฬ
๐ค /[ P ] Y = ฮฃ X ๊ ๐ค ฬ , ฮฃ f ๊ (X โ Y) , ((y : Y) โ P (fiber f y))
ฯ-special : (P : ๐ค ฬ โ ๐ฅ ฬ ) (Y : ๐ค ฬ ) โ ๐ค /[ P ] Y โ (Y โ ฮฃ P)
ฯ-special P Y (X , f , ฯ) y = fiber f y , ฯ y
is-special-map-classifier : (๐ค ฬ โ ๐ฅ ฬ ) โ ๐ค โบ โ ๐ฅ ฬ
is-special-map-classifier {๐ค} P = (Y : ๐ค ฬ ) โ is-equiv (ฯ-special P Y)
mc-gives-sc : is-map-classifier ๐ค
โ (P : ๐ค ฬ โ ๐ฅ ฬ ) โ is-special-map-classifier P
mc-gives-sc {๐ค} s P Y = ฮณ
where
e = (๐ค /[ P ] Y) โโจ โ-sym a โฉ
(ฮฃ ฯ ๊ ๐ค / Y , ((y : Y) โ P ((ฯ Y) ฯ y))) โโจ โ-sym b โฉ
(ฮฃ A ๊ (Y โ ๐ค ฬ ), ((y : Y) โ P (A y))) โโจ โ-sym c โฉ
(Y โ ฮฃ P) โ
where
a = ฮฃ-assoc
b = ฮฃ-change-of-variable (ฮป A โ ฮ (P โ A)) (ฯ Y) (s Y)
c = ฮ ฮฃ-distr-โ
observation : ฯ-special P Y โก โ e โ
observation = refl _
ฮณ : is-equiv (ฯ-special P Y)
ฮณ = โโ-is-equiv e
ฯ-special-is-equiv : is-univalent ๐ค
โ dfunext ๐ค (๐ค โบ)
โ (P : ๐ค ฬ โ ๐ฅ ฬ ) (Y : ๐ค ฬ )
โ is-equiv (ฯ-special P Y)
ฯ-special-is-equiv {๐ค} ua fe P Y = mc-gives-sc (universes-are-map-classifiers ua fe) P Y
special-map-classifier : is-univalent ๐ค
โ dfunext ๐ค (๐ค โบ)
โ (P : ๐ค ฬ โ ๐ฅ ฬ ) (Y : ๐ค ฬ )
โ ๐ค /[ P ] Y โ (Y โ ฮฃ P)
special-map-classifier {๐ค} ua fe P Y = ฯ-special P Y , ฯ-special-is-equiv ua fe P Y
ฮฉ-is-subtype-classifier : Univalence
โ (Y : ๐ค ฬ ) โ Subtype Y โ (Y โ ฮฉ ๐ค)
ฮฉ-is-subtype-classifier {๐ค} ua = special-map-classifier (ua ๐ค)
(univalence-gives-dfunext' (ua ๐ค) (ua (๐ค โบ)))
is-subsingleton
subtypes-form-set : Univalence โ (Y : ๐ค ฬ ) โ is-set (Subtype Y)
subtypes-form-set {๐ค} ua Y = equiv-to-set
(ฮฉ-is-subtype-classifier ua Y)
(powersets-are-sets' ua)
๐ข : (๐ค : Universe) โ ๐ค โบ ฬ
๐ข ๐ค = ฮฃ S ๊ ๐ค ฬ , is-singleton S
equiv-classification : Univalence
โ (Y : ๐ค ฬ ) โ (ฮฃ X ๊ ๐ค ฬ , X โ Y) โ (Y โ ๐ข ๐ค)
equiv-classification {๐ค} ua = special-map-classifier (ua ๐ค)
(univalence-gives-dfunext' (ua ๐ค) (ua (๐ค โบ)))
is-singleton
the-singletons-form-a-singleton : propext ๐ค โ dfunext ๐ค ๐ค โ is-singleton (๐ข ๐ค)
the-singletons-form-a-singleton {๐ค} pe fe = c , ฯ
where
i : is-singleton (Lift ๐ค ๐)
i = equiv-to-singleton (Lift-โ ๐) ๐-is-singleton
c : ๐ข ๐ค
c = Lift ๐ค ๐ , i
ฯ : (x : ๐ข ๐ค) โ c โก x
ฯ (S , s) = to-subtype-โก (ฮป _ โ being-singleton-is-subsingleton fe) p
where
p : Lift ๐ค ๐ โก S
p = pe (singletons-are-subsingletons (Lift ๐ค ๐) i)
(singletons-are-subsingletons S s)
(ฮป _ โ center S s) (ฮป _ โ center (Lift ๐ค ๐) i)
univalenceโ-again : Univalence
โ (Y : ๐ค ฬ ) โ is-singleton (ฮฃ X ๊ ๐ค ฬ , X โ Y)
univalenceโ-again {๐ค} ua Y = equiv-to-singleton (equiv-classification ua Y) i
where
i : is-singleton (Y โ ๐ข ๐ค)
i = univalence-gives-vvfunext' (ua ๐ค) (ua (๐ค โบ))
(ฮป y โ the-singletons-form-a-singleton
(univalence-gives-propext (ua ๐ค))
(univalence-gives-dfunext (ua ๐ค)))
module magma-equivalences (ua : Univalence) where
open magmas
dfe : global-dfunext
dfe = univalence-gives-global-dfunext ua
hfe : global-hfunext
hfe = univalence-gives-global-hfunext ua
being-magma-hom-is-subsingleton : (M N : Magma ๐ค) (f : โจ M โฉ โ โจ N โฉ)
โ is-subsingleton (is-magma-hom M N f)
being-magma-hom-is-subsingleton M N f =
ฮ -is-subsingleton dfe
(ฮป x โ ฮ -is-subsingleton dfe
(ฮป y โ magma-is-set N (f (x ยทโจ M โฉ y)) (f x ยทโจ N โฉ f y)))
being-magma-iso-is-subsingleton : (M N : Magma ๐ค) (f : โจ M โฉ โ โจ N โฉ)
โ is-subsingleton (is-magma-iso M N f)
being-magma-iso-is-subsingleton M N f (h , g , k , ฮท , ฮต) (h' , g' , k' , ฮท' , ฮต') = ฮณ
where
p : h โก h'
p = being-magma-hom-is-subsingleton M N f h h'
q : g โก g'
q = dfe (ฮป y โ g y โกโจ (ap g (ฮต' y))โปยน โฉ
g (f (g' y)) โกโจ ฮท (g' y) โฉ
g' y โ)
i : is-subsingleton (is-magma-hom N M g' ร (g' โ f โผ id) ร (f โ g' โผ id))
i = ร-is-subsingleton
(being-magma-hom-is-subsingleton N M g')
(ร-is-subsingleton
(ฮ -is-subsingleton dfe (ฮป x โ magma-is-set M (g' (f x)) x))
(ฮ -is-subsingleton dfe (ฮป y โ magma-is-set N (f (g' y)) y)))
ฮณ : (h , g , k , ฮท , ฮต) โก (h' , g' , k' , ฮท' , ฮต')
ฮณ = to-ร-โก (p , to-ฮฃ-โก (q , i _ _))
is-magma-equiv : (M N : Magma ๐ค) โ (โจ M โฉ โ โจ N โฉ) โ ๐ค ฬ
is-magma-equiv M N f = is-equiv f ร is-magma-hom M N f
being-magma-equiv-is-subsingleton : (M N : Magma ๐ค) (f : โจ M โฉ โ โจ N โฉ)
โ is-subsingleton (is-magma-equiv M N f)
being-magma-equiv-is-subsingleton M N f =
ร-is-subsingleton
(being-equiv-is-subsingleton dfe dfe f)
(being-magma-hom-is-subsingleton M N f)
magma-isos-are-magma-equivs : (M N : Magma ๐ค) (f : โจ M โฉ โ โจ N โฉ)
โ is-magma-iso M N f
โ is-magma-equiv M N f
magma-isos-are-magma-equivs M N f (h , g , k , ฮท , ฮต) = i , h
where
i : is-equiv f
i = invertibles-are-equivs f (g , ฮท , ฮต)
magma-equivs-are-magma-isos : (M N : Magma ๐ค) (f : โจ M โฉ โ โจ N โฉ)
โ is-magma-equiv M N f
โ is-magma-iso M N f
magma-equivs-are-magma-isos M N f (i , h) = h , g , k , ฮท , ฮต
where
g : โจ N โฉ โ โจ M โฉ
g = inverse f i
ฮท : g โ f โผ id
ฮท = inverses-are-retractions f i
ฮต : f โ g โผ id
ฮต = inverses-are-sections f i
k : (a b : โจ N โฉ) โ g (a ยทโจ N โฉ b) โก g a ยทโจ M โฉ g b
k a b = g (a ยทโจ N โฉ b) โกโจ apโ (ฮป a b โ g (a ยทโจ N โฉ b)) ((ฮต a)โปยน)
((ฮต b)โปยน) โฉ
g (f (g a) ยทโจ N โฉ f (g b)) โกโจ ap g ((h (g a) (g b))โปยน) โฉ
g (f (g a ยทโจ M โฉ g b)) โกโจ ฮท (g a ยทโจ M โฉ g b) โฉ
g a ยทโจ M โฉ g b โ
magma-iso-charac : (M N : Magma ๐ค) (f : โจ M โฉ โ โจ N โฉ)
โ is-magma-iso M N f โ is-magma-equiv M N f
magma-iso-charac M N f = logically-equivalent-subsingletons-are-equivalent
(is-magma-iso M N f)
(is-magma-equiv M N f)
(being-magma-iso-is-subsingleton M N f)
(being-magma-equiv-is-subsingleton M N f)
(magma-isos-are-magma-equivs M N f ,
magma-equivs-are-magma-isos M N f)
magma-iso-charac' : (M N : Magma ๐ค) (f : โจ M โฉ โ โจ N โฉ)
โ is-magma-iso M N f โก is-magma-equiv M N f
magma-iso-charac' M N f = EqโId (ua (universe-of โจ M โฉ))
(is-magma-iso M N f)
(is-magma-equiv M N f)
(magma-iso-charac M N f)
magma-iso-charac'' : (M N : Magma ๐ค)
โ is-magma-iso M N โก is-magma-equiv M N
magma-iso-charac'' M N = dfe (magma-iso-charac' M N)
_โโ_ : Magma ๐ค โ Magma ๐ค โ ๐ค ฬ
M โโ N = ฮฃ f ๊ (โจ M โฉ โ โจ N โฉ), is-magma-equiv M N f
โ
โ-charac : (M N : Magma ๐ค)
โ (M โ
โ N) โ (M โโ N)
โ
โ-charac M N = ฮฃ-cong (magma-iso-charac M N)
โ
โ-charac' : (M N : Magma ๐ค)
โ (M โ
โ N) โก (M โโ N)
โ
โ-charac' M N = ap ฮฃ (magma-iso-charac'' M N)
module sip where
โจ_โฉ : {S : ๐ค ฬ โ ๐ฅ ฬ } โ ฮฃ S โ ๐ค ฬ
โจ X , s โฉ = X
structure : {S : ๐ค ฬ โ ๐ฅ ฬ } (A : ฮฃ S) โ S โจ A โฉ
structure (X , s) = s
canonical-map : {S : ๐ค ฬ โ ๐ฅ ฬ }
(ฮน : (A B : ฮฃ S) โ โจ A โฉ โ โจ B โฉ โ ๐ฆ ฬ )
(ฯ : (A : ฮฃ S) โ ฮน A A (id-โ โจ A โฉ))
{X : ๐ค ฬ }
(s t : S X)
โ s โก t โ ฮน (X , s) (X , t) (id-โ X)
canonical-map ฮน ฯ {X} s s (refl s) = ฯ (X , s)
SNS : (๐ค ฬ โ ๐ฅ ฬ ) โ (๐ฆ : Universe) โ ๐ค โบ โ ๐ฅ โ (๐ฆ โบ) ฬ
SNS {๐ค} {๐ฅ} S ๐ฆ = ฮฃ ฮน ๊ ((A B : ฮฃ S) โ (โจ A โฉ โ โจ B โฉ โ ๐ฆ ฬ ))
, ฮฃ ฯ ๊ ((A : ฮฃ S) โ ฮน A A (id-โ โจ A โฉ))
, ({X : ๐ค ฬ } (s t : S X) โ is-equiv (canonical-map ฮน ฯ s t))
homomorphic : {S : ๐ค ฬ โ ๐ฅ ฬ } โ SNS S ๐ฆ
โ (A B : ฮฃ S) โ โจ A โฉ โ โจ B โฉ โ ๐ฆ ฬ
homomorphic (ฮน , ฯ , ฮธ) = ฮน
_โ[_]_ : {S : ๐ค ฬ โ ๐ฅ ฬ } โ ฮฃ S โ SNS S ๐ฆ โ ฮฃ S โ ๐ค โ ๐ฆ ฬ
A โ[ ฯ ] B = ฮฃ f ๊ (โจ A โฉ โ โจ B โฉ)
, ฮฃ i ๊ is-equiv f
, homomorphic ฯ A B (f , i)
IdโhomEq : {S : ๐ค ฬ โ ๐ฅ ฬ } (ฯ : SNS S ๐ฆ)
โ (A B : ฮฃ S) โ (A โก B) โ (A โ[ ฯ ] B)
IdโhomEq (_ , ฯ , _) A A (refl A) = id , id-is-equiv โจ A โฉ , ฯ A
homomorphism-lemma : {S : ๐ค ฬ โ ๐ฅ ฬ } (ฯ : SNS S ๐ฆ)
(A B : ฮฃ S) (p : โจ A โฉ โก โจ B โฉ)
โ
(transport S p (structure A) โก structure B)
โ homomorphic ฯ A B (IdโEq โจ A โฉ โจ B โฉ p)
homomorphism-lemma (ฮน , ฯ , ฮธ) (X , s) (X , t) (refl X) = ฮณ
where
ฮณ : (s โก t) โ ฮน (X , s) (X , t) (id-โ X)
ฮณ = (canonical-map ฮน ฯ s t , ฮธ s t)
characterization-of-โก : is-univalent ๐ค
โ {S : ๐ค ฬ โ ๐ฅ ฬ } (ฯ : SNS S ๐ฆ)
โ (A B : ฮฃ S)
โ (A โก B) โ (A โ[ ฯ ] B)
characterization-of-โก ua {S} ฯ A B =
(A โก B) โโจ i โฉ
(ฮฃ p ๊ โจ A โฉ โก โจ B โฉ , transport S p (structure A) โก structure B) โโจ ii โฉ
(ฮฃ p ๊ โจ A โฉ โก โจ B โฉ , ฮน A B (IdโEq โจ A โฉ โจ B โฉ p)) โโจ iii โฉ
(ฮฃ e ๊ โจ A โฉ โ โจ B โฉ , ฮน A B e) โโจ iv โฉ
(A โ[ ฯ ] B) โ
where
ฮน = homomorphic ฯ
i = ฮฃ-โก-โ A B
ii = ฮฃ-cong (homomorphism-lemma ฯ A B)
iii = โ-sym (ฮฃ-change-of-variable (ฮน A B) (IdโEq โจ A โฉ โจ B โฉ) (ua โจ A โฉ โจ B โฉ))
iv = ฮฃ-assoc
IdโhomEq-is-equiv : (ua : is-univalent ๐ค) {S : ๐ค ฬ โ ๐ฅ ฬ } (ฯ : SNS S ๐ฆ)
โ (A B : ฮฃ S) โ is-equiv (IdโhomEq ฯ A B)
IdโhomEq-is-equiv ua {S} ฯ A B = ฮณ
where
h : (A B : ฮฃ S) โ IdโhomEq ฯ A B โผ โ characterization-of-โก ua ฯ A B โ
h A A (refl A) = refl _
ฮณ : is-equiv (IdโhomEq ฯ A B)
ฮณ = equivs-closed-under-โผ
(โโ-is-equiv (characterization-of-โก ua ฯ A B))
(h A B)
module _ {S : ๐ค ฬ โ ๐ฅ ฬ }
(ฮน : (A B : ฮฃ S) โ โจ A โฉ โ โจ B โฉ โ ๐ฆ ฬ )
(ฯ : (A : ฮฃ S) โ ฮน A A (id-โ โจ A โฉ))
{X : ๐ค ฬ }
where
canonical-map-charac : (s t : S X) (p : s โก t)
โ canonical-map ฮน ฯ s t p
โก transport (ฮป - โ ฮน (X , s) (X , -) (id-โ X)) p (ฯ (X , s))
canonical-map-charac s = transport-lemma (ฮป t โ ฮน (X , s) (X , t) (id-โ X)) s
(canonical-map ฮน ฯ s)
when-canonical-map-is-equiv : ((s t : S X) โ is-equiv (canonical-map ฮน ฯ s t))
โ ((s : S X) โ โ! t ๊ S X , ฮน (X , s) (X , t) (id-โ X))
when-canonical-map-is-equiv = (ฮป e s โ fiberwise-equiv-universal (A s) s (ฯ s) (e s)) ,
(ฮป ฯ s โ universal-fiberwise-equiv (A s) (ฯ s) s (ฯ s))
where
A = ฮป s t โ ฮน (X , s) (X , t) (id-โ X)
ฯ = canonical-map ฮน ฯ
canonical-map-equiv-criterion : ((s t : S X) โ (s โก t) โ ฮน (X , s) (X , t) (id-โ X))
โ (s t : S X) โ is-equiv (canonical-map ฮน ฯ s t)
canonical-map-equiv-criterion ฯ s = fiberwise-equiv-criterion'
(ฮป t โ ฮน (X , s) (X , t) (id-โ X))
s (ฯ s) (canonical-map ฮน ฯ s)
canonical-map-equiv-criterion' : ((s t : S X) โ ฮน (X , s) (X , t) (id-โ X) โ (s โก t))
โ (s t : S X) โ is-equiv (canonical-map ฮน ฯ s t)
canonical-map-equiv-criterion' ฯ s = fiberwise-equiv-criterion
(ฮป t โ ฮน (X , s) (X , t) (id-โ X))
s (ฯ s) (canonical-map ฮน ฯ s)
module โ-magma {๐ค : Universe} where
open sip
โ-magma-structure : ๐ค ฬ โ ๐ค ฬ
โ-magma-structure X = X โ X โ X
โ-Magma : ๐ค โบ ฬ
โ-Magma = ฮฃ X ๊ ๐ค ฬ , โ-magma-structure X
sns-data : SNS โ-magma-structure ๐ค
sns-data = (ฮน , ฯ , ฮธ)
where
ฮน : (A B : โ-Magma) โ โจ A โฉ โ โจ B โฉ โ ๐ค ฬ
ฮน (X , _ยท_) (Y , _*_) (f , _) = (ฮป x x' โ f (x ยท x')) โก (ฮป x x' โ f x * f x')
ฯ : (A : โ-Magma) โ ฮน A A (id-โ โจ A โฉ)
ฯ (X , _ยท_) = refl _ยท_
h : {X : ๐ค ฬ } {_ยท_ _*_ : โ-magma-structure X}
โ canonical-map ฮน ฯ _ยท_ _*_ โผ ๐๐ (_ยท_ โก _*_)
h (refl _ยท_) = refl (refl _ยท_)
ฮธ : {X : ๐ค ฬ } (_ยท_ _*_ : โ-magma-structure X)
โ is-equiv (canonical-map ฮน ฯ _ยท_ _*_)
ฮธ _ยท_ _*_ = equivs-closed-under-โผ (id-is-equiv (_ยท_ โก _*_)) h
_โ
_ : โ-Magma โ โ-Magma โ ๐ค ฬ
(X , _ยท_) โ
(Y , _*_) =
ฮฃ f ๊ (X โ Y), is-equiv f
ร ((ฮป x x' โ f (x ยท x')) โก (ฮป x x' โ f x * f x'))
characterization-of-โ-Magma-โก : is-univalent ๐ค โ (A B : โ-Magma) โ (A โก B) โ (A โ
B)
characterization-of-โ-Magma-โก ua = characterization-of-โก ua sns-data
characterization-of-characterization-of-โ-Magma-โก :
(ua : is-univalent ๐ค) (A : โ-Magma)
โ
โ characterization-of-โ-Magma-โก ua A A โ (refl A)
โก
(๐๐ โจ A โฉ , id-is-equiv โจ A โฉ , refl _)
characterization-of-characterization-of-โ-Magma-โก ua A = refl _
module sip-with-axioms where
open sip
[_] : {S : ๐ค ฬ โ ๐ฅ ฬ } {axioms : (X : ๐ค ฬ ) โ S X โ ๐ฆ ฬ }
โ (ฮฃ X ๊ ๐ค ฬ , ฮฃ s ๊ S X , axioms X s) โ ฮฃ S
[ X , s , _ ] = (X , s)
โช_โซ : {S : ๐ค ฬ โ ๐ฅ ฬ } {axioms : (X : ๐ค ฬ ) โ S X โ ๐ฆ ฬ }
โ (ฮฃ X ๊ ๐ค ฬ , ฮฃ s ๊ S X , axioms X s) โ ๐ค ฬ
โช X , _ , _ โซ = X
add-axioms : {S : ๐ค ฬ โ ๐ฅ ฬ }
(axioms : (X : ๐ค ฬ ) โ S X โ ๐ฆ ฬ )
โ ((X : ๐ค ฬ ) (s : S X) โ is-subsingleton (axioms X s))
โ SNS S ๐ฃ
โ SNS (ฮป X โ ฮฃ s ๊ S X , axioms X s) ๐ฃ
add-axioms {๐ค} {๐ฅ} {๐ฆ} {๐ฃ} {S} axioms i (ฮน , ฯ , ฮธ) = ฮน' , ฯ' , ฮธ'
where
S' : ๐ค ฬ โ ๐ฅ โ ๐ฆ ฬ
S' X = ฮฃ s ๊ S X , axioms X s
ฮน' : (A B : ฮฃ S') โ โจ A โฉ โ โจ B โฉ โ ๐ฃ ฬ
ฮน' A B = ฮน [ A ] [ B ]
ฯ' : (A : ฮฃ S') โ ฮน' A A (id-โ โจ A โฉ)
ฯ' A = ฯ [ A ]
ฮธ' : {X : ๐ค ฬ } (s' t' : S' X) โ is-equiv (canonical-map ฮน' ฯ' s' t')
ฮธ' {X} (s , a) (t , b) = ฮณ
where
ฯ : S' X โ S X
ฯ (s , _) = s
j : is-embedding ฯ
j = prโ-is-embedding (i X)
k : {s' t' : S' X} โ is-equiv (ap ฯ {s'} {t'})
k {s'} {t'} = embedding-gives-ap-is-equiv ฯ j s' t'
l : canonical-map ฮน' ฯ' (s , a) (t , b)
โผ canonical-map ฮน ฯ s t โ ap ฯ {s , a} {t , b}
l (refl (s , a)) = refl (ฯ (X , s))
e : is-equiv (canonical-map ฮน ฯ s t โ ap ฯ {s , a} {t , b})
e = โ-is-equiv (ฮธ s t) k
ฮณ : is-equiv (canonical-map ฮน' ฯ' (s , a) (t , b))
ฮณ = equivs-closed-under-โผ e l
characterization-of-โก-with-axioms :
is-univalent ๐ค
โ {S : ๐ค ฬ โ ๐ฅ ฬ }
(ฯ : SNS S ๐ฃ)
(axioms : (X : ๐ค ฬ ) โ S X โ ๐ฆ ฬ )
โ ((X : ๐ค ฬ ) (s : S X) โ is-subsingleton (axioms X s))
โ (A B : ฮฃ X ๊ ๐ค ฬ , ฮฃ s ๊ S X , axioms X s)
โ (A โก B) โ ([ A ] โ[ ฯ ] [ B ])
characterization-of-โก-with-axioms ua ฯ axioms i =
characterization-of-โก ua (add-axioms axioms i ฯ)
module magma {๐ค : Universe} where
open sip-with-axioms
Magma : ๐ค โบ ฬ
Magma = ฮฃ X ๊ ๐ค ฬ , (X โ X โ X) ร is-set X
_โ
_ : Magma โ Magma โ ๐ค ฬ
(X , _ยท_ , _) โ
(Y , _*_ , _) =
ฮฃ f ๊ (X โ Y), is-equiv f
ร ((ฮป x x' โ f (x ยท x')) โก (ฮป x x' โ f x * f x'))
characterization-of-Magma-โก : is-univalent ๐ค โ (A B : Magma ) โ (A โก B) โ (A โ
B)
characterization-of-Magma-โก ua =
characterization-of-โก-with-axioms ua
โ-magma.sns-data
(ฮป X s โ is-set X)
(ฮป X s โ being-set-is-subsingleton (univalence-gives-dfunext ua))
module pointed-type {๐ค : Universe} where
open sip
Pointed : ๐ค ฬ โ ๐ค ฬ
Pointed X = X
sns-data : SNS Pointed ๐ค
sns-data = (ฮน , ฯ , ฮธ)
where
ฮน : (A B : ฮฃ Pointed) โ โจ A โฉ โ โจ B โฉ โ ๐ค ฬ
ฮน (X , xโ) (Y , yโ) (f , _) = (f xโ โก yโ)
ฯ : (A : ฮฃ Pointed) โ ฮน A A (id-โ โจ A โฉ)
ฯ (X , xโ) = refl xโ
ฮธ : {X : ๐ค ฬ } (xโ xโ : Pointed X) โ is-equiv (canonical-map ฮน ฯ xโ xโ)
ฮธ xโ xโ = equivs-closed-under-โผ (id-is-equiv (xโ โก xโ)) h
where
h : canonical-map ฮน ฯ xโ xโ โผ ๐๐ (xโ โก xโ)
h (refl xโ) = refl (refl xโ)
_โ
_ : ฮฃ Pointed โ ฮฃ Pointed โ ๐ค ฬ
(X , xโ) โ
(Y , yโ) = ฮฃ f ๊ (X โ Y), is-equiv f ร (f xโ โก yโ)
characterization-of-pointed-type-โก : is-univalent ๐ค
โ (A B : ฮฃ Pointed) โ (A โก B) โ (A โ
B)
characterization-of-pointed-type-โก ua = characterization-of-โก ua sns-data
module sip-join where
technical-lemma :
{X : ๐ค ฬ } {A : X โ X โ ๐ฅ ฬ }
{Y : ๐ฆ ฬ } {B : Y โ Y โ ๐ฃ ฬ }
(f : (xโ xโ : X) โ xโ โก xโ โ A xโ xโ)
(g : (yโ yโ : Y) โ yโ โก yโ โ B yโ yโ)
โ ((xโ xโ : X) โ is-equiv (f xโ xโ))
โ ((yโ yโ : Y) โ is-equiv (g yโ yโ))
โ ((xโ , yโ) (xโ , yโ) : X ร Y) โ is-equiv (ฮป (p : (xโ , yโ) โก (xโ , yโ)) โ f xโ xโ (ap prโ p) ,
g yโ yโ (ap prโ p))
technical-lemma {๐ค} {๐ฅ} {๐ฆ} {๐ฃ} {X} {A} {Y} {B} f g i j (xโ , yโ) = ฮณ
where
u : โ! xโ ๊ X , A xโ xโ
u = fiberwise-equiv-universal (A xโ) xโ (f xโ) (i xโ)
v : โ! yโ ๊ Y , B yโ yโ
v = fiberwise-equiv-universal (B yโ) yโ (g yโ) (j yโ)
C : X ร Y โ ๐ฅ โ ๐ฃ ฬ
C (xโ , yโ) = A xโ xโ ร B yโ yโ
w : (โ! xโ ๊ X , A xโ xโ)
โ (โ! yโ ๊ Y , B yโ yโ)
โ โ! (xโ , yโ) ๊ X ร Y , C (xโ , yโ)
w ((xโ , aโ) , ฯ) ((yโ , bโ) , ฯ) = ((xโ , yโ) , (aโ , bโ)) , ฮด
where
p : โ x y a b
โ (xโ , aโ) โก (x , a)
โ (yโ , bโ) โก (y , b)
โ (xโ , yโ) , (aโ , bโ) โก (x , y) , (a , b)
p xโ yโ aโ bโ (refl (xโ , aโ)) (refl (yโ , bโ)) = refl ((xโ , yโ) , (aโ , bโ))
ฮด : (((x , y) , (a , b)) : ฮฃ C) โ (xโ , yโ) , (aโ , bโ) โก ((x , y) , (a , b))
ฮด ((x , y) , (a , b)) = p x y a b (ฯ (x , a)) (ฯ (y , b))
ฯ : Nat (๐จ (xโ , yโ)) C
ฯ (xโ , yโ) p = f xโ xโ (ap prโ p) , g yโ yโ (ap prโ p)
ฮณ : is-fiberwise-equiv ฯ
ฮณ = universal-fiberwise-equiv C (w u v) (xโ , yโ) ฯ
variable
๐ฅโ ๐ฅโ ๐ฆโ ๐ฆโ : Universe
open sip
โช_โซ : {Sโ : ๐ค ฬ โ ๐ฅโ ฬ } {Sโ : ๐ค ฬ โ ๐ฅโ ฬ }
โ (ฮฃ X ๊ ๐ค ฬ , Sโ X ร Sโ X) โ ๐ค ฬ
โช X , sโ , sโ โซ = X
[_]โ : {Sโ : ๐ค ฬ โ ๐ฅโ ฬ } {Sโ : ๐ค ฬ โ ๐ฅโ ฬ }
โ (ฮฃ X ๊ ๐ค ฬ , Sโ X ร Sโ X) โ ฮฃ Sโ
[ X , sโ , sโ ]โ = (X , sโ)
[_]โ : {Sโ : ๐ค ฬ โ ๐ฅโ ฬ } {Sโ : ๐ค ฬ โ ๐ฅโ ฬ }
โ (ฮฃ X ๊ ๐ค ฬ , Sโ X ร Sโ X) โ ฮฃ Sโ
[ X , sโ , sโ ]โ = (X , sโ)
join : {Sโ : ๐ค ฬ โ ๐ฅโ ฬ } {Sโ : ๐ค ฬ โ ๐ฅโ ฬ }
โ SNS Sโ ๐ฆโ
โ SNS Sโ ๐ฆโ
โ SNS (ฮป X โ Sโ X ร Sโ X) (๐ฆโ โ ๐ฆโ)
join {๐ค} {๐ฅโ} {๐ฅโ} {๐ฆโ} {๐ฆโ} {Sโ} {Sโ} (ฮนโ , ฯโ , ฮธโ) (ฮนโ , ฯโ , ฮธโ) = ฮน , ฯ , ฮธ
where
S : ๐ค ฬ โ ๐ฅโ โ ๐ฅโ ฬ
S X = Sโ X ร Sโ X
ฮน : (A B : ฮฃ S) โ โจ A โฉ โ โจ B โฉ โ ๐ฆโ โ ๐ฆโ ฬ
ฮน A B e = ฮนโ [ A ]โ [ B ]โ e ร ฮนโ [ A ]โ [ B ]โ e
ฯ : (A : ฮฃ S) โ ฮน A A (id-โ โจ A โฉ)
ฯ A = (ฯโ [ A ]โ , ฯโ [ A ]โ)
ฮธ : {X : ๐ค ฬ } (s t : S X) โ is-equiv (canonical-map ฮน ฯ s t)
ฮธ {X} (sโ , sโ) (tโ , tโ) = ฮณ
where
c : (p : sโ , sโ โก tโ , tโ) โ ฮนโ (X , sโ) (X , tโ) (id-โ X)
ร ฮนโ (X , sโ) (X , tโ) (id-โ X)
c p = (canonical-map ฮนโ ฯโ sโ tโ (ap prโ p) ,
canonical-map ฮนโ ฯโ sโ tโ (ap prโ p))
i : is-equiv c
i = technical-lemma
(canonical-map ฮนโ ฯโ)
(canonical-map ฮนโ ฯโ)
ฮธโ ฮธโ (sโ , sโ) (tโ , tโ)
e : canonical-map ฮน ฯ (sโ , sโ) (tโ , tโ) โผ c
e (refl (sโ , sโ)) = refl (ฯโ (X , sโ) , ฯโ (X , sโ))
ฮณ : is-equiv (canonical-map ฮน ฯ (sโ , sโ) (tโ , tโ))
ฮณ = equivs-closed-under-โผ i e
_โโฆ_,_โง_ : {Sโ : ๐ค ฬ โ ๐ฅ ฬ } {Sโ : ๐ค ฬ โ ๐ฅโ ฬ }
โ (ฮฃ X ๊ ๐ค ฬ , Sโ X ร Sโ X)
โ SNS Sโ ๐ฆโ
โ SNS Sโ ๐ฆโ
โ (ฮฃ X ๊ ๐ค ฬ , Sโ X ร Sโ X)
โ ๐ค โ ๐ฆโ โ ๐ฆโ ฬ
A โโฆ ฯโ , ฯโ โง B = ฮฃ f ๊ (โช A โซ โ โช B โซ)
, ฮฃ i ๊ is-equiv f , homomorphic ฯโ [ A ]โ [ B ]โ (f , i)
ร homomorphic ฯโ [ A ]โ [ B ]โ (f , i)
characterization-of-join-โก : is-univalent ๐ค
โ {Sโ : ๐ค ฬ โ ๐ฅ ฬ } {Sโ : ๐ค ฬ โ ๐ฅโ ฬ }
(ฯโ : SNS Sโ ๐ฆโ) (ฯโ : SNS Sโ ๐ฆโ)
(A B : ฮฃ X ๊ ๐ค ฬ , Sโ X ร Sโ X)
โ (A โก B) โ (A โโฆ ฯโ , ฯโ โง B)
characterization-of-join-โก ua ฯโ ฯโ = characterization-of-โก ua (join ฯโ ฯโ)
module pointed-โ-magma {๐ค : Universe} where
open sip-join
โ-Magmaยท : ๐ค โบ ฬ
โ-Magmaยท = ฮฃ X ๊ ๐ค ฬ , (X โ X โ X) ร X
_โ
_ : โ-Magmaยท โ โ-Magmaยท โ ๐ค ฬ
(X , _ยท_ , xโ) โ
(Y , _*_ , yโ) =
ฮฃ f ๊ (X โ Y), is-equiv f
ร ((ฮป x x' โ f (x ยท x')) โก (ฮป x x' โ f x * f x'))
ร (f xโ โก yโ)
characterization-of-pointed-magma-โก : is-univalent ๐ค
โ (A B : โ-Magmaยท) โ (A โก B) โ (A โ
B)
characterization-of-pointed-magma-โก ua = characterization-of-join-โก ua
โ-magma.sns-data
pointed-type.sns-data
module monoid {๐ค : Universe} (ua : is-univalent ๐ค) where
dfe : dfunext ๐ค ๐ค
dfe = univalence-gives-dfunext ua
open sip
open sip-join
open sip-with-axioms
open monoids hiding (Monoid)
monoid-structure : ๐ค ฬ โ ๐ค ฬ
monoid-structure X = (X โ X โ X) ร X
monoid-axioms : (X : ๐ค ฬ ) โ monoid-structure X โ ๐ค ฬ
monoid-axioms X (_ยท_ , e) = is-set X
ร left-neutral e _ยท_
ร right-neutral e _ยท_
ร associative _ยท_
Monoid : ๐ค โบ ฬ
Monoid = ฮฃ X ๊ ๐ค ฬ , ฮฃ s ๊ monoid-structure X , monoid-axioms X s
monoid-axioms-subsingleton : (X : ๐ค ฬ ) (s : monoid-structure X)
โ is-subsingleton (monoid-axioms X s)
monoid-axioms-subsingleton X (_ยท_ , e) = subsingleton-criterion' ฮณ
where
ฮณ : monoid-axioms X (_ยท_ , e) โ is-subsingleton (monoid-axioms X (_ยท_ , e))
ฮณ (i , _) = ร-is-subsingleton
(being-set-is-subsingleton dfe)
(ร-is-subsingleton
(ฮ -is-subsingleton dfe
(ฮป x โ i (e ยท x) x))
(ร-is-subsingleton
(ฮ -is-subsingleton dfe
(ฮป x โ i (x ยท e) x))
(ฮ -is-subsingleton dfe
(ฮป x โ ฮ -is-subsingleton dfe
(ฮป y โ ฮ -is-subsingleton dfe
(ฮป z โ i ((x ยท y) ยท z) (x ยท (y ยท z))))))))
sns-data : SNS (ฮป X โ ฮฃ s ๊ monoid-structure X , monoid-axioms X s) ๐ค
sns-data = add-axioms
monoid-axioms monoid-axioms-subsingleton
(join
โ-magma.sns-data
pointed-type.sns-data)
_โ
_ : Monoid โ Monoid โ ๐ค ฬ
(X , (_ยท_ , d) , _) โ
(Y , (_*_ , e) , _) =
ฮฃ f ๊ (X โ Y), is-equiv f
ร ((ฮป x x' โ f (x ยท x')) โก (ฮป x x' โ f x * f x'))
ร (f d โก e)
characterization-of-monoid-โก : (A B : Monoid) โ (A โก B) โ (A โ
B)
characterization-of-monoid-โก = characterization-of-โก ua sns-data
monoid-structure' : ๐ค ฬ โ ๐ค ฬ
monoid-structure' X = X โ X โ X
has-unit : {X : ๐ค ฬ } โ monoid-structure' X โ ๐ค ฬ
has-unit {X} _ยท_ = ฮฃ e ๊ X , left-neutral e _ยท_ ร right-neutral e _ยท_
monoid-axioms' : (X : ๐ค ฬ ) โ monoid-structure' X โ ๐ค ฬ
monoid-axioms' X _ยท_ = is-set X ร has-unit _ยท_ ร associative _ยท_
Monoid' : ๐ค โบ ฬ
Monoid' = ฮฃ X ๊ ๐ค ฬ , ฮฃ s ๊ monoid-structure' X , monoid-axioms' X s
to-Monoid : Monoid' โ Monoid
to-Monoid (X , _ยท_ , i , (e , l , r) , a) = (X , (_ยท_ , e) , (i , l , r , a))
from-Monoid : Monoid โ Monoid'
from-Monoid (X , (_ยท_ , e) , (i , l , r , a)) = (X , _ยท_ , i , (e , l , r) , a)
to-Monoid-is-equiv : is-equiv to-Monoid
to-Monoid-is-equiv = invertibles-are-equivs to-Monoid (from-Monoid , refl , refl)
from-Monoid-is-equiv : is-equiv from-Monoid
from-Monoid-is-equiv = invertibles-are-equivs from-Monoid (to-Monoid , refl , refl)
the-two-types-of-monoids-coincide : Monoid' โ Monoid
the-two-types-of-monoids-coincide = to-Monoid , to-Monoid-is-equiv
monoid-axioms'-subsingleton : (X : ๐ค ฬ ) (s : monoid-structure' X)
โ is-subsingleton (monoid-axioms' X s)
monoid-axioms'-subsingleton X _ยท_ = subsingleton-criterion' ฮณ
where
ฮณ : monoid-axioms' X _ยท_ โ is-subsingleton (monoid-axioms' X _ยท_)
ฮณ (i , _ , _) =
ร-is-subsingleton
(being-set-is-subsingleton dfe)
(ร-is-subsingleton
k
(ฮ -is-subsingleton dfe (ฮป x โ
ฮ -is-subsingleton dfe (ฮป y โ
ฮ -is-subsingleton dfe (ฮป z โ i ((x ยท y) ยท z) (x ยท (y ยท z)))))))
where
j : (e : X) โ is-subsingleton (left-neutral e _ยท_ ร right-neutral e _ยท_)
j e = ร-is-subsingleton
(ฮ -is-subsingleton dfe (ฮป x โ i (e ยท x) x))
(ฮ -is-subsingleton dfe (ฮป x โ i (x ยท e) x))
k : is-subsingleton (has-unit _ยท_)
k (e , l , r) (e' , l' , r') = to-subtype-โก j p
where
p = e โกโจ (r' e)โปยน โฉ
(e ยท e') โกโจ l e' โฉ
e' โ
sns-data' : SNS (ฮป X โ ฮฃ s ๊ monoid-structure' X , monoid-axioms' X s) ๐ค
sns-data' = add-axioms
monoid-axioms' monoid-axioms'-subsingleton
โ-magma.sns-data
_โ
'_ : Monoid' โ Monoid' โ ๐ค ฬ
(X , _ยท_ , _) โ
' (Y , _*_ , _) =
ฮฃ f ๊ (X โ Y), is-equiv f
ร ((ฮป x x' โ f (x ยท x')) โก (ฮป x x' โ f x * f x'))
characterization-of-monoid'-โก : (A B : Monoid') โ (A โก B) โ (A โ
' B)
characterization-of-monoid'-โก = characterization-of-โก ua sns-data'
_โ
โ_ : Monoid โ Monoid โ ๐ค ฬ
(X , (_ยท_ , _) , _) โ
โ (Y , (_*_ , _) , _) =
ฮฃ f ๊ (X โ Y), is-equiv f
ร ((ฮป x x' โ f (x ยท x')) โก (ฮป x x' โ f x * f x'))
2nd-characterization-of-monoid-โก : (A B : Monoid) โ (A โก B) โ A โ
โ B
2nd-characterization-of-monoid-โก A B = (A โก B) โโจ i โฉ
(from-Monoid A โก from-Monoid B) โโจ ii โฉ
(from-Monoid A โ
' from-Monoid B) โโจ iii โฉ
(A โ
โ B) โ
where
ฯ : A โก B โ from-Monoid A โก from-Monoid B
ฯ = ap from-Monoid
from-Monoid-is-embedding : is-embedding from-Monoid
from-Monoid-is-embedding = equivs-are-embeddings from-Monoid from-Monoid-is-equiv
ฯ-is-equiv : is-equiv ฯ
ฯ-is-equiv = embedding-gives-ap-is-equiv from-Monoid from-Monoid-is-embedding A B
clearly : (from-Monoid A โ
' from-Monoid B) โก (A โ
โ B)
clearly = refl _
i = (ฯ , ฯ-is-equiv)
ii = characterization-of-monoid'-โก _ _
iii = IdโEq _ _ clearly
module associative-โ-magma
{๐ค : Universe}
(ua : is-univalent ๐ค)
where
fe : dfunext ๐ค ๐ค
fe = univalence-gives-dfunext ua
associative : {X : ๐ค ฬ } โ (X โ X โ X) โ ๐ค ฬ
associative _ยท_ = โ x y z โ (x ยท y) ยท z โก x ยท (y ยท z)
โ-amagma-structure : ๐ค ฬ โ ๐ค ฬ
โ-amagma-structure X = ฮฃ _ยท_ ๊ (X โ X โ X), (associative _ยท_)
โ-aMagma : ๐ค โบ ฬ
โ-aMagma = ฮฃ X ๊ ๐ค ฬ , โ-amagma-structure X
homomorphic : {X Y : ๐ค ฬ } โ (X โ X โ X) โ (Y โ Y โ Y) โ (X โ Y) โ ๐ค ฬ
homomorphic _ยท_ _*_ f = (ฮป x y โ f (x ยท y)) โก (ฮป x y โ f x * f y)
respect-assoc : {X A : ๐ค ฬ } (_ยท_ : X โ X โ X) (_*_ : A โ A โ A)
โ associative _ยท_
โ associative _*_
โ (f : X โ A) โ homomorphic _ยท_ _*_ f โ ๐ค ฬ
respect-assoc _ยท_ _*_ ฮฑ ฮฒ f h = fฮฑ โก ฮฒf
where
l = ฮป x y z โ f ((x ยท y) ยท z) โกโจ ap (ฮป - โ - (x ยท y) z) h โฉ
f (x ยท y) * f z โกโจ ap (ฮป - โ - x y * f z) h โฉ
(f x * f y) * f z โ
r = ฮป x y z โ f (x ยท (y ยท z)) โกโจ ap (ฮป - โ - x (y ยท z)) h โฉ
f x * f (y ยท z) โกโจ ap (ฮป - โ f x * - y z) h โฉ
f x * (f y * f z) โ
fฮฑ ฮฒf : โ x y z โ (f x * f y) * f z โก f x * (f y * f z)
fฮฑ x y z = (l x y z)โปยน โ ap f (ฮฑ x y z) โ r x y z
ฮฒf x y z = ฮฒ (f x) (f y) (f z)
remark : {X : ๐ค ฬ } (_ยท_ : X โ X โ X) (ฮฑ ฮฒ : associative _ยท_ )
โ respect-assoc _ยท_ _ยท_ ฮฑ ฮฒ id (refl _ยท_)
โก ((ฮป x y z โ refl ((x ยท y) ยท z) โ ap id (ฮฑ x y z)) โก ฮฒ)
remark _ยท_ ฮฑ ฮฒ = refl _
open sip hiding (homomorphic)
sns-data : SNS โ-amagma-structure ๐ค
sns-data = (ฮน , ฯ , ฮธ)
where
ฮน : (๐ง ๐ : โ-aMagma) โ โจ ๐ง โฉ โ โจ ๐ โฉ โ ๐ค ฬ
ฮน (X , _ยท_ , ฮฑ) (A , _*_ , ฮฒ) (f , i) = ฮฃ h ๊ homomorphic _ยท_ _*_ f
, respect-assoc _ยท_ _*_ ฮฑ ฮฒ f h
ฯ : (๐ง : โ-aMagma) โ ฮน ๐ง ๐ง (id-โ โจ ๐ง โฉ)
ฯ (X , _ยท_ , ฮฑ) = h , p
where
h : homomorphic _ยท_ _ยท_ id
h = refl _ยท_
p : (ฮป x y z โ refl ((x ยท y) ยท z) โ ap id (ฮฑ x y z)) โก ฮฑ
p = fe (ฮป x โ fe (ฮป y โ fe (ฮป z โ refl-left โ ap-id (ฮฑ x y z))))
u : (X : ๐ค ฬ ) โ โ s โ โ! t ๊ โ-amagma-structure X , ฮน (X , s) (X , t) (id-โ X)
u X (_ยท_ , ฮฑ) = c , ฯ
where
c : ฮฃ t ๊ โ-amagma-structure X , ฮน (X , _ยท_ , ฮฑ) (X , t) (id-โ X)
c = (_ยท_ , ฮฑ) , ฯ (X , _ยท_ , ฮฑ)
ฯ : (ฯ : ฮฃ t ๊ โ-amagma-structure X , ฮน (X , _ยท_ , ฮฑ) (X , t) (id-โ X)) โ c โก ฯ
ฯ ((_ยท_ , ฮฒ) , refl _ยท_ , k) = ฮณ
where
a : associative _ยท_
a x y z = refl ((x ยท y) ยท z) โ ap id (ฮฑ x y z)
g : singleton-type' a โ ฮฃ t ๊ โ-amagma-structure X , ฮน (X , _ยท_ , ฮฑ) (X , t) (id-โ X)
g (ฮฒ , k) = (_ยท_ , ฮฒ) , refl _ยท_ , k
i : is-subsingleton (singleton-type' a)
i = singletons-are-subsingletons _ (singleton-types'-are-singletons _ a)
q : ฮฑ , prโ (ฯ (X , _ยท_ , ฮฑ)) โก ฮฒ , k
q = i _ _
ฮณ : c โก (_ยท_ , ฮฒ) , refl _ยท_ , k
ฮณ = ap g q
ฮธ : {X : ๐ค ฬ } (s t : โ-amagma-structure X) โ is-equiv (canonical-map ฮน ฯ s t)
ฮธ {X} s = universal-fiberwise-equiv (ฮป t โ ฮน (X , s) (X , t) (id-โ X))
(u X s) s (canonical-map ฮน ฯ s)
_โ
_ : โ-aMagma โ โ-aMagma โ ๐ค ฬ
(X , _ยท_ , ฮฑ) โ
(Y , _*_ , ฮฒ) = ฮฃ f ๊ (X โ Y)
, is-equiv f
ร (ฮฃ h ๊ homomorphic _ยท_ _*_ f
, respect-assoc _ยท_ _*_ ฮฑ ฮฒ f h)
characterization-of-โ-aMagma-โก : (A B : โ-aMagma) โ (A โก B) โ (A โ
B)
characterization-of-โ-aMagma-โก = characterization-of-โก ua sns-data
module group {๐ค : Universe} (ua : is-univalent ๐ค) where
hfe : hfunext ๐ค ๐ค
hfe = univalence-gives-hfunext ua
open sip
open sip-with-axioms
open monoid {๐ค} ua hiding (sns-data ; _โ
_ ; _โ
'_)
group-structure : ๐ค ฬ โ ๐ค ฬ
group-structure X = ฮฃ s ๊ monoid-structure X , monoid-axioms X s
group-axiom : (X : ๐ค ฬ ) โ monoid-structure X โ ๐ค ฬ
group-axiom X (_ยท_ , e) = (x : X) โ ฮฃ x' ๊ X , (x ยท x' โก e) ร (x' ยท x โก e)
Group : ๐ค โบ ฬ
Group = ฮฃ X ๊ ๐ค ฬ , ฮฃ ((_ยท_ , e) , a) ๊ group-structure X , group-axiom X (_ยท_ , e)
inv-lemma : (X : ๐ค ฬ ) (_ยท_ : X โ X โ X) (e : X)
โ monoid-axioms X (_ยท_ , e)
โ (x y z : X)
โ (y ยท x) โก e
โ (x ยท z) โก e
โ y โก z
inv-lemma X _ยท_ e (s , l , r , a) x y z q p =
y โกโจ (r y)โปยน โฉ
(y ยท e) โกโจ ap (y ยท_) (p โปยน) โฉ
(y ยท (x ยท z)) โกโจ (a y x z)โปยน โฉ
((y ยท x) ยท z) โกโจ ap (_ยท z) q โฉ
(e ยท z) โกโจ l z โฉ
z โ
group-axiom-is-subsingleton : (X : ๐ค ฬ )
โ (s : group-structure X)
โ is-subsingleton (group-axiom X (prโ s))
group-axiom-is-subsingleton X ((_ยท_ , e) , (s , l , r , a)) = ฮณ
where
i : (x : X) โ is-subsingleton (ฮฃ x' ๊ X , (x ยท x' โก e) ร (x' ยท x โก e))
i x (y , _ , q) (z , p , _) = u
where
t : y โก z
t = inv-lemma X _ยท_ e (s , l , r , a) x y z q p
u : (y , _ , q) โก (z , p , _)
u = to-subtype-โก (ฮป x' โ ร-is-subsingleton (s (x ยท x') e) (s (x' ยท x) e)) t
ฮณ : is-subsingleton (group-axiom X (_ยท_ , e))
ฮณ = ฮ -is-subsingleton dfe i
sns-data : SNS (ฮป X โ ฮฃ s ๊ group-structure X , group-axiom X (prโ s)) ๐ค
sns-data = add-axioms
(ฮป X s โ group-axiom X (prโ s)) group-axiom-is-subsingleton
(monoid.sns-data ua)
_โ
_ : Group โ Group โ ๐ค ฬ
(X , ((_ยท_ , d) , _) , _) โ
(Y , ((_*_ , e) , _) , _) =
ฮฃ f ๊ (X โ Y), is-equiv f
ร ((ฮป x x' โ f (x ยท x')) โก (ฮป x x' โ f x * f x'))
ร (f d โก e)
characterization-of-group-โก : (A B : Group) โ (A โก B) โ (A โ
B)
characterization-of-group-โก = characterization-of-โก ua sns-data
_โ
'_ : Group โ Group โ ๐ค ฬ
(X , ((_ยท_ , d) , _) , _) โ
' (Y , ((_*_ , e) , _) , _) =
ฮฃ f ๊ (X โ Y), is-equiv f
ร ((ฮป x x' โ f (x ยท x')) โก (ฮป x x' โ f x * f x'))
group-structure-of : (G : Group) โ group-structure โจ G โฉ
group-structure-of (X , ((_ยท_ , e) , i , l , r , a) , ฮณ) = (_ยท_ , e) , i , l , r , a
monoid-structure-of : (G : Group) โ monoid-structure โจ G โฉ
monoid-structure-of (X , ((_ยท_ , e) , i , l , r , a) , ฮณ) = (_ยท_ , e)
monoid-axioms-of : (G : Group) โ monoid-axioms โจ G โฉ (monoid-structure-of G)
monoid-axioms-of (X , ((_ยท_ , e) , i , l , r , a) , ฮณ) = i , l , r , a
multiplication : (G : Group) โ โจ G โฉ โ โจ G โฉ โ โจ G โฉ
multiplication (X , ((_ยท_ , e) , i , l , r , a) , ฮณ) = _ยท_
syntax multiplication G x y = x ยทโจ G โฉ y
unit : (G : Group) โ โจ G โฉ
unit (X , ((_ยท_ , e) , i , l , r , a) , ฮณ) = e
group-is-set : (G : Group)
โ is-set โจ G โฉ
group-is-set (X , ((_ยท_ , e) , i , l , r , a) , ฮณ) = i
unit-left : (G : Group) (x : โจ G โฉ)
โ unit G ยทโจ G โฉ x โก x
unit-left (X , ((_ยท_ , e) , i , l , r , a) , ฮณ) x = l x
unit-right : (G : Group) (x : โจ G โฉ)
โ x ยทโจ G โฉ unit G โก x
unit-right (X , ((_ยท_ , e) , i , l , r , a) , ฮณ) x = r x
assoc : (G : Group) (x y z : โจ G โฉ)
โ (x ยทโจ G โฉ y) ยทโจ G โฉ z โก x ยทโจ G โฉ (y ยทโจ G โฉ z)
assoc (X , ((_ยท_ , e) , i , l , r , a) , ฮณ) = a
inv : (G : Group) โ โจ G โฉ โ โจ G โฉ
inv (X , ((_ยท_ , e) , i , l , r , a) , ฮณ) x = prโ (ฮณ x)
inv-left : (G : Group) (x : โจ G โฉ)
โ inv G x ยทโจ G โฉ x โก unit G
inv-left (X , ((_ยท_ , e) , i , l , r , a) , ฮณ) x = prโ (prโ (ฮณ x))
inv-right : (G : Group) (x : โจ G โฉ)
โ x ยทโจ G โฉ inv G x โก unit G
inv-right (X , ((_ยท_ , e) , i , l , r , a) , ฮณ) x = prโ (prโ (ฮณ x))
preserves-multiplication : (G H : Group) โ (โจ G โฉ โ โจ H โฉ) โ ๐ค ฬ
preserves-multiplication G H f = (ฮป (x y : โจ G โฉ) โ f (x ยทโจ G โฉ y))
โก (ฮป (x y : โจ G โฉ) โ f x ยทโจ H โฉ f y)
preserves-unit : (G H : Group) โ (โจ G โฉ โ โจ H โฉ) โ ๐ค ฬ
preserves-unit G H f = f (unit G) โก unit H
idempotent-is-unit : (G : Group) (x : โจ G โฉ)
โ x ยทโจ G โฉ x โก x
โ x โก unit G
idempotent-is-unit G x p = ฮณ
where
x' = inv G x
ฮณ = x โกโจ (unit-left G x)โปยน โฉ
unit G ยทโจ G โฉ x โกโจ (ap (ฮป - โ - ยทโจ G โฉ x) (inv-left G x))โปยน โฉ
(x' ยทโจ G โฉ x) ยทโจ G โฉ x โกโจ assoc G x' x x โฉ
x' ยทโจ G โฉ (x ยทโจ G โฉ x) โกโจ ap (ฮป - โ x' ยทโจ G โฉ -) p โฉ
x' ยทโจ G โฉ x โกโจ inv-left G x โฉ
unit G โ
unit-preservation-lemma : (G H : Group) (f : โจ G โฉ โ โจ H โฉ)
โ preserves-multiplication G H f
โ preserves-unit G H f
unit-preservation-lemma G H f m = idempotent-is-unit H e p
where
e = f (unit G)
p = e ยทโจ H โฉ e โกโจ ap (ฮป - โ - (unit G) (unit G)) (m โปยน) โฉ
f (unit G ยทโจ G โฉ unit G) โกโจ ap f (unit-left G (unit G)) โฉ
e โ
inv-Lemma : (G : Group) (x y z : โจ G โฉ)
โ (y ยทโจ G โฉ x) โก unit G
โ (x ยทโจ G โฉ z) โก unit G
โ y โก z
inv-Lemma G = inv-lemma โจ G โฉ (multiplication G) (unit G) (monoid-axioms-of G)
one-left-inv : (G : Group) (x x' : โจ G โฉ)
โ (x' ยทโจ G โฉ x) โก unit G
โ x' โก inv G x
one-left-inv G x x' p = inv-Lemma G x x' (inv G x) p (inv-right G x)
one-right-inv : (G : Group) (x x' : โจ G โฉ)
โ (x ยทโจ G โฉ x') โก unit G
โ x' โก inv G x
one-right-inv G x x' p = (inv-Lemma G x (inv G x) x' (inv-left G x) p)โปยน
preserves-inv : (G H : Group) โ (โจ G โฉ โ โจ H โฉ) โ ๐ค ฬ
preserves-inv G H f = (x : โจ G โฉ) โ f (inv G x) โก inv H (f x)
inv-preservation-lemma : (G H : Group) (f : โจ G โฉ โ โจ H โฉ)
โ preserves-multiplication G H f
โ preserves-inv G H f
inv-preservation-lemma G H f m x = ฮณ
where
p = f (inv G x) ยทโจ H โฉ f x โกโจ (ap (ฮป - โ - (inv G x) x) m)โปยน โฉ
f (inv G x ยทโจ G โฉ x) โกโจ ap f (inv-left G x) โฉ
f (unit G) โกโจ unit-preservation-lemma G H f m โฉ
unit H โ
ฮณ : f (inv G x) โก inv H (f x)
ฮณ = one-left-inv H (f x) (f (inv G x)) p
is-homomorphism : (G H : Group) โ (โจ G โฉ โ โจ H โฉ) โ ๐ค ฬ
is-homomorphism G H f = preserves-multiplication G H f
ร preserves-unit G H f
preservation-of-mult-is-subsingleton : (G H : Group) (f : โจ G โฉ โ โจ H โฉ)
โ is-subsingleton (preserves-multiplication G H f)
preservation-of-mult-is-subsingleton G H f = j
where
j : is-subsingleton (preserves-multiplication G H f)
j = ฮ -is-set hfe
(ฮป _ โ ฮ -is-set hfe
(ฮป _ โ group-is-set H))
(ฮป (x y : โจ G โฉ) โ f (x ยทโจ G โฉ y))
(ฮป (x y : โจ G โฉ) โ f x ยทโจ H โฉ f y)
being-homomorphism-is-subsingleton : (G H : Group) (f : โจ G โฉ โ โจ H โฉ)
โ is-subsingleton (is-homomorphism G H f)
being-homomorphism-is-subsingleton G H f = i
where
i : is-subsingleton (is-homomorphism G H f)
i = ร-is-subsingleton
(preservation-of-mult-is-subsingleton G H f)
(group-is-set H (f (unit G)) (unit H))
notions-of-homomorphism-agree : (G H : Group) (f : โจ G โฉ โ โจ H โฉ)
โ is-homomorphism G H f
โ preserves-multiplication G H f
notions-of-homomorphism-agree G H f = ฮณ
where
ฮฑ : is-homomorphism G H f โ preserves-multiplication G H f
ฮฑ = prโ
ฮฒ : preserves-multiplication G H f โ is-homomorphism G H f
ฮฒ m = m , unit-preservation-lemma G H f m
ฮณ : is-homomorphism G H f โ preserves-multiplication G H f
ฮณ = logically-equivalent-subsingletons-are-equivalent _ _
(being-homomorphism-is-subsingleton G H f)
(preservation-of-mult-is-subsingleton G H f)
(ฮฑ , ฮฒ)
โ
-agreement : (G H : Group) โ (G โ
H) โ (G โ
' H)
โ
-agreement G H = ฮฃ-cong (ฮป f โ ฮฃ-cong (ฮป _ โ notions-of-homomorphism-agree G H f))
forget-unit-preservation : (G H : Group) โ (G โ
H) โ (G โ
' H)
forget-unit-preservation G H (f , e , m , _) = f , e , m
NB : (G H : Group) โ โ โ
-agreement G H โ โก forget-unit-preservation G H
NB G H = refl _
forget-unit-preservation-is-equiv : (G H : Group)
โ is-equiv (forget-unit-preservation G H)
forget-unit-preservation-is-equiv G H = โโ-is-equiv (โ
-agreement G H)
module slice
{๐ค ๐ฅ : Universe}
(R : ๐ฅ ฬ )
where
open sip
S : ๐ค ฬ โ ๐ค โ ๐ฅ ฬ
S X = X โ R
sns-data : SNS S (๐ค โ ๐ฅ)
sns-data = (ฮน , ฯ , ฮธ)
where
ฮน : (A B : ฮฃ S) โ โจ A โฉ โ โจ B โฉ โ ๐ค โ ๐ฅ ฬ
ฮน (X , g) (Y , h) (f , _) = (g โก h โ f)
ฯ : (A : ฮฃ S) โ ฮน A A (id-โ โจ A โฉ)
ฯ (X , g) = refl g
k : {X : ๐ค ฬ } {g h : S X} โ canonical-map ฮน ฯ g h โผ ๐๐ (g โก h)
k (refl g) = refl (refl g)
ฮธ : {X : ๐ค ฬ } (g h : S X) โ is-equiv (canonical-map ฮน ฯ g h)
ฮธ g h = equivs-closed-under-โผ (id-is-equiv (g โก h)) k
_โ
_ : ๐ค / R โ ๐ค / R โ ๐ค โ ๐ฅ ฬ
(X , g) โ
(Y , h) = ฮฃ f ๊ (X โ Y), is-equiv f ร (g โก h โ f)
characterization-of-/-โก : is-univalent ๐ค โ (A B : ๐ค / R) โ (A โก B) โ (A โ
B)
characterization-of-/-โก ua = characterization-of-โก ua sns-data
module subgroup
(๐ค : Universe)
(ua : Univalence)
where
gfe : global-dfunext
gfe = univalence-gives-global-dfunext ua
open sip
open monoid {๐ค} (ua ๐ค) hiding (sns-data ; _โ
_)
open group {๐ค} (ua ๐ค)
module ambient (G : Group) where
_ยท_ : โจ G โฉ โ โจ G โฉ โ โจ G โฉ
x ยท y = x ยทโจ G โฉ y
infixl 42 _ยท_
group-closed : (โจ G โฉ โ ๐ฅ ฬ ) โ ๐ค โ ๐ฅ ฬ
group-closed ๐ = ๐ (unit G)
ร ((x y : โจ G โฉ) โ ๐ x โ ๐ y โ ๐ (x ยท y))
ร ((x : โจ G โฉ) โ ๐ x โ ๐ (inv G x))
Subgroup : ๐ค โบ ฬ
Subgroup = ฮฃ A ๊ ๐ โจ G โฉ , group-closed (_โ A)
โช_โซ : Subgroup โ ๐ โจ G โฉ
โช A , u , c , ฮน โซ = A
being-group-closed-subset-is-subsingleton : (A : ๐ โจ G โฉ) โ is-subsingleton (group-closed (_โ A))
being-group-closed-subset-is-subsingleton A = ร-is-subsingleton
(โ-is-subsingleton A (unit G))
(ร-is-subsingleton
(ฮ -is-subsingleton dfe
(ฮป x โ ฮ -is-subsingleton dfe
(ฮป y โ ฮ -is-subsingleton dfe
(ฮป _ โ ฮ -is-subsingleton dfe
(ฮป _ โ โ-is-subsingleton A (x ยท y))))))
(ฮ -is-subsingleton dfe
(ฮป x โ ฮ -is-subsingleton dfe
(ฮป _ โ โ-is-subsingleton A (inv G x)))))
โชโซ-is-embedding : is-embedding โช_โซ
โชโซ-is-embedding = prโ-is-embedding being-group-closed-subset-is-subsingleton
ap-โชโซ : (S T : Subgroup) โ S โก T โ โช S โซ โก โช T โซ
ap-โชโซ S T = ap โช_โซ
ap-โชโซ-is-equiv : (S T : Subgroup) โ is-equiv (ap-โชโซ S T)
ap-โชโซ-is-equiv = embedding-gives-ap-is-equiv โช_โซ โชโซ-is-embedding
subgroups-form-a-set : is-set Subgroup
subgroups-form-a-set S T = equiv-to-subsingleton
(ap-โชโซ S T , ap-โชโซ-is-equiv S T)
(powersets-are-sets' ua โช S โซ โช T โซ)
subgroup-equality : (S T : Subgroup)
โ (S โก T)
โ ((x : โจ G โฉ) โ (x โ โช S โซ) โ (x โ โช T โซ))
subgroup-equality S T = ฮณ
where
f : S โก T โ (x : โจ G โฉ) โ x โ โช S โซ โ x โ โช T โซ
f p x = transport (ฮป - โ x โ โช - โซ) p , transport (ฮป - โ x โ โช - โซ) (p โปยน)
h : ((x : โจ G โฉ) โ x โ โช S โซ โ x โ โช T โซ) โ โช S โซ โก โช T โซ
h ฯ = subset-extensionality' ua ฮฑ ฮฒ
where
ฮฑ : โช S โซ โ โช T โซ
ฮฑ x = lr-implication (ฯ x)
ฮฒ : โช T โซ โ โช S โซ
ฮฒ x = rl-implication (ฯ x)
g : ((x : โจ G โฉ) โ x โ โช S โซ โ x โ โช T โซ) โ S โก T
g = inverse (ap-โชโซ S T) (ap-โชโซ-is-equiv S T) โ h
ฮณ : (S โก T) โ ((x : โจ G โฉ) โ x โ โช S โซ โ x โ โช T โซ)
ฮณ = logically-equivalent-subsingletons-are-equivalent _ _
(subgroups-form-a-set S T)
(ฮ -is-subsingleton dfe
(ฮป x โ ร-is-subsingleton
(ฮ -is-subsingleton dfe (ฮป _ โ โ-is-subsingleton โช T โซ x))
(ฮ -is-subsingleton dfe (ฮป _ โ โ-is-subsingleton โช S โซ x))))
(f , g)
Subgroup' : ๐ค โบ ฬ
Subgroup' = ฮฃ H ๊ Group
, ฮฃ h ๊ (โจ H โฉ โ โจ G โฉ)
, is-embedding h
ร is-homomorphism H G h
T : ๐ค ฬ โ ๐ค ฬ
T X = ฮฃ ((_ยท_ , e) , a) ๊ group-structure X , group-axiom X (_ยท_ , e)
module _ {X : ๐ค ฬ } (h : X โ โจ G โฉ) (h-is-embedding : is-embedding h) where
private
h-lc : left-cancellable h
h-lc = embeddings-are-lc h h-is-embedding
having-group-closed-fiber-is-subsingleton : is-subsingleton (group-closed (fiber h))
having-group-closed-fiber-is-subsingleton = being-group-closed-subset-is-subsingleton A
where
A : ๐ โจ G โฉ
A y = (fiber h y , h-is-embedding y)
at-most-one-homomorphic-structure : is-subsingleton (ฮฃ ฯ ๊ T X , is-homomorphism (X , ฯ) G h)
at-most-one-homomorphic-structure
((((_*_ , unitH) , maxioms) , gaxiom) , (pmult , punit))
((((_*'_ , unitH') , maxioms') , gaxiom') , (pmult' , punit'))
= ฮณ
where
ฯ ฯ' : T X
ฯ = ((_*_ , unitH) , maxioms) , gaxiom
ฯ' = ((_*'_ , unitH') , maxioms') , gaxiom'
i : is-homomorphism (X , ฯ) G h
i = (pmult , punit)
i' : is-homomorphism (X , ฯ') G h
i' = (pmult' , punit')
p : _*_ โก _*'_
p = gfe (ฮป x โ gfe (ฮป y โ h-lc (h (x * y) โกโจ ap (ฮป - โ - x y) pmult โฉ
h x ยท h y โกโจ (ap (ฮป - โ - x y) pmult')โปยน โฉ
h (x *' y) โ)))
q : unitH โก unitH'
q = h-lc (h unitH โกโจ punit โฉ
unit G โกโจ punit' โปยน โฉ
h unitH' โ)
r : (_*_ , unitH) โก (_*'_ , unitH')
r = to-ร-โก (p , q)
ฮด : ฯ โก ฯ'
ฮด = to-subtype-โก
(group-axiom-is-subsingleton X)
(to-subtype-โก
(monoid-axioms-subsingleton X)
r)
ฮณ : (ฯ , i) โก (ฯ' , i')
ฮณ = to-subtype-โก (ฮป ฯ โ being-homomorphism-is-subsingleton (X , ฯ) G h) ฮด
homomorphic-structure-gives-group-closed-fiber : (ฮฃ ฯ ๊ T X , is-homomorphism (X , ฯ) G h)
โ group-closed (fiber h)
homomorphic-structure-gives-group-closed-fiber
((((_*_ , unitH) , maxioms) , gaxiom) , (pmult , punit))
= (unitc , mulc , invc)
where
H : Group
H = X , ((_*_ , unitH) , maxioms) , gaxiom
unitc : fiber h (unit G)
unitc = unitH , punit
mulc : ((x y : โจ G โฉ) โ fiber h x โ fiber h y โ fiber h (x ยท y))
mulc x y (a , p) (b , q) = (a * b) ,
(h (a * b) โกโจ ap (ฮป - โ - a b) pmult โฉ
h a ยท h b โกโจ apโ (ฮป - -' โ - ยท -') p q โฉ
x ยท y โ)
invc : ((x : โจ G โฉ) โ fiber h x โ fiber h (inv G x))
invc x (a , p) = inv H a ,
(h (inv H a) โกโจ inv-preservation-lemma H G h pmult a โฉ
inv G (h a) โกโจ ap (inv G) p โฉ
inv G x โ)
group-closed-fiber-gives-homomorphic-structure : group-closed (fiber h)
โ (ฮฃ ฯ ๊ T X , is-homomorphism (X , ฯ) G h)
group-closed-fiber-gives-homomorphic-structure (unitc , mulc , invc) = ฯ , i
where
ฯ : (x : X) โ fiber h (h x)
ฯ x = (x , refl (h x))
unitH : X
unitH = fiber-point unitc
_*_ : X โ X โ X
x * y = fiber-point (mulc (h x) (h y) (ฯ x) (ฯ y))
invH : X โ X
invH x = fiber-point (invc (h x) (ฯ x))
pmul : (x y : X) โ h (x * y) โก h x ยท h y
pmul x y = fiber-identification (mulc (h x) (h y) (ฯ x) (ฯ y))
punit : h unitH โก unit G
punit = fiber-identification unitc
pinv : (x : X) โ h (invH x) โก inv G (h x)
pinv x = fiber-identification (invc (h x) (ฯ x))
unitH-left : (x : X) โ unitH * x โก x
unitH-left x = h-lc (h (unitH * x) โกโจ pmul unitH x โฉ
h unitH ยท h x โกโจ ap (_ยท h x) punit โฉ
unit G ยท h x โกโจ unit-left G (h x) โฉ
h x โ)
unitH-right : (x : X) โ x * unitH โก x
unitH-right x = h-lc (h (x * unitH) โกโจ pmul x unitH โฉ
h x ยท h unitH โกโจ ap (h x ยท_) punit โฉ
h x ยท unit G โกโจ unit-right G (h x) โฉ
h x โ)
assocH : (x y z : X) โ ((x * y) * z) โก (x * (y * z))
assocH x y z = h-lc (h ((x * y) * z) โกโจ pmul (x * y) z โฉ
h (x * y) ยท h z โกโจ ap (_ยท h z) (pmul x y) โฉ
(h x ยท h y) ยท h z โกโจ assoc G (h x) (h y) (h z) โฉ
h x ยท (h y ยท h z) โกโจ (ap (h x ยท_) (pmul y z))โปยน โฉ
h x ยท h (y * z) โกโจ (pmul x (y * z))โปยน โฉ
h (x * (y * z)) โ)
group-axiomH : (x : X) โ ฮฃ x' ๊ X , (x * x' โก unitH) ร (x' * x โก unitH)
group-axiomH x = invH x ,
h-lc (h (x * invH x) โกโจ pmul x (invH x) โฉ
h x ยท h (invH x) โกโจ ap (h x ยท_) (pinv x) โฉ
h x ยท inv G (h x) โกโจ inv-right G (h x) โฉ
unit G โกโจ punit โปยน โฉ
h unitH โ),
h-lc ((h (invH x * x) โกโจ pmul (invH x) x โฉ
h (invH x) ยท h x โกโจ ap (_ยท h x) (pinv x) โฉ
inv G (h x) ยท h x โกโจ inv-left G (h x) โฉ
unit G โกโจ punit โปยน โฉ
h unitH โ))
j : is-set X
j = subtypes-of-sets-are-sets h h-lc (group-is-set G)
ฯ : T X
ฯ = ((_*_ , unitH) , (j , unitH-left , unitH-right , assocH)) , group-axiomH
i : is-homomorphism (X , ฯ) G h
i = gfe (ฮป x โ gfe (pmul x)) , punit
fiber-structure-lemma : group-closed (fiber h)
โ (ฮฃ ฯ ๊ T X , is-homomorphism (X , ฯ) G h)
fiber-structure-lemma = logically-equivalent-subsingletons-are-equivalent _ _
having-group-closed-fiber-is-subsingleton
at-most-one-homomorphic-structure
(group-closed-fiber-gives-homomorphic-structure ,
homomorphic-structure-gives-group-closed-fiber)
characterization-of-the-type-of-subgroups : Subgroup โ Subgroup'
characterization-of-the-type-of-subgroups =
Subgroup โโจ i โฉ
(ฮฃ A ๊ ๐ โจ G โฉ , group-closed (_โ A)) โโจ ii โฉ
(ฮฃ (X , h , e) ๊ Subtype โจ G โฉ , group-closed (fiber h)) โโจ iii โฉ
(ฮฃ X ๊ ๐ค ฬ , ฮฃ (h , e) ๊ X โช โจ G โฉ , group-closed (fiber h)) โโจ iv โฉ
(ฮฃ X ๊ ๐ค ฬ , ฮฃ (h , e) ๊ X โช โจ G โฉ , ฮฃ ฯ ๊ T X , is-homomorphism (X , ฯ) G h) โโจ v โฉ
(ฮฃ X ๊ ๐ค ฬ , ฮฃ h ๊ (X โ โจ G โฉ) , ฮฃ e ๊ is-embedding h , ฮฃ ฯ ๊ T X , is-homomorphism (X , ฯ) G h) โโจ vi โฉ
(ฮฃ X ๊ ๐ค ฬ , ฮฃ h ๊ (X โ โจ G โฉ) , ฮฃ ฯ ๊ T X , ฮฃ e ๊ is-embedding h , is-homomorphism (X , ฯ) G h) โโจ vii โฉ
(ฮฃ X ๊ ๐ค ฬ , ฮฃ ฯ ๊ T X , ฮฃ h ๊ (X โ โจ G โฉ) , is-embedding h ร is-homomorphism (X , ฯ) G h) โโจ viii โฉ
(ฮฃ H ๊ Group , ฮฃ h ๊ (โจ H โฉ โ โจ G โฉ) , is-embedding h ร is-homomorphism H G h) โโจ ix โฉ
Subgroup' โ
where
ฯ : Subtype โจ G โฉ โ ๐ โจ G โฉ
ฯ = ฯ-special is-subsingleton โจ G โฉ
j : is-equiv ฯ
j = ฯ-special-is-equiv (ua ๐ค) gfe is-subsingleton โจ G โฉ
i = IdโEq _ _ (refl Subgroup)
ii = ฮฃ-change-of-variable (ฮป (A : ๐ โจ G โฉ) โ group-closed (_โ A)) ฯ j
iii = ฮฃ-assoc
iv = ฮฃ-cong (ฮป X โ ฮฃ-cong (ฮป (h , e) โ fiber-structure-lemma h e))
v = ฮฃ-cong (ฮป X โ ฮฃ-assoc)
vi = ฮฃ-cong (ฮป X โ ฮฃ-cong (ฮป h โ ฮฃ-flip))
vii = ฮฃ-cong (ฮป X โ ฮฃ-flip)
viii = โ-sym ฮฃ-assoc
ix = IdโEq _ _ (refl Subgroup')
induced-group : Subgroup โ Group
induced-group S = prโ (โ characterization-of-the-type-of-subgroups โ S)
forgetful-map : Subgroup' โ ๐ค / โจ G โฉ
forgetful-map ((X , _) , h , _) = (X , h)
forgetful-map-is-embedding : is-embedding forgetful-map
forgetful-map-is-embedding = ฮณ
where
Subtype' : ๐ค ฬ โ ๐ค โบ ฬ
Subtype' X = ฮฃ (X , h) ๊ ๐ค / โจ G โฉ , is-embedding h
fโ : Subgroup' โ Subtype โจ G โฉ
fโ ((X , _) , h , e , _) = (X , h , e)
fโ : Subtype โจ G โฉ โ Subtype' โจ G โฉ
fโ (X , h , e) = ((X , h) , e)
fโ : Subtype' โจ G โฉ โ ๐ค / โจ G โฉ
fโ ((X , h) , e) = (X , h)
by-construction : forgetful-map โก fโ โ fโ โ fโ
by-construction = refl _
fโ-lc : left-cancellable fโ
fโ-lc {(X , ฯ) , h , e , i} {(X , ฯ') , h , e , i'} (refl (X , h , e)) = ฮด
where
p : (ฯ , i) โก (ฯ' , i')
p = at-most-one-homomorphic-structure h e (ฯ , i) (ฯ' , i')
ฯ : (ฮฃ ฯ ๊ T X , is-homomorphism (X , ฯ) G h) โ Subgroup'
ฯ (ฯ , i) = ((X , ฯ) , h , e , i)
ฮด : ((X , ฯ) , h , e , i) โก ((X , ฯ') , h , e , i')
ฮด = ap ฯ p
fโ-is-embedding : is-embedding fโ
fโ-is-embedding = lc-maps-into-sets-are-embeddings fโ fโ-lc (subtypes-form-set ua โจ G โฉ)
fโ-is-equiv : is-equiv fโ
fโ-is-equiv = invertibles-are-equivs fโ ((ฮป ((X , h) , e) โ (X , h , e)) , refl , refl)
fโ-is-embedding : is-embedding fโ
fโ-is-embedding = equivs-are-embeddings fโ fโ-is-equiv
fโ-is-embedding : is-embedding fโ
fโ-is-embedding = prโ-is-embedding (ฮป (X , h) โ being-embedding-is-subsingleton gfe h)
ฮณ : is-embedding forgetful-map
ฮณ = โ-embedding fโ-is-embedding (โ-embedding fโ-is-embedding fโ-is-embedding)
_โกโ_ : Subgroup' โ Subgroup' โ ๐ค ฬ
(H , h , _ ) โกโ (H' , h' , _ ) = ฮฃ f ๊ (โจ H โฉ โ โจ H' โฉ) , is-equiv f ร (h โก h' โ f)
subgroup'-equality : (S T : Subgroup') โ (S โก T) โ (S โกโ T)
subgroup'-equality S T = (S โก T) โโจ i โฉ
(forgetful-map S โก forgetful-map T) โโจ ii โฉ
(S โกโ T) โ
where
open slice โจ G โฉ hiding (S)
i = โ-sym (embedding-criterion-converse forgetful-map forgetful-map-is-embedding S T)
ii = characterization-of-/-โก (ua ๐ค) (forgetful-map S) (forgetful-map T)
subgroups'-form-a-set : is-set Subgroup'
subgroups'-form-a-set = equiv-to-set
(โ-sym characterization-of-the-type-of-subgroups)
subgroups-form-a-set
โกโ-is-subsingleton-valued : (S T : Subgroup') โ is-subsingleton (S โกโ T)
โกโ-is-subsingleton-valued S T = ฮณ
where
i : is-subsingleton (S โก T)
i = subgroups'-form-a-set S T
ฮณ : is-subsingleton (S โกโ T)
ฮณ = equiv-to-subsingleton (โ-sym (subgroup'-equality S T)) i
โกโ-is-subsingleton-valued' : (S S' : Subgroup') โ is-subsingleton (S โกโ S')
โกโ-is-subsingleton-valued' (H , h , e , i) (H' , h' , e' , i') = ฮณ
where
S = (H , h , e , i )
S' = (H' , h' , e' , i')
A = ฮฃ f ๊ (โจ H โฉ โ โจ H' โฉ) , h' โ f โก h
B = ฮฃ (f , p) ๊ A , is-equiv f
A-is-subsingleton : is-subsingleton A
A-is-subsingleton = postcomp-is-embedding gfe hfe h' e' โจ H โฉ h
B-is-subsingleton : is-subsingleton B
B-is-subsingleton = ฮฃ-is-subsingleton
A-is-subsingleton
(ฮป (f , p) โ being-equiv-is-subsingleton gfe gfe f)
ฮด : (S โกโ S') โ B
ฮด = invertibility-gives-โ ฮฑ (ฮฒ , ฮท , ฮต)
where
ฮฑ = ฮป (f , i , p) โ ((f , (p โปยน)) , i)
ฮฒ = ฮป ((f , p) , i) โ (f , i , (p โปยน))
ฮท = ฮป (f , i , p) โ ap (ฮป - โ (f , i , -)) (โปยน-involutive p)
ฮต = ฮป ((f , p) , i) โ ap (ฮป - โ ((f , -) , i)) (โปยน-involutive p)
ฮณ : is-subsingleton (S โกโ S')
ฮณ = equiv-to-subsingleton ฮด B-is-subsingleton
module ring {๐ค : Universe} (ua : Univalence) where
open sip hiding (โจ_โฉ)
open sip-with-axioms
open sip-join
fe : global-dfunext
fe = univalence-gives-global-dfunext ua
hfe : global-hfunext
hfe = univalence-gives-global-hfunext ua
rng-structure : ๐ค ฬ โ ๐ค ฬ
rng-structure X = (X โ X โ X) ร (X โ X โ X)
rng-axioms : (R : ๐ค ฬ ) โ rng-structure R โ ๐ค ฬ
rng-axioms R (_+_ , _ยท_) = I ร II ร III ร IV ร V ร VI ร VII
where
I = is-set R
II = (x y z : R) โ (x + y) + z โก x + (y + z)
III = (x y : R) โ x + y โก y + x
IV = ฮฃ O ๊ R , ((x : R) โ x + O โก x) ร ((x : R) โ ฮฃ x' ๊ R , x + x' โก O)
V = (x y z : R) โ (x ยท y) ยท z โก x ยท (y ยท z)
VI = (x y z : R) โ x ยท (y + z) โก (x ยท y) + (x ยท z)
VII = (x y z : R) โ (y + z) ยท x โก (y ยท x) + (z ยท x)
Rng : ๐ค โบ ฬ
Rng = ฮฃ R ๊ ๐ค ฬ , ฮฃ s ๊ rng-structure R , rng-axioms R s
rng-axioms-is-subsingleton : (R : ๐ค ฬ ) (s : rng-structure R)
โ is-subsingleton (rng-axioms R s)
rng-axioms-is-subsingleton R (_+_ , _ยท_) (i , ii , iii , iv-vii) = ฮด
where
A = ฮป (O : R) โ ((x : R) โ x + O โก x)
ร ((x : R) โ ฮฃ x' ๊ R , x + x' โก O)
IV = ฮฃ A
a : (O O' : R) โ ((x : R) โ x + O โก x) โ ((x : R) โ x + O' โก x) โ O โก O'
a O O' f f' = O โกโจ (f' O)โปยน โฉ
(O + O') โกโจ iii O O' โฉ
(O' + O) โกโจ f O' โฉ
O' โ
b : (O : R) โ is-subsingleton ((x : R) โ x + O โก x)
b O = ฮ -is-subsingleton fe (ฮป x โ i (x + O) x)
c : (O : R)
โ ((x : R) โ x + O โก x)
โ (x : R) โ is-subsingleton (ฮฃ x' ๊ R , x + x' โก O)
c O f x (x' , p') (x'' , p'') = to-subtype-โก (ฮป x' โ i (x + x') O) r
where
r : x' โก x''
r = x' โกโจ (f x')โปยน โฉ
(x' + O) โกโจ ap (x' +_) (p'' โปยน) โฉ
(x' + (x + x'')) โกโจ (ii x' x x'')โปยน โฉ
((x' + x) + x'') โกโจ ap (_+ x'') (iii x' x) โฉ
((x + x') + x'') โกโจ ap (_+ x'') p' โฉ
(O + x'') โกโจ iii O x'' โฉ
(x'' + O) โกโจ f x'' โฉ
x'' โ
d : (O : R) โ is-subsingleton (A O)
d O (f , g) = ฯ (f , g)
where
ฯ : is-subsingleton (A O)
ฯ = ร-is-subsingleton (b O) (ฮ -is-subsingleton fe (ฮป x โ c O f x))
IV-is-subsingleton : is-subsingleton IV
IV-is-subsingleton (O , f , g) (O' , f' , g') = e
where
e : (O , f , g) โก (O' , f' , g')
e = to-subtype-โก d (a O O' f f')
ฮณ : is-subsingleton (rng-axioms R (_+_ , _ยท_))
ฮณ = ร-is-subsingleton
(being-set-is-subsingleton fe)
(ร-is-subsingleton
(ฮ -is-subsingleton fe
(ฮป x โ ฮ -is-subsingleton fe
(ฮป y โ ฮ -is-subsingleton fe
(ฮป z โ i ((x + y) + z) (x + (y + z))))))
(ร-is-subsingleton
(ฮ -is-subsingleton fe
(ฮป x โ ฮ -is-subsingleton fe
(ฮป y โ i (x + y) (y + x))))
(ร-is-subsingleton
IV-is-subsingleton
(ร-is-subsingleton
(ฮ -is-subsingleton fe
(ฮป x โ ฮ -is-subsingleton fe
(ฮป y โ ฮ -is-subsingleton fe
(ฮป z โ i ((x ยท y) ยท z) (x ยท (y ยท z))))))
(ร-is-subsingleton
(ฮ -is-subsingleton fe
(ฮป x โ ฮ -is-subsingleton fe
(ฮป y โ ฮ -is-subsingleton fe
(ฮป z โ i (x ยท (y + z)) ((x ยท y) + (x ยท z))))))
(ฮ -is-subsingleton fe
(ฮป x โ ฮ -is-subsingleton fe
(ฮป y โ ฮ -is-subsingleton fe
(ฮป z โ i ((y + z) ยท x) ((y ยท x) + (z ยท x)))))))))))
ฮด : (ฮฑ : rng-axioms R (_+_ , _ยท_)) โ (i , ii , iii , iv-vii) โก ฮฑ
ฮด = ฮณ (i , ii , iii , iv-vii)
_โ
[Rng]_ : Rng โ Rng โ ๐ค ฬ
(R , (_+_ , _ยท_) , _) โ
[Rng] (R' , (_+'_ , _ยท'_) , _) =
ฮฃ f ๊ (R โ R')
, is-equiv f
ร ((ฮป x y โ f (x + y)) โก (ฮป x y โ f x +' f y))
ร ((ฮป x y โ f (x ยท y)) โก (ฮป x y โ f x ยท' f y))
characterization-of-rng-โก : (๐ก ๐ก' : Rng) โ (๐ก โก ๐ก') โ (๐ก โ
[Rng] ๐ก')
characterization-of-rng-โก = characterization-of-โก (ua ๐ค)
(add-axioms
rng-axioms
rng-axioms-is-subsingleton
(join
โ-magma.sns-data
โ-magma.sns-data))
โจ_โฉ : (๐ก : Rng) โ ๐ค ฬ
โจ R , _ โฉ = R
ring-structure : ๐ค ฬ โ ๐ค ฬ
ring-structure X = X ร rng-structure X
ring-axioms : (R : ๐ค ฬ ) โ ring-structure R โ ๐ค ฬ
ring-axioms R (๐ , _+_ , _ยท_) = rng-axioms R (_+_ , _ยท_) ร VIII
where
VIII = (x : R) โ (x ยท ๐ โก x) ร (๐ ยท x โก x)
ring-axioms-is-subsingleton : (R : ๐ค ฬ ) (s : ring-structure R)
โ is-subsingleton (ring-axioms R s)
ring-axioms-is-subsingleton R (๐ , _+_ , _ยท_) ((i , ii-vii) , viii) = ฮณ ((i , ii-vii) , viii)
where
ฮณ : is-subsingleton (ring-axioms R (๐ , _+_ , _ยท_))
ฮณ = ร-is-subsingleton
(rng-axioms-is-subsingleton R (_+_ , _ยท_))
(ฮ -is-subsingleton fe (ฮป x โ ร-is-subsingleton (i (x ยท ๐) x) (i (๐ ยท x) x)))
Ring : ๐ค โบ ฬ
Ring = ฮฃ R ๊ ๐ค ฬ , ฮฃ s ๊ ring-structure R , ring-axioms R s
_โ
[Ring]_ : Ring โ Ring โ ๐ค ฬ
(R , (๐ , _+_ , _ยท_) , _) โ
[Ring] (R' , (๐' , _+'_ , _ยท'_) , _) =
ฮฃ f ๊ (R โ R')
, is-equiv f
ร (f ๐ โก ๐')
ร ((ฮป x y โ f (x + y)) โก (ฮป x y โ f x +' f y))
ร ((ฮป x y โ f (x ยท y)) โก (ฮป x y โ f x ยท' f y))
characterization-of-ring-โก : (๐ก ๐ก' : Ring) โ (๐ก โก ๐ก') โ (๐ก โ
[Ring] ๐ก')
characterization-of-ring-โก = characterization-of-โก (ua ๐ค)
(add-axioms
ring-axioms
ring-axioms-is-subsingleton
(join
pointed-type.sns-data
(join
โ-magma.sns-data
โ-magma.sns-data)))
module generalized-metric-space
{๐ค ๐ฅ : Universe}
(R : ๐ฅ ฬ )
(axioms : (X : ๐ค ฬ ) โ (X โ X โ R) โ ๐ค โ ๐ฅ ฬ )
(axiomss : (X : ๐ค ฬ ) (d : X โ X โ R) โ is-subsingleton (axioms X d))
where
open sip
open sip-with-axioms
S : ๐ค ฬ โ ๐ค โ ๐ฅ ฬ
S X = X โ X โ R
sns-data : SNS S (๐ค โ ๐ฅ)
sns-data = (ฮน , ฯ , ฮธ)
where
ฮน : (A B : ฮฃ S) โ โจ A โฉ โ โจ B โฉ โ ๐ค โ ๐ฅ ฬ
ฮน (X , d) (Y , e) (f , _) = (d โก ฮป x x' โ e (f x) (f x'))
ฯ : (A : ฮฃ S) โ ฮน A A (id-โ โจ A โฉ)
ฯ (X , d) = refl d
h : {X : ๐ค ฬ } {d e : S X} โ canonical-map ฮน ฯ d e โผ ๐๐ (d โก e)
h (refl d) = refl (refl d)
ฮธ : {X : ๐ค ฬ } (d e : S X) โ is-equiv (canonical-map ฮน ฯ d e)
ฮธ d e = equivs-closed-under-โผ (id-is-equiv (d โก e)) h
M : ๐ค โบ โ ๐ฅ ฬ
M = ฮฃ X ๊ ๐ค ฬ , ฮฃ d ๊ (X โ X โ R) , axioms X d
_โ
_ : M โ M โ ๐ค โ ๐ฅ ฬ
(X , d , _) โ
(Y , e , _) = ฮฃ f ๊ (X โ Y), is-equiv f
ร (d โก ฮป x x' โ e (f x) (f x'))
characterization-of-M-โก : is-univalent ๐ค
โ (A B : M) โ (A โก B) โ (A โ
B)
characterization-of-M-โก ua = characterization-of-โก-with-axioms ua
sns-data
axioms axiomss
module generalized-topological-space
(๐ค ๐ฅ : Universe)
(R : ๐ฅ ฬ )
(axioms : (X : ๐ค ฬ ) โ ((X โ R) โ R) โ ๐ค โ ๐ฅ ฬ )
(axiomss : (X : ๐ค ฬ ) (๐ : (X โ R) โ R) โ is-subsingleton (axioms X ๐))
where
open sip
open sip-with-axioms
โ : ๐ฆ ฬ โ ๐ฅ โ ๐ฆ ฬ
โ X = X โ R
_โ_ : {X : ๐ฆ ฬ } โ X โ โ X โ R
x โ A = A x
inverse-image : {X Y : ๐ค ฬ } โ (X โ Y) โ โ Y โ โ X
inverse-image f B = ฮป x โ f x โ B
โโ : ๐ค ฬ โ ๐ค โ ๐ฅ ฬ
โโ X = โ (โ X)
Space : ๐ค โบ โ ๐ฅ ฬ
Space = ฮฃ X ๊ ๐ค ฬ , ฮฃ ๐ ๊ โโ X , axioms X ๐
sns-data : SNS โโ (๐ค โ ๐ฅ)
sns-data = (ฮน , ฯ , ฮธ)
where
ฮน : (A B : ฮฃ โโ) โ โจ A โฉ โ โจ B โฉ โ ๐ค โ ๐ฅ ฬ
ฮน (X , ๐X) (Y , ๐Y) (f , _) = (ฮป (V : โ Y) โ inverse-image f V โ ๐X) โก ๐Y
ฯ : (A : ฮฃ โโ) โ ฮน A A (id-โ โจ A โฉ)
ฯ (X , ๐) = refl ๐
h : {X : ๐ค ฬ } {๐ ๐' : โโ X} โ canonical-map ฮน ฯ ๐ ๐' โผ ๐๐ (๐ โก ๐')
h (refl ๐) = refl (refl ๐)
ฮธ : {X : ๐ค ฬ } (๐ ๐' : โโ X) โ is-equiv (canonical-map ฮน ฯ ๐ ๐')
ฮธ {X} ๐ ๐' = equivs-closed-under-โผ (id-is-equiv (๐ โก ๐')) h
_โ
_ : Space โ Space โ ๐ค โ ๐ฅ ฬ
(X , ๐X , _) โ
(Y , ๐Y , _) =
ฮฃ f ๊ (X โ Y), is-equiv f
ร ((ฮป V โ inverse-image f V โ ๐X) โก ๐Y)
characterization-of-Space-โก : is-univalent ๐ค
โ (A B : Space) โ (A โก B) โ (A โ
B)
characterization-of-Space-โก ua = characterization-of-โก-with-axioms ua
sns-data axioms axiomss
_โ
'_ : Space โ Space โ ๐ค โ ๐ฅ ฬ
(X , F , _) โ
' (Y , G , _) =
ฮฃ f ๊ (X โ Y), is-equiv f
ร ((ฮป (v : Y โ R) โ F (v โ f)) โก G)
characterization-of-Space-โก' : is-univalent ๐ค
โ (A B : Space) โ (A โก B) โ (A โ
' B)
characterization-of-Space-โก' = characterization-of-Space-โก
module selection-space
(๐ค ๐ฅ : Universe)
(R : ๐ฅ ฬ )
(axioms : (X : ๐ค ฬ ) โ ((X โ R) โ X) โ ๐ค โ ๐ฅ ฬ )
(axiomss : (X : ๐ค ฬ ) (ฮต : (X โ R) โ X) โ is-subsingleton (axioms X ฮต))
where
open sip
open sip-with-axioms
S : ๐ค ฬ โ ๐ค โ ๐ฅ ฬ
S X = (X โ R) โ X
SelectionSpace : ๐ค โบ โ ๐ฅ ฬ
SelectionSpace = ฮฃ X ๊ ๐ค ฬ , ฮฃ ฮต ๊ S X , axioms X ฮต
sns-data : SNS S (๐ค โ ๐ฅ)
sns-data = (ฮน , ฯ , ฮธ)
where
ฮน : (A B : ฮฃ S) โ โจ A โฉ โ โจ B โฉ โ ๐ค โ ๐ฅ ฬ
ฮน (X , ฮต) (Y , ฮด) (f , _) = (ฮป (q : Y โ R) โ f (ฮต (q โ f))) โก ฮด
ฯ : (A : ฮฃ S) โ ฮน A A (id-โ โจ A โฉ)
ฯ (X , ฮต) = refl ฮต
ฮธ : {X : ๐ค ฬ } (ฮต ฮด : S X) โ is-equiv (canonical-map ฮน ฯ ฮต ฮด)
ฮธ {X} ฮต ฮด = ฮณ
where
h : canonical-map ฮน ฯ ฮต ฮด โผ ๐๐ (ฮต โก ฮด)
h (refl ฮต) = refl (refl ฮต)
ฮณ : is-equiv (canonical-map ฮน ฯ ฮต ฮด)
ฮณ = equivs-closed-under-โผ (id-is-equiv (ฮต โก ฮด)) h
_โ
_ : SelectionSpace โ SelectionSpace โ ๐ค โ ๐ฅ ฬ
(X , ฮต , _) โ
(Y , ฮด , _) =
ฮฃ f ๊ (X โ Y), is-equiv f
ร ((ฮป (q : Y โ R) โ f (ฮต (q โ f))) โก ฮด)
characterization-of-selection-space-โก : is-univalent ๐ค
โ (A B : SelectionSpace) โ (A โก B) โ (A โ
B)
characterization-of-selection-space-โก ua = characterization-of-โก-with-axioms ua
sns-data
axioms axiomss
module contrived-example (๐ค : Universe) where
open sip
contrived-โก : is-univalent ๐ค โ
(X Y : ๐ค ฬ ) (ฯ : (X โ X) โ X) (ฮณ : (Y โ Y) โ Y)
โ
((X , ฯ) โก (Y , ฮณ)) โ (ฮฃ f ๊ (X โ Y)
, ฮฃ i ๊ is-equiv f
, (ฮป (g : Y โ Y) โ f (ฯ (inverse f i โ g โ f))) โก ฮณ)
contrived-โก ua X Y ฯ ฮณ =
characterization-of-โก ua
((ฮป (X , ฯ) (Y , ฮณ) (f , i) โ (ฮป (g : Y โ Y) โ f (ฯ (inverse f i โ g โ f))) โก ฮณ) ,
(ฮป (X , ฯ) โ refl ฯ) ,
(ฮป ฯ ฮณ โ equivs-closed-under-โผ (id-is-equiv (ฯ โก ฮณ)) (ฮป {(refl ฯ) โ refl (refl ฯ)})))
(X , ฯ) (Y , ฮณ)
module generalized-functor-algebra
{๐ค ๐ฅ : Universe}
(F : ๐ค ฬ โ ๐ฅ ฬ )
(๐ : {X Y : ๐ค ฬ } โ (X โ Y) โ F X โ F Y)
(๐-id : {X : ๐ค ฬ } โ ๐ (๐๐ X) โก ๐๐ (F X))
where
open sip
S : ๐ค ฬ โ ๐ค โ ๐ฅ ฬ
S X = F X โ X
sns-data : SNS S (๐ค โ ๐ฅ)
sns-data = (ฮน , ฯ , ฮธ)
where
ฮน : (A B : ฮฃ S) โ โจ A โฉ โ โจ B โฉ โ ๐ค โ ๐ฅ ฬ
ฮน (X , ฮฑ) (Y , ฮฒ) (f , _) = f โ ฮฑ โก ฮฒ โ ๐ f
ฯ : (A : ฮฃ S) โ ฮน A A (id-โ โจ A โฉ)
ฯ (X , ฮฑ) = ฮฑ โกโจ ap (ฮฑ โ_) (๐-id โปยน) โฉ
ฮฑ โ ๐ id โ
ฮธ : {X : ๐ค ฬ } (ฮฑ ฮฒ : S X) โ is-equiv (canonical-map ฮน ฯ ฮฑ ฮฒ)
ฮธ {X} ฮฑ ฮฒ = ฮณ
where
c : ฮฑ โก ฮฒ โ ฮฑ โก ฮฒ โ ๐ id
c = transport (ฮฑ โก_) (ฯ (X , ฮฒ))
i : is-equiv c
i = transport-is-equiv (ฮฑ โก_) (ฯ (X , ฮฒ))
h : canonical-map ฮน ฯ ฮฑ ฮฒ โผ c
h (refl _) = ฯ (X , ฮฑ) โกโจ refl-left โปยน โฉ
refl ฮฑ โ ฯ (X , ฮฑ) โ
ฮณ : is-equiv (canonical-map ฮน ฯ ฮฑ ฮฒ)
ฮณ = equivs-closed-under-โผ i h
characterization-of-functor-algebra-โก : is-univalent ๐ค
โ (X Y : ๐ค ฬ ) (ฮฑ : F X โ X) (ฮฒ : F Y โ Y)
โ ((X , ฮฑ) โก (Y , ฮฒ)) โ (ฮฃ f ๊ (X โ Y), is-equiv f ร (f โ ฮฑ โก ฮฒ โ ๐ f))
characterization-of-functor-algebra-โก ua X Y ฮฑ ฮฒ =
characterization-of-โก ua sns-data (X , ฮฑ) (Y , ฮฒ)
type-valued-preorder-S : ๐ค ฬ โ ๐ค โ (๐ฅ โบ) ฬ
type-valued-preorder-S {๐ค} {๐ฅ} X = ฮฃ _โค_ ๊ (X โ X โ ๐ฅ ฬ )
, ((x : X) โ x โค x)
ร ((x y z : X) โ x โค y โ y โค z โ x โค z)
module type-valued-preorder
(๐ค ๐ฅ : Universe)
(ua : Univalence)
where
open sip
fe : global-dfunext
fe = univalence-gives-global-dfunext ua
hfe : global-hfunext
hfe = univalence-gives-global-hfunext ua
S : ๐ค ฬ โ ๐ค โ (๐ฅ โบ) ฬ
S = type-valued-preorder-S {๐ค} {๐ฅ}
Type-valued-preorder : (๐ค โ ๐ฅ) โบ ฬ
Type-valued-preorder = ฮฃ S
Ob : ฮฃ S โ ๐ค ฬ
Ob (X , homX , idX , compX ) = X
hom : (๐ง : ฮฃ S) โ Ob ๐ง โ Ob ๐ง โ ๐ฅ ฬ
hom (X , homX , idX , compX) = homX
๐พ๐น : (๐ง : ฮฃ S) (x : Ob ๐ง) โ hom ๐ง x x
๐พ๐น (X , homX , idX , compX) = idX
comp : (๐ง : ฮฃ S) (x y z : Ob ๐ง) โ hom ๐ง x y โ hom ๐ง y z โ hom ๐ง x z
comp (X , homX , idX , compX) = compX
functorial : (๐ง ๐ : ฮฃ S)
โ (F : Ob ๐ง โ Ob ๐)
โ ((x y : Ob ๐ง) โ hom ๐ง x y โ hom ๐ (F x) (F y))
โ ๐ค โ ๐ฅ ฬ
functorial ๐ง ๐ F ๐' = pidentity ร pcomposition
where
_o_ : {x y z : Ob ๐ง} โ hom ๐ง y z โ hom ๐ง x y โ hom ๐ง x z
g o f = comp ๐ง _ _ _ f g
_โก_ : {a b c : Ob ๐} โ hom ๐ b c โ hom ๐ a b โ hom ๐ a c
g โก f = comp ๐ _ _ _ f g
๐ : {x y : Ob ๐ง} โ hom ๐ง x y โ hom ๐ (F x) (F y)
๐ f = ๐' _ _ f
pidentity = (ฮป x โ ๐ (๐พ๐น ๐ง x)) โก (ฮป x โ ๐พ๐น ๐ (F x))
pcomposition = (ฮป x y z (f : hom ๐ง x y) (g : hom ๐ง y z) โ ๐ (g o f))
โก (ฮป x y z (f : hom ๐ง x y) (g : hom ๐ง y z) โ ๐ g โก ๐ f)
sns-data : SNS S (๐ค โ (๐ฅ โบ))
sns-data = (ฮน , ฯ , ฮธ)
where
ฮน : (๐ง ๐ : ฮฃ S) โ โจ ๐ง โฉ โ โจ ๐ โฉ โ ๐ค โ (๐ฅ โบ) ฬ
ฮน ๐ง ๐ (F , _) = ฮฃ p ๊ hom ๐ง โก (ฮป x y โ hom ๐ (F x) (F y))
, functorial ๐ง ๐ F (ฮป x y โ transport (ฮป - โ - x y) p)
ฯ : (๐ง : ฮฃ S) โ ฮน ๐ง ๐ง (id-โ โจ ๐ง โฉ)
ฯ ๐ง = refl (hom ๐ง) , refl (๐พ๐น ๐ง) , refl (comp ๐ง)
ฮธ : {X : ๐ค ฬ } (s t : S X) โ is-equiv (canonical-map ฮน ฯ s t)
ฮธ {X} (homX , idX , compX) (homA , idA , compA) = g
where
ฯ = canonical-map ฮน ฯ (homX , idX , compX) (homA , idA , compA)
ฮณ : codomain ฯ โ domain ฯ
ฮณ (refl _ , refl _ , refl _) = refl _
ฮท : ฮณ โ ฯ โผ id
ฮท (refl _) = refl _
ฮต : ฯ โ ฮณ โผ id
ฮต (refl _ , refl _ , refl _) = refl _
g : is-equiv ฯ
g = invertibles-are-equivs ฯ (ฮณ , ฮท , ฮต)
lemma : (๐ง ๐ : ฮฃ S) (F : Ob ๐ง โ Ob ๐)
โ
(ฮฃ p ๊ hom ๐ง โก (ฮป x y โ hom ๐ (F x) (F y))
, functorial ๐ง ๐ F (ฮป x y โ transport (ฮป - โ - x y) p))
โ
(ฮฃ ๐ ๊ ((x y : Ob ๐ง) โ hom ๐ง x y โ hom ๐ (F x) (F y))
, (โ x y โ is-equiv (๐ x y))
ร functorial ๐ง ๐ F ๐)
lemma ๐ง ๐ F = ฮณ
where
e = (hom ๐ง โก ฮป x y โ hom ๐ (F x) (F y)) โโจ i โฉ
(โ x y โ hom ๐ง x y โก hom ๐ (F x) (F y)) โโจ ii โฉ
(โ x y โ hom ๐ง x y โ hom ๐ (F x) (F y)) โโจ iii โฉ
(โ x โ ฮฃ ฯ ๊ (โ y โ hom ๐ง x y โ hom ๐ (F x) (F y))
, โ y โ is-equiv (ฯ y)) โโจ iv โฉ
(ฮฃ ๐ ๊ ((x y : Ob ๐ง) โ hom ๐ง x y โ hom ๐ (F x) (F y))
, (โ x y โ is-equiv (๐ x y))) โ
where
i = hfunextโ-โ hfe hfe (hom ๐ง ) ฮป x y โ hom ๐ (F x) (F y)
ii = ฮ -cong fe fe
(ฮป x โ ฮ -cong fe fe
(ฮป y โ univalence-โ (ua ๐ฅ) (hom ๐ง x y) (hom ๐ (F x) (F y))))
iii = ฮ -cong fe fe (ฮป y โ ฮ ฮฃ-distr-โ)
iv = ฮ ฮฃ-distr-โ
v : (p : hom ๐ง โก ฮป x y โ hom ๐ (F x) (F y))
โ functorial ๐ง ๐ F (ฮป x y โ transport (ฮป - โ - x y) p)
โ functorial ๐ง ๐ F (prโ (โ e โ p))
v (refl _) = IdโEq _ _ (refl _)
ฮณ =
(ฮฃ p ๊ hom ๐ง โก (ฮป x y โ hom ๐ (F x) (F y))
, functorial ๐ง ๐ F (ฮป x y โ transport (ฮป - โ - x y) p)) โโจ vi โฉ
(ฮฃ p ๊ hom ๐ง โก (ฮป x y โ hom ๐ (F x) (F y))
, functorial ๐ง ๐ F (prโ (โ e โ p))) โโจ vii โฉ
(ฮฃ ฯ ๊ (ฮฃ ๐ ๊ ((x y : Ob ๐ง) โ hom ๐ง x y โ hom ๐ (F x) (F y))
, (โ x y โ is-equiv (๐ x y)))
, functorial ๐ง ๐ F (prโ ฯ)) โโจ viii โฉ
(ฮฃ ๐ ๊ ((x y : Ob ๐ง) โ hom ๐ง x y โ hom ๐ (F x) (F y))
, (โ x y โ is-equiv (๐ x y))
ร functorial ๐ง ๐ F ๐) โ
where
vi = ฮฃ-cong v
vii = โ-sym (ฮฃ-change-of-variable _ โ e โ (โโ-is-equiv e))
viii = ฮฃ-assoc
characterization-of-type-valued-preorder-โก :
(๐ง ๐ : ฮฃ S)
โ
(๐ง โก ๐)
โ
(ฮฃ F ๊ (Ob ๐ง โ Ob ๐)
, is-equiv F
ร (ฮฃ ๐ ๊ ((x y : Ob ๐ง) โ hom ๐ง x y โ hom ๐ (F x) (F y))
, (โ x y โ is-equiv (๐ x y))
ร functorial ๐ง ๐ F ๐))
characterization-of-type-valued-preorder-โก ๐ง ๐ =
(๐ง โก ๐) โโจ i โฉ
(ฮฃ F ๊ (Ob ๐ง โ Ob ๐)
, is-equiv F
ร (ฮฃ p ๊ hom ๐ง โก (ฮป x y โ hom ๐ (F x) (F y))
, functorial ๐ง ๐ F (ฮป x y โ transport (ฮป - โ - x y) p))) โโจ ii โฉ
(ฮฃ F ๊ (Ob ๐ง โ Ob ๐)
, is-equiv F
ร (ฮฃ ๐ ๊ ((x y : Ob ๐ง) โ hom ๐ง x y โ hom ๐ (F x) (F y))
, (โ x y โ is-equiv (๐ x y))
ร functorial ๐ง ๐ F ๐)) โ
where
i = characterization-of-โก (ua ๐ค) sns-data ๐ง ๐
ii = ฮฃ-cong (ฮป F โ ฮฃ-cong (ฮป _ โ lemma ๐ง ๐ F))
module type-valued-preorder-with-axioms
(๐ค ๐ฅ ๐ฆ : Universe)
(ua : Univalence)
(axioms : (X : ๐ค ฬ ) โ type-valued-preorder-S {๐ค} {๐ฅ} X โ ๐ฆ ฬ )
(axiomss : (X : ๐ค ฬ ) (s : type-valued-preorder-S X) โ is-subsingleton (axioms X s))
where
open sip
open sip-with-axioms
open type-valued-preorder ๐ค ๐ฅ ua
S' : ๐ค ฬ โ ๐ค โ (๐ฅ โบ) โ ๐ฆ ฬ
S' X = ฮฃ s ๊ S X , axioms X s
sns-data' : SNS S' (๐ค โ (๐ฅ โบ))
sns-data' = add-axioms axioms axiomss sns-data
characterization-of-type-valued-preorder-โก-with-axioms :
(๐ง' ๐' : ฮฃ S')
โ
(๐ง' โก ๐')
โ
(ฮฃ F ๊ (Ob [ ๐ง' ] โ Ob [ ๐' ])
, is-equiv F
ร (ฮฃ ๐ ๊ ((x y : Ob [ ๐ง' ]) โ hom [ ๐ง' ] x y โ hom [ ๐' ] (F x) (F y))
, (โ x y โ is-equiv (๐ x y))
ร functorial [ ๐ง' ] [ ๐' ] F ๐))
characterization-of-type-valued-preorder-โก-with-axioms ๐ง' ๐' =
(๐ง' โก ๐') โโจ i โฉ
([ ๐ง' ] โ[ sns-data ] [ ๐' ]) โโจ ii โฉ
_ โ
where
i = characterization-of-โก-with-axioms (ua ๐ค) sns-data axioms axiomss ๐ง' ๐'
ii = ฮฃ-cong (ฮป F โ ฮฃ-cong (ฮป _ โ lemma [ ๐ง' ] [ ๐' ] F))
module category
(๐ค ๐ฅ : Universe)
(ua : Univalence)
where
open type-valued-preorder-with-axioms ๐ค ๐ฅ (๐ค โ ๐ฅ) ua
fe : global-dfunext
fe = univalence-gives-global-dfunext ua
S : ๐ค ฬ โ ๐ค โ (๐ฅ โบ) ฬ
S = type-valued-preorder-S {๐ค} {๐ฅ}
category-axioms : (X : ๐ค ฬ ) โ S X โ ๐ค โ ๐ฅ ฬ
category-axioms X (homX , idX , compX) = hom-sets ร identityl ร identityr ร associativity
where
_o_ : {x y z : X} โ homX y z โ homX x y โ homX x z
g o f = compX _ _ _ f g
hom-sets = โ x y โ is-set (homX x y)
identityl = โ x y (f : homX x y) โ f o (idX x) โก f
identityr = โ x y (f : homX x y) โ (idX y) o f โก f
associativity = โ x y z t (f : homX x y) (g : homX y z) (h : homX z t)
โ (h o g) o f โก h o (g o f)
category-axioms-subsingleton : (X : ๐ค ฬ ) (s : S X) โ is-subsingleton (category-axioms X s)
category-axioms-subsingleton X (homX , idX , compX) ca = ฮณ ca
where
i : โ x y โ is-set (homX x y)
i = prโ ca
ฮณ : is-subsingleton (category-axioms X (homX , idX , compX))
ฮณ = ร-is-subsingleton ss (ร-is-subsingleton ls (ร-is-subsingleton rs as))
where
ss = ฮ -is-subsingleton fe
(ฮป x โ ฮ -is-subsingleton fe
(ฮป y โ being-set-is-subsingleton fe))
ls = ฮ -is-subsingleton fe
(ฮป x โ ฮ -is-subsingleton fe
(ฮป y โ ฮ -is-subsingleton fe
(ฮป f โ i x y (compX x x y (idX x) f) f)))
rs = ฮ -is-subsingleton fe
(ฮป x โ ฮ -is-subsingleton fe
(ฮป y โ ฮ -is-subsingleton fe
(ฮป f โ i x y (compX x y y f (idX y)) f)))
as = ฮ -is-subsingleton fe
(ฮป x โ ฮ -is-subsingleton fe
(ฮป y โ ฮ -is-subsingleton fe
(ฮป z โ ฮ -is-subsingleton fe
(ฮป t โ ฮ -is-subsingleton fe
(ฮป f โ ฮ -is-subsingleton fe
(ฮป g โ ฮ -is-subsingleton fe
(ฮป h โ i x t (compX x y t f (compX y z t g h))
(compX x z t (compX x y z f g) h))))))))
Cat : (๐ค โ ๐ฅ)โบ ฬ
Cat = ฮฃ X ๊ ๐ค ฬ , ฮฃ s ๊ S X , category-axioms X s
Ob : Cat โ ๐ค ฬ
Ob (X , (homX , idX , compX) , _) = X
hom : (๐ง : Cat) โ Ob ๐ง โ Ob ๐ง โ ๐ฅ ฬ
hom (X , (homX , idX , compX) , _) = homX
๐พ๐น : (๐ง : Cat) (x : Ob ๐ง) โ hom ๐ง x x
๐พ๐น (X , (homX , idX , compX) , _) = idX
comp : (๐ง : Cat) (x y z : Ob ๐ง) (f : hom ๐ง x y) (g : hom ๐ง y z) โ hom ๐ง x z
comp (X , (homX , idX , compX) , _) = compX
is-functorial : (๐ง ๐ : Cat)
โ (F : Ob ๐ง โ Ob ๐)
โ ((x y : Ob ๐ง) โ hom ๐ง x y โ hom ๐ (F x) (F y))
โ ๐ค โ ๐ฅ ฬ
is-functorial ๐ง ๐ F ๐' = pidentity ร pcomposition
where
_o_ : {x y z : Ob ๐ง} โ hom ๐ง y z โ hom ๐ง x y โ hom ๐ง x z
g o f = comp ๐ง _ _ _ f g
_โก_ : {a b c : Ob ๐} โ hom ๐ b c โ hom ๐ a b โ hom ๐ a c
g โก f = comp ๐ _ _ _ f g
๐ : {x y : Ob ๐ง} โ hom ๐ง x y โ hom ๐ (F x) (F y)
๐ f = ๐' _ _ f
pidentity = (ฮป x โ ๐ (๐พ๐น ๐ง x)) โก (ฮป x โ ๐พ๐น ๐ (F x))
pcomposition = (ฮป x y z (f : hom ๐ง x y) (g : hom ๐ง y z) โ ๐ (g o f))
โก (ฮป x y z (f : hom ๐ง x y) (g : hom ๐ง y z) โ ๐ g โก ๐ f)
_โ_ : Cat โ Cat โ ๐ค โ ๐ฅ ฬ
๐ง โ ๐ = ฮฃ F ๊ (Ob ๐ง โ Ob ๐)
, is-equiv F
ร (ฮฃ ๐ ๊ ((x y : Ob ๐ง) โ hom ๐ง x y โ hom ๐ (F x) (F y))
, (โ x y โ is-equiv (๐ x y))
ร is-functorial ๐ง ๐ F ๐)
IdโEqCat : (๐ง ๐ : Cat) โ ๐ง โก ๐ โ ๐ง โ ๐
IdโEqCat ๐ง ๐ง (refl ๐ง) = ๐๐ (Ob ๐ง ) ,
id-is-equiv (Ob ๐ง ) ,
(ฮป x y โ ๐๐ (hom ๐ง x y)) ,
(ฮป x y โ id-is-equiv (hom ๐ง x y)) ,
refl (๐พ๐น ๐ง) ,
refl (comp ๐ง)
characterization-of-category-โก : (๐ง ๐ : Cat) โ (๐ง โก ๐) โ (๐ง โ ๐)
characterization-of-category-โก = characterization-of-type-valued-preorder-โก-with-axioms
category-axioms category-axioms-subsingleton
IdโEqCat-is-equiv : (๐ง ๐ : Cat) โ is-equiv (IdโEqCat ๐ง ๐)
IdโEqCat-is-equiv ๐ง ๐ = equivs-closed-under-โผ
(โโ-is-equiv (characterization-of-category-โก ๐ง ๐))
(ฮณ ๐ง ๐)
where
ฮณ : (๐ง ๐ : Cat) โ IdโEqCat ๐ง ๐ โผ โ characterization-of-category-โก ๐ง ๐ โ
ฮณ ๐ง ๐ง (refl ๐ง) = refl _
is-inhabited : ๐ค ฬ โ ๐ค โบ ฬ
is-inhabited {๐ค} X = (P : ๐ค ฬ ) โ is-subsingleton P โ (X โ P) โ P
inhabitation-is-subsingleton : global-dfunext
โ (X : ๐ค ฬ )
โ is-subsingleton (is-inhabited X)
inhabitation-is-subsingleton fe X =
ฮ -is-subsingleton fe
(ฮป P โ ฮ -is-subsingleton fe
(ฮป (s : is-subsingleton P) โ ฮ -is-subsingleton fe
(ฮป (f : X โ P) โ s)))
inhabited-intro : {X : ๐ค ฬ } โ X โ is-inhabited X
inhabited-intro x = ฮป P s f โ f x
inhabited-recursion : {X P : ๐ค ฬ } โ is-subsingleton P โ (X โ P) โ is-inhabited X โ P
inhabited-recursion s f ฯ = ฯ (codomain f) s f
inhabited-recursion-computation : {X P : ๐ค ฬ }
(i : is-subsingleton P)
(f : X โ P)
(x : X)
โ inhabited-recursion i f (inhabited-intro x) โก f x
inhabited-recursion-computation i f x = refl (f x)
inhabited-induction : global-dfunext
โ {X : ๐ค ฬ } {P : is-inhabited X โ ๐ค ฬ }
(i : (s : is-inhabited X) โ is-subsingleton (P s))
(f : (x : X) โ P (inhabited-intro x))
โ (s : is-inhabited X) โ P s
inhabited-induction fe {X} {P} i f s = ฯ' s
where
ฯ : X โ P s
ฯ x = transport P (inhabitation-is-subsingleton fe X (inhabited-intro x) s) (f x)
ฯ' : is-inhabited X โ P s
ฯ' = inhabited-recursion (i s) ฯ
inhabited-computation : (fe : global-dfunext) {X : ๐ค ฬ } {P : is-inhabited X โ ๐ค ฬ }
(i : (s : is-inhabited X) โ is-subsingleton (P s))
(f : (x : X) โ P (inhabited-intro x))
(x : X)
โ inhabited-induction fe i f (inhabited-intro x) โก f x
inhabited-computation fe i f x = i (inhabited-intro x)
(inhabited-induction fe i f (inhabited-intro x))
(f x)
inhabited-subsingletons-are-pointed : (P : ๐ค ฬ )
โ is-subsingleton P โ is-inhabited P โ P
inhabited-subsingletons-are-pointed P s = inhabited-recursion s (๐๐ P)
inhabited-functorial : global-dfunext โ (X : ๐ค โบ ฬ ) (Y : ๐ค ฬ )
โ (X โ Y) โ is-inhabited X โ is-inhabited Y
inhabited-functorial fe X Y f = inhabited-recursion
(inhabitation-is-subsingleton fe Y)
(inhabited-intro โ f)
image' : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ (๐ค โ ๐ฅ)โบ ฬ
image' f = ฮฃ y ๊ codomain f , is-inhabited (ฮฃ x ๊ domain f , f x โก y)
restriction' : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ image' f โ Y
restriction' f (y , _) = y
corestriction' : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ X โ image' f
corestriction' f x = f x , inhabited-intro (x , refl (f x))
is-surjection' : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ (๐ค โ ๐ฅ)โบ ฬ
is-surjection' f = (y : codomain f) โ is-inhabited (ฮฃ x ๊ domain f , f x โก y)
record subsingleton-truncations-exist : ๐คฯ where
field
โฅ_โฅ : {๐ค : Universe} โ ๐ค ฬ โ ๐ค ฬ
โฅโฅ-is-subsingleton : {๐ค : Universe} {X : ๐ค ฬ } โ is-subsingleton โฅ X โฅ
โฃ_โฃ : {๐ค : Universe} {X : ๐ค ฬ } โ X โ โฅ X โฅ
โฅโฅ-recursion : {๐ค ๐ฅ : Universe} {X : ๐ค ฬ } {P : ๐ฅ ฬ }
โ is-subsingleton P โ (X โ P) โ โฅ X โฅ โ P
infix 0 โฅ_โฅ
module basic-truncation-development
(pt : subsingleton-truncations-exist)
(hfe : global-hfunext)
where
open subsingleton-truncations-exist pt public
hunapply : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {f g : ฮ A} โ f โผ g โ f โก g
hunapply = hfunext-gives-dfunext hfe
โฅโฅ-recursion-computation : {X : ๐ค ฬ } {P : ๐ฅ ฬ }
โ (i : is-subsingleton P)
โ (f : X โ P)
โ (x : X)
โ โฅโฅ-recursion i f โฃ x โฃ โก f x
โฅโฅ-recursion-computation i f x = i (โฅโฅ-recursion i f โฃ x โฃ) (f x)
โฅโฅ-induction : {X : ๐ค ฬ } {P : โฅ X โฅ โ ๐ฅ ฬ }
โ ((s : โฅ X โฅ) โ is-subsingleton (P s))
โ ((x : X) โ P โฃ x โฃ)
โ (s : โฅ X โฅ) โ P s
โฅโฅ-induction {๐ค} {๐ฅ} {X} {P} i f s = ฯ' s
where
ฯ : X โ P s
ฯ x = transport P (โฅโฅ-is-subsingleton โฃ x โฃ s) (f x)
ฯ' : โฅ X โฅ โ P s
ฯ' = โฅโฅ-recursion (i s) ฯ
โฅโฅ-computation : {X : ๐ค ฬ } {P : โฅ X โฅ โ ๐ฅ ฬ }
โ (i : (s : โฅ X โฅ) โ is-subsingleton (P s))
โ (f : (x : X) โ P โฃ x โฃ)
โ (x : X)
โ โฅโฅ-induction i f โฃ x โฃ โก f x
โฅโฅ-computation i f x = i โฃ x โฃ (โฅโฅ-induction i f โฃ x โฃ) (f x)
โฅโฅ-functor : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ โฅ X โฅ โ โฅ Y โฅ
โฅโฅ-functor f = โฅโฅ-recursion โฅโฅ-is-subsingleton (ฮป x โ โฃ f x โฃ)
โฅโฅ-agrees-with-inhabitation : (X : ๐ค ฬ ) โ โฅ X โฅ โ is-inhabited X
โฅโฅ-agrees-with-inhabitation X = a , b
where
a : โฅ X โฅ โ is-inhabited X
a = โฅโฅ-recursion (inhabitation-is-subsingleton hunapply X) inhabited-intro
b : is-inhabited X โ โฅ X โฅ
b = inhabited-recursion โฅโฅ-is-subsingleton โฃ_โฃ
_โจ_ : ๐ค ฬ โ ๐ฅ ฬ โ ๐ค โ ๐ฅ ฬ
A โจ B = โฅ A + B โฅ
infixl 20 _โจ_
โ : {X : ๐ค ฬ } โ (X โ ๐ฅ ฬ ) โ ๐ค โ ๐ฅ ฬ
โ A = โฅ ฮฃ A โฅ
-โ : {๐ค ๐ฅ : Universe} (X : ๐ค ฬ ) (Y : X โ ๐ฅ ฬ ) โ ๐ค โ ๐ฅ ฬ
-โ X Y = โ Y
syntax -โ A (ฮป x โ b) = โ x ๊ A , b
infixr -1 -โ
โจ-is-subsingleton : {A : ๐ค ฬ } {B : ๐ฅ ฬ } โ is-subsingleton (A โจ B)
โจ-is-subsingleton = โฅโฅ-is-subsingleton
โ-is-subsingleton : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } โ is-subsingleton (โ A)
โ-is-subsingleton = โฅโฅ-is-subsingleton
image : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ ๐ค โ ๐ฅ ฬ
image f = ฮฃ y ๊ codomain f , โ x ๊ domain f , f x โก y
restriction : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ image f โ Y
restriction f (y , _) = y
corestriction : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ X โ image f
corestriction f x = f x , โฃ (x , refl (f x)) โฃ
is-surjection : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } โ (X โ Y) โ ๐ค โ ๐ฅ ฬ
is-surjection f = (y : codomain f) โ โ x ๊ domain f , f x โก y
being-surjection-is-subsingleton : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-subsingleton (is-surjection f)
being-surjection-is-subsingleton f = ฮ -is-subsingleton hunapply
(ฮป y โ โ-is-subsingleton)
corestriction-surjection : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-surjection (corestriction f)
corestriction-surjection f (y , s) = โฅโฅ-functor g s
where
g : (ฮฃ x ๊ domain f , f x โก y) โ ฮฃ x ๊ domain f , corestriction f x โก (y , s)
g (x , p) = x , to-subtype-โก (ฮป _ โ โ-is-subsingleton) p
surjection-induction : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-surjection f
โ (P : Y โ ๐ฆ ฬ )
โ ((y : Y) โ is-subsingleton (P y))
โ ((x : X) โ P (f x))
โ (y : Y) โ P y
surjection-induction f i P j ฮฑ y = โฅโฅ-recursion (j y) ฯ (i y)
where
ฯ : fiber f y โ P y
ฯ (x , r) = transport P r (ฮฑ x)
โฃโฃ-is-surjection : (X : ๐ค ฬ ) โ is-surjection (ฮป (x : X) โ โฃ x โฃ)
โฃโฃ-is-surjection X s = ฮณ
where
f : X โ โ x ๊ X , โฃ x โฃ โก s
f x = โฃ (x , โฅโฅ-is-subsingleton โฃ x โฃ s) โฃ
ฮณ : โ x ๊ X , โฃ x โฃ โก s
ฮณ = โฅโฅ-recursion โฅโฅ-is-subsingleton f s
singletons-are-inhabited : (X : ๐ค ฬ )
โ is-singleton X
โ โฅ X โฅ
singletons-are-inhabited X s = โฃ center X s โฃ
inhabited-subsingletons-are-singletons : (X : ๐ค ฬ )
โ โฅ X โฅ
โ is-subsingleton X
โ is-singleton X
inhabited-subsingletons-are-singletons X t i = c , ฯ
where
c : X
c = โฅโฅ-recursion i (๐๐ X) t
ฯ : (x : X) โ c โก x
ฯ = i c
singleton-iff-inhabited-subsingleton : (X : ๐ค ฬ )
โ is-singleton X
โ (โฅ X โฅ ร is-subsingleton X)
singleton-iff-inhabited-subsingleton X =
(ฮป (s : is-singleton X) โ singletons-are-inhabited X s ,
singletons-are-subsingletons X s) ,
ฮฃ-induction (inhabited-subsingletons-are-singletons X)
equiv-iff-embedding-and-surjection : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ is-equiv f
โ (is-embedding f ร is-surjection f)
equiv-iff-embedding-and-surjection f = (a , b)
where
a : is-equiv f โ is-embedding f ร is-surjection f
a e = (ฮป y โ singletons-are-subsingletons (fiber f y) (e y)) ,
(ฮป y โ singletons-are-inhabited (fiber f y) (e y))
b : is-embedding f ร is-surjection f โ is-equiv f
b (e , s) y = inhabited-subsingletons-are-singletons (fiber f y) (s y) (e y)
equiv-โก-embedding-and-surjection : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ propext (๐ค โ ๐ฅ)
โ is-equiv f
โก (is-embedding f ร is-surjection f)
equiv-โก-embedding-and-surjection f pe =
pe (being-equiv-is-subsingleton hunapply hunapply f)
(ร-is-subsingleton
(being-embedding-is-subsingleton hunapply f)
(being-surjection-is-subsingleton f))
(lr-implication (equiv-iff-embedding-and-surjection f))
(rl-implication (equiv-iff-embedding-and-surjection f))
fix : {X : ๐ค ฬ } โ (X โ X) โ ๐ค ฬ
fix f = ฮฃ x ๊ domain f , f x โก x
from-fix : {X : ๐ค ฬ } (f : X โ X)
โ fix f โ X
from-fix f = prโ
to-fix : {X : ๐ค ฬ } (f : X โ X) โ wconstant f
โ X โ fix f
to-fix f ฮบ x = f x , ฮบ (f x) x
fix-is-subsingleton : {X : ๐ค ฬ } (f : X โ X)
โ wconstant f โ is-subsingleton (fix f)
fix-is-subsingleton {๐ค} {X} f ฮบ = ฮณ
where
a : (y x : X) โ (f x โก x) โ (f y โก x)
a y x = transport (_โก x) (ฮบ x y) , transport-is-equiv (_โก x) (ฮบ x y)
b : (y : X) โ fix f โ singleton-type' (f y)
b y = ฮฃ-cong (a y)
c : X โ is-singleton (fix f)
c y = equiv-to-singleton (b y) (singleton-types'-are-singletons X (f y))
d : fix f โ is-singleton (fix f)
d = c โ from-fix f
ฮณ : is-subsingleton (fix f)
ฮณ = subsingleton-criterion d
choice-function : ๐ค ฬ โ ๐ค โบ ฬ
choice-function X = is-inhabited X โ X
wconstant-endomap-gives-choice-function : {X : ๐ค ฬ }
โ wconstant-endomap X โ choice-function X
wconstant-endomap-gives-choice-function {๐ค} {X} (f , ฮบ) = from-fix f โ ฮณ
where
ฮณ : is-inhabited X โ fix f
ฮณ = inhabited-recursion (fix-is-subsingleton f ฮบ) (to-fix f ฮบ)
choice-function-gives-wconstant-endomap : global-dfunext
โ {X : ๐ค ฬ }
โ choice-function X โ wconstant-endomap X
choice-function-gives-wconstant-endomap fe {X} c = f , ฮบ
where
f : X โ X
f = c โ inhabited-intro
ฮบ : wconstant f
ฮบ x y = ap c (inhabitation-is-subsingleton fe X (inhabited-intro x)
(inhabited-intro y))
module find-hidden-root where
open basic-arithmetic-and-order public
ฮผฯ : (f : โ โ โ) โ root f โ root f
ฮผฯ f r = minimal-root-is-root f (root-gives-minimal-root f r)
ฮผฯ-root : (f : โ โ โ) โ root f โ โ
ฮผฯ-root f r = prโ (ฮผฯ f r)
ฮผฯ-root-is-root : (f : โ โ โ) (r : root f) โ f (ฮผฯ-root f r) โก 0
ฮผฯ-root-is-root f r = prโ (ฮผฯ f r)
ฮผฯ-root-minimal : (f : โ โ โ) (m : โ) (p : f m โก 0)
โ (n : โ) โ f n โก 0 โ ฮผฯ-root f (m , p) โค n
ฮผฯ-root-minimal f m p n q = not-<-gives-โฅ (ฮผฯ-root f (m , p)) n ฮณ
where
ฯ : ยฌ(f n โข 0) โ ยฌ(n < ฮผฯ-root f (m , p))
ฯ = contrapositive (prโ(prโ (root-gives-minimal-root f (m , p))) n)
ฮณ : ยฌ (n < ฮผฯ-root f (m , p))
ฮณ = ฯ (dni (f n โก 0) q)
ฮผฯ-wconstant : (f : โ โ โ) โ wconstant (ฮผฯ f)
ฮผฯ-wconstant f (n , p) (n' , p') = r
where
m m' : โ
m = ฮผฯ-root f (n , p)
m' = ฮผฯ-root f (n' , p')
l : m โค m'
l = ฮผฯ-root-minimal f n p m' (ฮผฯ-root-is-root f (n' , p'))
l' : m' โค m
l' = ฮผฯ-root-minimal f n' p' m (ฮผฯ-root-is-root f (n , p))
q : m โก m'
q = โค-anti _ _ l l'
r : ฮผฯ f (n , p) โก ฮผฯ f (n' , p')
r = to-subtype-โก (ฮป _ โ โ-is-set (f _) 0) q
find-existing-root : (f : โ โ โ) โ is-inhabited (root f) โ root f
find-existing-root f = h โ g
where
ฮณ : root f โ fix (ฮผฯ f)
ฮณ = to-fix (ฮผฯ f) (ฮผฯ-wconstant f)
g : is-inhabited (root f) โ fix (ฮผฯ f)
g = inhabited-recursion (fix-is-subsingleton (ฮผฯ f) (ฮผฯ-wconstant f)) ฮณ
h : fix (ฮผฯ f) โ root f
h = from-fix (ฮผฯ f)
module find-existing-root-example where
f : โ โ โ
f 0 = 1
f 1 = 1
f 2 = 0
f 3 = 1
f 4 = 0
f 5 = 1
f 6 = 1
f 7 = 0
f (succ (succ (succ (succ (succ (succ (succ (succ x)))))))) = x
root-existence : is-inhabited (root f)
root-existence = inhabited-intro (8 , refl 0)
r : root f
r = find-existing-root f root-existence
x : โ
x = prโ r
x-is-root : f x โก 0
x-is-root = prโ r
p : x โก 2
p = refl _
module exit-โฅโฅ
(pt : subsingleton-truncations-exist)
(hfe : global-hfunext)
where
open basic-truncation-development pt hfe
open find-hidden-root
find-โฅโฅ-existing-root : (f : โ โ โ)
โ (โ n ๊ โ , f n โก 0)
โ ฮฃ n ๊ โ , f n โก 0
find-โฅโฅ-existing-root f = k
where
ฮณ : root f โ fix (ฮผฯ f)
ฮณ = to-fix (ฮผฯ f) (ฮผฯ-wconstant f)
g : โฅ root f โฅ โ fix (ฮผฯ f)
g = โฅโฅ-recursion (fix-is-subsingleton (ฮผฯ f) (ฮผฯ-wconstant f)) ฮณ
h : fix (ฮผฯ f) โ root f
h = from-fix (ฮผฯ f)
k : โฅ root f โฅ โ root f
k = h โ g
module find-โฅโฅ-existing-root-example where
f : โ โ โ
f 0 = 1
f 1 = 1
f 2 = 0
f 3 = 1
f 4 = 0
f 5 = 1
f 6 = 1
f 7 = 0
f (succ (succ (succ (succ (succ (succ (succ (succ x)))))))) = x
root-โฅโฅ-existence : โฅ root f โฅ
root-โฅโฅ-existence = โฃ 8 , refl 0 โฃ
r : root f
r = find-โฅโฅ-existing-root f root-โฅโฅ-existence
x : โ
x = prโ r
x-is-root : f x โก 0
x-is-root = prโ r
NB : find-โฅโฅ-existing-root f
โก from-fix (ฮผฯ f) โ โฅโฅ-recursion
(fix-is-subsingleton (ฮผฯ f) (ฮผฯ-wconstant f))
(to-fix (ฮผฯ f) (ฮผฯ-wconstant f))
NB = refl _
p : x โก 2
p = ap (prโ โ from-fix (ฮผฯ f))
(โฅโฅ-recursion-computation
(fix-is-subsingleton (ฮผฯ f) (ฮผฯ-wconstant f))
(to-fix (ฮผฯ f) (ฮผฯ-wconstant f))
(8 , refl _))
wconstant-endomap-gives-โฅโฅ-choice-function : {X : ๐ค ฬ }
โ wconstant-endomap X
โ (โฅ X โฅ โ X)
wconstant-endomap-gives-โฅโฅ-choice-function {๐ค} {X} (f , ฮบ) = from-fix f โ ฮณ
where
ฮณ : โฅ X โฅ โ fix f
ฮณ = โฅโฅ-recursion (fix-is-subsingleton f ฮบ) (to-fix f ฮบ)
โฅโฅ-choice-function-gives-wconstant-endomap : {X : ๐ค ฬ }
โ (โฅ X โฅ โ X)
โ wconstant-endomap X
โฅโฅ-choice-function-gives-wconstant-endomap {๐ค} {X} c = f , ฮบ
where
f : X โ X
f = c โ โฃ_โฃ
ฮบ : wconstant f
ฮบ x y = ap c (โฅโฅ-is-subsingleton โฃ x โฃ โฃ y โฃ)
โฅโฅ-recursion-set : (X : ๐ค ฬ ) (Y : ๐ฅ ฬ )
โ is-set Y
โ (f : X โ Y)
โ wconstant f
โ โฅ X โฅ โ Y
โฅโฅ-recursion-set {๐ค} {๐ฅ} X Y s f ฮบ = f'
where
ฯ : (y y' : Y) โ (ฮฃ x ๊ X , f x โก y) โ (ฮฃ x' ๊ X , f x' โก y') โ y โก y'
ฯ y y' (x , r) (x' , r') = y โกโจ r โปยน โฉ
f x โกโจ ฮบ x x' โฉ
f x' โกโจ r' โฉ
y' โ
ฯ : (y y' : Y) โ (โ x ๊ X , f x โก y) โ (โ x' ๊ X , f x' โก y') โ y โก y'
ฯ y y' u u' = โฅโฅ-recursion (s y y') (ฮป - โ โฅโฅ-recursion (s y y') (ฯ y y' -) u') u
P : ๐ค โ ๐ฅ ฬ
P = image f
i : is-subsingleton P
i (y , u) (y' , u') = to-subtype-โก (ฮป _ โ โ-is-subsingleton) (ฯ y y' u u')
g : โฅ X โฅ โ P
g = โฅโฅ-recursion i (corestriction f)
h : P โ Y
h = restriction f
f' : โฅ X โฅ โ Y
f' = h โ g
module noetherian-local-ring
(pt : subsingleton-truncations-exist)
{๐ค : Universe}
(ua : Univalence)
where
open ring {๐ค} ua
open basic-truncation-development pt hfe
open โ-order
is-left-ideal : (๐ก : Rng) โ ๐ โจ ๐ก โฉ โ ๐ค ฬ
is-left-ideal (R , (_+_ , _ยท_) , (i , ii , iii , (O , _) , _)) I =
(O โ I)
ร ((x y : R) โ x โ I โ y โ I โ (x + y) โ I)
ร ((x y : R) โ y โ I โ (x ยท y) โ I)
is-left-noetherian : (๐ก : Rng) โ ๐ค โบ ฬ
is-left-noetherian ๐ก = (I : โ โ ๐ โจ ๐ก โฉ)
โ ((n : โ) โ is-left-ideal ๐ก (I n))
โ ((n : โ) โ I n โ I (succ n))
โ โ m ๊ โ , ((n : โ) โ m โค n โ I m โก I n)
LNRng : ๐ค โบ ฬ
LNRng = ฮฃ ๐ก ๊ Rng , is-left-noetherian ๐ก
being-ln-is-subsingleton : (๐ก : Rng) โ is-subsingleton (is-left-noetherian ๐ก)
being-ln-is-subsingleton ๐ก = ฮ -is-subsingleton fe
(ฮป I โ ฮ -is-subsingleton fe
(ฮป _ โ ฮ -is-subsingleton fe
(ฮป _ โ โ-is-subsingleton)))
forget-LN : LNRng โ Rng
forget-LN (๐ก , _) = ๐ก
forget-LN-is-embedding : is-embedding forget-LN
forget-LN-is-embedding = prโ-is-embedding being-ln-is-subsingleton
_โ
[LNRng]_ : LNRng โ LNRng โ ๐ค ฬ
((R , (_+_ , _ยท_) , _) , _) โ
[LNRng] ((R' , (_+'_ , _ยท'_) , _) , _) =
ฮฃ f ๊ (R โ R')
, is-equiv f
ร ((ฮป x y โ f (x + y)) โก (ฮป x y โ f x +' f y))
ร ((ฮป x y โ f (x ยท y)) โก (ฮป x y โ f x ยท' f y))
NB : (๐ก ๐ก' : LNRng) โ (๐ก โ
[LNRng] ๐ก') โก (forget-LN ๐ก โ
[Rng] forget-LN ๐ก')
NB ๐ก ๐ก' = refl _
characterization-of-LNRng-โก : (๐ก ๐ก' : LNRng) โ (๐ก โก ๐ก') โ (๐ก โ
[LNRng] ๐ก')
characterization-of-LNRng-โก ๐ก ๐ก' = (๐ก โก ๐ก') โโจ i โฉ
(forget-LN ๐ก โก forget-LN ๐ก') โโจ ii โฉ
(๐ก โ
[LNRng] ๐ก') โ
where
i = โ-sym (embedding-criterion-converse forget-LN
forget-LN-is-embedding ๐ก ๐ก')
ii = characterization-of-rng-โก (forget-LN ๐ก) (forget-LN ๐ก')
isomorphic-LNRng-transport : (A : LNRng โ ๐ฅ ฬ ) (๐ก ๐ก' : LNRng)
โ ๐ก โ
[LNRng] ๐ก' โ A ๐ก โ A ๐ก'
isomorphic-LNRng-transport A ๐ก ๐ก' i a = a'
where
p : ๐ก โก ๐ก'
p = โ โ-sym (characterization-of-LNRng-โก ๐ก ๐ก') โ i
a' : A ๐ก'
a' = transport A p a
is-commutative : Rng โ ๐ค ฬ
is-commutative (R , (_+_ , _ยท_) , _) = (x y : R) โ x ยท y โก y ยท x
being-commutative-is-subsingleton : (๐ก : Rng) โ is-subsingleton (is-commutative ๐ก)
being-commutative-is-subsingleton (R , (_+_ , _ยท_) , i , ii-vii) =
ฮ -is-subsingleton fe
(ฮป x โ ฮ -is-subsingleton fe
(ฮป y โ i (x ยท y) (y ยท x)))
is-Noetherian-Local : Ring โ ๐ค โบ ฬ
is-Noetherian-Local (R , (๐ , _+_ , _ยท_) , i-vii , viii) = is-commutative ๐ก
ร is-noetherian
ร is-local
where
๐ก : Rng
๐ก = (R , (_+_ , _ยท_) , i-vii)
is-ideal = is-left-ideal ๐ก
is-noetherian = is-left-noetherian ๐ก
is-proper-ideal : ๐ R โ ๐ค ฬ
is-proper-ideal I = is-ideal I ร (โ x ๊ โจ ๐ก โฉ , x โ I)
is-local = โ! I ๊ ๐ R , is-proper-ideal I
ร ((J : ๐ R) โ is-proper-ideal J โ J โ I)
being-NL-is-subsingleton : (๐ก : Ring) โ is-subsingleton (is-Noetherian-Local ๐ก)
being-NL-is-subsingleton (R , (๐ , _+_ , _ยท_) , i-vii , viii) =
ร-is-subsingleton (being-commutative-is-subsingleton ๐ก)
(ร-is-subsingleton (being-ln-is-subsingleton ๐ก)
(โ!-is-subsingleton _ fe))
where
๐ก : Rng
๐ก = (R , (_+_ , _ยท_) , i-vii)
NL-Ring : ๐ค โบ ฬ
NL-Ring = ฮฃ ๐ก ๊ Ring , is-Noetherian-Local ๐ก
_โ
[NL]_ : NL-Ring โ NL-Ring โ ๐ค ฬ
((R , (๐ , _+_ , _ยท_) , _) , _) โ
[NL] ((R' , (๐' , _+'_ , _ยท'_) , _) , _) =
ฮฃ f ๊ (R โ R')
, is-equiv f
ร (f ๐ โก ๐')
ร ((ฮป x y โ f (x + y)) โก (ฮป x y โ f x +' f y))
ร ((ฮป x y โ f (x ยท y)) โก (ฮป x y โ f x ยท' f y))
forget-NL : NL-Ring โ Ring
forget-NL (๐ก , _) = ๐ก
forget-NL-is-embedding : is-embedding forget-NL
forget-NL-is-embedding = prโ-is-embedding being-NL-is-subsingleton
NB' : (๐ก ๐ก' : NL-Ring) โ (๐ก โ
[NL] ๐ก') โก (forget-NL ๐ก โ
[Ring] forget-NL ๐ก')
NB' ๐ก ๐ก' = refl _
characterization-of-NL-ring-โก : (๐ก ๐ก' : NL-Ring) โ (๐ก โก ๐ก') โ (๐ก โ
[NL] ๐ก')
characterization-of-NL-ring-โก ๐ก ๐ก' = (๐ก โก ๐ก') โโจ i โฉ
(forget-NL ๐ก โก forget-NL ๐ก') โโจ ii โฉ
(๐ก โ
[NL] ๐ก') โ
where
i = โ-sym (embedding-criterion-converse forget-NL
forget-NL-is-embedding ๐ก ๐ก')
ii = characterization-of-ring-โก (forget-NL ๐ก) (forget-NL ๐ก')
isomorphic-NL-Ring-transport : (A : NL-Ring โ ๐ฅ ฬ ) (๐ก ๐ก' : NL-Ring)
โ ๐ก โ
[NL] ๐ก' โ A ๐ก โ A ๐ก'
isomorphic-NL-Ring-transport A ๐ก ๐ก' i a = a'
where
p : ๐ก โก ๐ก'
p = โ โ-sym (characterization-of-NL-ring-โก ๐ก ๐ก') โ i
a' : A ๐ก'
a' = transport A p a
simple-unique-choice : (X : ๐ค ฬ ) (A : X โ ๐ฅ ฬ ) (R : (x : X) โ A x โ ๐ฆ ฬ )
โ ((x : X) โ โ! a ๊ A x , R x a)
โ ฮฃ f ๊ ฮ A , ((x : X) โ R x (f x))
simple-unique-choice X A R s = f , ฯ
where
f : (x : X) โ A x
f x = prโ (center (ฮฃ a ๊ A x , R x a) (s x))
ฯ : (x : X) โ R x (f x)
ฯ x = prโ (center (ฮฃ a ๊ A x , R x a) (s x))
Unique-Choice : (๐ค ๐ฅ ๐ฆ : Universe) โ (๐ค โ ๐ฅ โ ๐ฆ)โบ ฬ
Unique-Choice ๐ค ๐ฅ ๐ฆ = (X : ๐ค ฬ ) (A : X โ ๐ฅ ฬ ) (R : (x : X) โ A x โ ๐ฆ ฬ )
โ ((x : X) โ โ! a ๊ A x , R x a)
โ โ! f ๊ ฮ A , ((x : X) โ R x (f x))
vvfunext-gives-unique-choice : vvfunext ๐ค (๐ฅ โ ๐ฆ) โ Unique-Choice ๐ค ๐ฅ ๐ฆ
vvfunext-gives-unique-choice vv X A R s = c
where
a : ((x : X) โ ฮฃ a ๊ A x , R x a)
โ (ฮฃ f ๊ ((x : X) โ A x), ((x : X) โ R x (f x)))
a = ฮ ฮฃ-distr-โ
b : is-singleton ((x : X) โ ฮฃ a ๊ A x , R x a)
b = vv s
c : is-singleton (ฮฃ f ๊ ((x : X) โ A x), ((x : X) โ R x (f x)))
c = equiv-to-singleton' a b
unique-choice-gives-vvfunext : Unique-Choice ๐ค ๐ฅ ๐ฅ โ vvfunext ๐ค ๐ฅ
unique-choice-gives-vvfunext {๐ค} {๐ฅ} uc {X} {A} ฯ = ฮณ
where
R : (x : X) โ A x โ ๐ฅ ฬ
R x a = A x
s' : (x : X) โ is-singleton (A x ร A x)
s' x = ร-is-singleton (ฯ x) (ฯ x)
s : (x : X) โ โ! y ๊ A x , R x y
s = s'
e : โ! f ๊ ฮ A , ((x : X) โ R x (f x))
e = uc X A R s
e' : is-singleton (ฮ A ร ฮ A)
e' = e
ฯ : ฮ A โ ฮ A ร ฮ A
ฯ = prโ , (ฮป y โ y , y) , refl
ฮณ : is-singleton (ฮ A)
ฮณ = retract-of-singleton ฯ e'
unique-choice-gives-hfunext : Unique-Choice ๐ค ๐ฅ ๐ฅ โ hfunext ๐ค ๐ฅ
unique-choice-gives-hfunext {๐ค} {๐ฅ} uc = โhfunext ฮณ
where
ฮณ : (X : ๐ค ฬ ) (A : X โ ๐ฅ ฬ ) (f : ฮ A) โ โ! g ๊ ฮ A , f โผ g
ฮณ X A f = uc X A R e
where
R : (x : X) โ A x โ ๐ฅ ฬ
R x a = f x โก a
e : (x : X) โ โ! a ๊ A x , f x โก a
e x = singleton-types'-are-singletons (A x) (f x)
unique-choiceโvvfunext : Unique-Choice ๐ค ๐ฅ ๐ฅ โ vvfunext ๐ค ๐ฅ
unique-choiceโvvfunext = unique-choice-gives-vvfunext ,
vvfunext-gives-unique-choice
module _ (hfe : global-hfunext) where
private
hunapply : {X : ๐ค ฬ } {A : X โ ๐ฅ ฬ } {f g : ฮ A} โ f โผ g โ f โก g
hunapply = inverse (happly _ _) (hfe _ _)
transport-hunapply : {X : ๐ค ฬ } (A : X โ ๐ฅ ฬ ) (R : (x : X) โ A x โ ๐ฆ ฬ )
(f g : ฮ A)
(ฯ : (x : X) โ R x (f x))
(h : f โผ g)
(x : X)
โ transport (ฮป - โ (x : X) โ R x (- x)) (hunapply h) ฯ x
โก transport (R x) (h x) (ฯ x)
transport-hunapply A R f g ฯ h x =
transport (ฮป - โ โ x โ R x (- x)) (hunapply h) ฯ x โกโจ i โฉ
transport (R x) (happly f g (hunapply h) x) (ฯ x) โกโจ ii โฉ
transport (R x) (h x) (ฯ x) โ
where
a : {f g : ฮ A} {ฯ : โ x โ R x (f x)} (p : f โก g) (x : domain A)
โ transport (ฮป - โ โ x โ R x (- x)) p ฯ x
โก transport (R x) (happly f g p x) (ฯ x)
a (refl _) x = refl _
b : happly f g (hunapply h) โก h
b = inverses-are-sections (happly f g) (hfe f g) h
i = a (hunapply h) x
ii = ap (ฮป - โ transport (R x) (- x) (ฯ x)) b
unique-choice : (X : ๐ค ฬ ) (A : X โ ๐ฅ ฬ ) (R : (x : X) โ A x โ ๐ฆ ฬ )
โ ((x : X) โ โ! a ๊ A x , R x a)
โ โ! f ๊ ((x : X) โ A x), ((x : X) โ R x (f x))
unique-choice X A R s = C , ฮฆ
where
fโ : (x : X) โ A x
fโ x = prโ (center (ฮฃ a ๊ A x , R x a) (s x))
ฯโ : (x : X) โ R x (fโ x)
ฯโ x = prโ (center (ฮฃ a ๊ A x , R x a) (s x))
C : ฮฃ f ๊ ((x : X) โ A x), ((x : X) โ R x (f x))
C = fโ , ฯโ
c : (x : X) โ (ฯ : ฮฃ a ๊ A x , R x a) โ fโ x , ฯโ x โก ฯ
c x = centrality (ฮฃ a ๊ A x , R x a) (s x)
cโ : (x : X) (a : A x) (r : R x a) โ fโ x โก a
cโ x a r = ap prโ (c x (a , r))
cโ : (x : X) (a : A x) (r : R x a)
โ transport (ฮป - โ R x (prโ -)) (c x (a , r)) (ฯโ x) โก r
cโ x a r = apd prโ (c x (a , r))
ฮฆ : (ฯ : ฮฃ f ๊ ((x : X) โ A x), ((x : X) โ R x (f x))) โ C โก ฯ
ฮฆ (f , ฯ) = to-ฮฃ-โก (p , hunapply q)
where
p : fโ โก f
p = hunapply (ฮป x โ cโ x (f x) (ฯ x))
q : transport (ฮป - โ (x : X) โ R x (- x)) p ฯโ โผ ฯ
q x = transport (ฮป - โ (x : X) โ R x (- x)) p ฯโ x โกโจ i โฉ
transport (R x) (ap prโ (c x (f x , ฯ x))) (ฯโ x) โกโจ ii โฉ
transport (ฮป ฯ โ R x (prโ ฯ)) (c x (f x , ฯ x)) (ฯโ x) โกโจ iii โฉ
ฯ x โ
where
i = transport-hunapply A R fโ f ฯโ (ฮป x โ cโ x (f x) (ฯ x)) x
ii = (transport-ap (R x) prโ (c x (f x , ฯ x)) (ฯโ x))โปยน
iii = cโ x (f x) (ฯ x)
module choice
(pt : subsingleton-truncations-exist)
(hfe : global-hfunext)
where
open basic-truncation-development pt hfe public
simple-unique-choice' : (X : ๐ค ฬ ) (A : X โ ๐ฅ ฬ ) (R : (x : X) โ A x โ ๐ฆ ฬ )
โ ((x : X) โ is-subsingleton (ฮฃ a ๊ A x , R x a))
โ ((x : X) โ โ a ๊ A x , R x a)
โ ฮฃ f ๊ ฮ A , ((x : X) โ R x (f x))
simple-unique-choice' X A R u ฯ = simple-unique-choice X A R s
where
s : (x : X) โ โ! a ๊ A x , R x a
s x = inhabited-subsingletons-are-singletons (ฮฃ a ๊ A x , R x a) (ฯ x) (u x)
AC : โ ๐ฃ (X : ๐ค ฬ ) (A : X โ ๐ฅ ฬ )
โ is-set X โ ((x : X) โ is-set (A x)) โ ๐ฃ โบ โ ๐ค โ ๐ฅ ฬ
AC ๐ฃ X A i j = (R : (x : X) โ A x โ ๐ฃ ฬ )
โ ((x : X) (a : A x) โ is-subsingleton (R x a))
โ ((x : X) โ โ a ๊ A x , R x a)
โ โ f ๊ ฮ A , ((x : X) โ R x (f x))
Choice : โ ๐ค โ ๐ค โบ ฬ
Choice ๐ค = (X : ๐ค ฬ ) (A : X โ ๐ค ฬ ) (i : is-set X) (j : (x : X) โ is-set (A x))
โ AC ๐ค X A i j
IAC : (X : ๐ค ฬ ) (Y : X โ ๐ฅ ฬ ) โ is-set X โ ((x : X) โ is-set (Y x)) โ ๐ค โ ๐ฅ ฬ
IAC X Y i j = ((x : X) โ โฅ Y x โฅ) โ โฅ ฮ Y โฅ
IChoice : โ ๐ค โ ๐ค โบ ฬ
IChoice ๐ค = (X : ๐ค ฬ ) (Y : X โ ๐ค ฬ ) (i : is-set X) (j : (x : X) โ is-set (Y x))
โ IAC X Y i j
Choice-gives-IChoice : Choice ๐ค โ IChoice ๐ค
Choice-gives-IChoice {๐ค} ac X Y i j ฯ = ฮณ
where
R : (x : X) โ Y x โ ๐ค ฬ
R x y = x โก x
k : (x : X) (y : Y x) โ is-subsingleton (R x y)
k x y = i x x
h : (x : X) โ Y x โ ฮฃ y ๊ Y x , R x y
h x y = (y , refl x)
g : (x : X) โ โ y ๊ Y x , R x y
g x = โฅโฅ-functor (h x) (ฯ x)
c : โ f ๊ ฮ Y , ((x : X) โ R x (f x))
c = ac X Y i j R k g
ฮณ : โฅ ฮ Y โฅ
ฮณ = โฅโฅ-functor prโ c
IChoice-gives-Choice : IChoice ๐ค โ Choice ๐ค
IChoice-gives-Choice {๐ค} iac X A i j R k ฯ = ฮณ
where
Y : X โ ๐ค ฬ
Y x = ฮฃ a ๊ A x , R x a
l : (x : X) โ is-set (Y x)
l x = subsets-of-sets-are-sets (A x) (R x) (j x) (k x)
a : โฅ ฮ Y โฅ
a = iac X Y i l ฯ
h : ฮ Y โ ฮฃ f ๊ ฮ A , ((x : X) โ R x (f x))
h g = (ฮป x โ prโ (g x)) , (ฮป x โ prโ (g x))
ฮณ : โ f ๊ ฮ A , ((x : X) โ R x (f x))
ฮณ = โฅโฅ-functor h a
TAC : (X : ๐ค ฬ ) (A : X โ ๐ฅ ฬ ) โ is-set X โ ((x : X) โ is-set (A x)) โ ๐ค โ ๐ฅ ฬ
TAC X A i j = โฅ((x : X) โ โฅ A x โฅ โ A x)โฅ
TChoice : โ ๐ค โ ๐ค โบ ฬ
TChoice ๐ค = (X : ๐ค ฬ ) (A : X โ ๐ค ฬ ) (i : is-set X) (j : (x : X) โ is-set (A x))
โ TAC X A i j
IChoice-gives-TChoice : IChoice ๐ค โ TChoice ๐ค
IChoice-gives-TChoice {๐ค} iac X A i j = ฮณ
where
B : (x : X) โ โฅ A x โฅ โ ๐ค ฬ
B x s = A x
k : (x : X) (s : โฅ A x โฅ) โ is-set (B x s)
k x s = j x
l : (x : X) โ is-set โฅ A x โฅ
l x = subsingletons-are-sets โฅ A x โฅ โฅโฅ-is-subsingleton
m : (x : X) โ is-set (โฅ A x โฅ โ A x)
m x = ฮ -is-set hfe (ฮป s โ j x)
ฯ : (x : X) โ โฅ (โฅ A x โฅ โ A x) โฅ
ฯ x = iac โฅ A x โฅ (B x) (l x) (k x) (๐๐ โฅ A x โฅ)
ฮณ : โฅ((x : X) โ โฅ A x โฅ โ A x)โฅ
ฮณ = iac X (ฮป x โ โฅ A x โฅ โ A x) i m ฯ
TChoice-gives-IChoice : TChoice ๐ค โ IChoice ๐ค
TChoice-gives-IChoice tac X A i j = ฮณ
where
ฮณ : ((x : X) โ โฅ A x โฅ) โ โฅ ฮ A โฅ
ฮณ g = โฅโฅ-functor ฯ (tac X A i j)
where
ฯ : ((x : X) โ โฅ A x โฅ โ A x) โ ฮ A
ฯ f x = f x (g x)
decidable-equality-criterion : {X : ๐ค ฬ } (ฮฑ : ๐ โ X)
โ ((x : X) โ (โ n ๊ ๐ , ฮฑ n โก x)
โ (ฮฃ n ๊ ๐ , ฮฑ n โก x))
โ decidable(ฮฑ โ โก ฮฑ โ)
decidable-equality-criterion ฮฑ c = ฮณ d
where
r : ๐ โ image ฮฑ
r = corestriction ฮฑ
ฯ : (y : image ฮฑ) โ ฮฃ n ๊ ๐ , r n โก y
ฯ (x , t) = f u
where
u : ฮฃ n ๊ ๐ , ฮฑ n โก x
u = c x t
f : (ฮฃ n ๊ ๐ , ฮฑ n โก x) โ ฮฃ n ๊ ๐ , r n โก (x , t)
f (n , p) = n , to-subtype-โก (ฮป _ โ โ-is-subsingleton) p
s : image ฮฑ โ ๐
s y = prโ (ฯ y)
ฮท : (y : image ฮฑ) โ r (s y) โก y
ฮท y = prโ (ฯ y)
l : left-cancellable s
l = sections-are-lc s (r , ฮท)
ฮฑr : {m n : ๐} โ ฮฑ m โก ฮฑ n โ r m โก r n
ฮฑr p = to-subtype-โก (ฮป _ โ โ-is-subsingleton) p
rฮฑ : {m n : ๐} โ r m โก r n โ ฮฑ m โก ฮฑ n
rฮฑ = ap prโ
ฮฑs : {m n : ๐} โ ฮฑ m โก ฮฑ n โ s (r m) โก s (r n)
ฮฑs p = ap s (ฮฑr p)
sฮฑ : {m n : ๐} โ s (r m) โก s (r n) โ ฮฑ m โก ฮฑ n
sฮฑ p = rฮฑ (l p)
ฮณ : decidable (s (r โ) โก s (r โ)) โ decidable(ฮฑ โ โก ฮฑ โ)
ฮณ (inl p) = inl (sฮฑ p)
ฮณ (inr u) = inr (contrapositive ฮฑs u)
d : decidable (s (r โ) โก s (r โ))
d = ๐-has-decidable-equality (s (r โ)) (s (r โ))
choice-gives-decidable-equality : TChoice ๐ค
โ (X : ๐ค ฬ ) โ is-set X โ has-decidable-equality X
choice-gives-decidable-equality {๐ค} tac X i xโ xโ = ฮณ
where
ฮฑ : ๐ โ X
ฮฑ โ = xโ
ฮฑ โ = xโ
A : X โ ๐ค ฬ
A x = ฮฃ n ๊ ๐ , ฮฑ n โก x
l : is-subsingleton (decidable (xโ โก xโ))
l = +-is-subsingleton' hunapply (i (ฮฑ โ) (ฮฑ โ))
ฮด : โฅ((x : X) โ โฅ A x โฅ โ A x)โฅ โ decidable(xโ โก xโ)
ฮด = โฅโฅ-recursion l (decidable-equality-criterion ฮฑ)
j : (x : X) โ is-set (A x)
j x = subsets-of-sets-are-sets ๐ (ฮป n โ ฮฑ n โก x) ๐-is-set (ฮป n โ i (ฮฑ n) x)
h : โฅ((x : X) โ โฅ A x โฅ โ A x)โฅ
h = tac X A i j
ฮณ : decidable (xโ โก xโ)
ฮณ = ฮด h
choice-gives-EM : propext ๐ค โ TChoice (๐ค โบ) โ EM ๐ค
choice-gives-EM {๐ค} pe tac = em
where
โค : ฮฉ ๐ค
โค = (Lift ๐ค ๐ , equiv-to-subsingleton (Lift-โ ๐) ๐-is-subsingleton)
ฮด : (ฯ : ฮฉ ๐ค) โ decidable (โค โก ฯ)
ฮด = choice-gives-decidable-equality tac (ฮฉ ๐ค) (ฮฉ-is-a-set hunapply pe) โค
em : (P : ๐ค ฬ ) โ is-subsingleton P โ P + ยฌ P
em P i = ฮณ (ฮด (P , i))
where
ฮณ : decidable (โค โก (P , i)) โ P + ยฌ P
ฮณ (inl r) = inl (Idโfun s (lift โ))
where
s : Lift ๐ค ๐ โก P
s = ap prโ r
ฮณ (inr n) = inr (contrapositive f n)
where
f : P โ โค โก P , i
f p = ฮฉ-ext hunapply pe (ฮป (_ : Lift ๐ค ๐) โ p) (ฮป (_ : P) โ lift โ)
global-choice : (๐ค : Universe) โ ๐ค โบ ฬ
global-choice ๐ค = (X : ๐ค ฬ ) โ X + is-empty X
global-โฅโฅ-choice : (๐ค : Universe) โ ๐ค โบ ฬ
global-โฅโฅ-choice ๐ค = (X : ๐ค ฬ ) โ โฅ X โฅ โ X
open exit-โฅโฅ pt hfe
global-choice-gives-wconstant : global-choice ๐ค
โ (X : ๐ค ฬ ) โ wconstant-endomap X
global-choice-gives-wconstant g X = decidable-has-wconstant-endomap (g X)
global-choice-gives-global-โฅโฅ-choice : global-choice ๐ค
โ global-โฅโฅ-choice ๐ค
global-choice-gives-global-โฅโฅ-choice {๐ค} c X = ฮณ (c X)
where
ฮณ : X + is-empty X โ โฅ X โฅ โ X
ฮณ (inl x) s = x
ฮณ (inr n) s = !๐ X (โฅโฅ-recursion ๐-is-subsingleton n s)
global-โฅโฅ-choice-gives-all-types-are-sets : global-โฅโฅ-choice ๐ค
โ (X : ๐ค ฬ ) โ is-set X
global-โฅโฅ-choice-gives-all-types-are-sets {๐ค} c X =
types-with-wconstant-โก-endomaps-are-sets X
(ฮป x y โ โฅโฅ-choice-function-gives-wconstant-endomap (c (x โก y)))
global-โฅโฅ-choice-gives-universe-is-set : global-โฅโฅ-choice (๐ค โบ)
โ is-set (๐ค ฬ )
global-โฅโฅ-choice-gives-universe-is-set {๐ค} c =
global-โฅโฅ-choice-gives-all-types-are-sets c (๐ค ฬ )
global-โฅโฅ-choice-gives-choice : global-โฅโฅ-choice ๐ค
โ TChoice ๐ค
global-โฅโฅ-choice-gives-choice {๐ค} c X A i j = โฃ(ฮป x โ c (A x))โฃ
global-โฅโฅ-choice-gives-EM : propext ๐ค
โ global-โฅโฅ-choice (๐ค โบ)
โ EM ๐ค
global-โฅโฅ-choice-gives-EM {๐ค} pe c =
choice-gives-EM pe (global-โฅโฅ-choice-gives-choice c)
global-โฅโฅ-choice-gives-global-choice : propext ๐ค
โ global-โฅโฅ-choice ๐ค
โ global-โฅโฅ-choice (๐ค โบ)
โ global-choice ๐ค
global-โฅโฅ-choice-gives-global-choice {๐ค} pe c cโบ X = ฮณ
where
d : decidable โฅ X โฅ
d = global-โฅโฅ-choice-gives-EM pe cโบ โฅ X โฅ โฅโฅ-is-subsingleton
f : decidable โฅ X โฅ โ X + is-empty X
f (inl i) = inl (c X i)
f (inr ฯ) = inr (contrapositive โฃ_โฃ ฯ)
ฮณ : X + is-empty X
ฮณ = f d
Global-Choice Global-โฅโฅ-Choice : ๐คฯ
Global-Choice = โ ๐ค โ global-choice ๐ค
Global-โฅโฅ-Choice = โ ๐ค โ global-โฅโฅ-choice ๐ค
Global-Choice-gives-Global-โฅโฅ-Choice : Global-Choice โ Global-โฅโฅ-Choice
Global-Choice-gives-Global-โฅโฅ-Choice c ๐ค =
global-choice-gives-global-โฅโฅ-choice (c ๐ค)
Global-โฅโฅ-Choice-gives-Global-Choice : global-propext
โ Global-โฅโฅ-Choice โ Global-Choice
Global-โฅโฅ-Choice-gives-Global-Choice pe c ๐ค =
global-โฅโฅ-choice-gives-global-choice pe (c ๐ค) (c (๐ค โบ))
global-โฅโฅ-choice-inconsistent-with-univalence : Global-โฅโฅ-Choice
โ Univalence
โ ๐
global-โฅโฅ-choice-inconsistent-with-univalence g ua = ฮณ (g ๐คโ) (ua ๐คโ)
where
open example-of-a-nonset
ฮณ : global-โฅโฅ-choice ๐คโ โ is-univalent ๐คโ โ ๐
ฮณ g ua = ๐คโ-is-not-a-set ua (global-โฅโฅ-choice-gives-universe-is-set g)
global-choice-inconsistent-with-univalence : Global-Choice
โ Univalence
โ ๐
global-choice-inconsistent-with-univalence g =
global-โฅโฅ-choice-inconsistent-with-univalence
(Global-Choice-gives-Global-โฅโฅ-Choice g)
global-choice-gives-all-types-are-sets : global-choice ๐ค
โ (X : ๐ค ฬ ) โ is-set X
global-choice-gives-all-types-are-sets {๐ค} c X = hedberg (ฮป x y โ c (x โก y))
_has-size_ : ๐ค ฬ โ (๐ฅ : Universe) โ ๐ฅ โบ โ ๐ค ฬ
X has-size ๐ฅ = ฮฃ Y ๊ ๐ฅ ฬ , X โ Y
propositional-resizing : (๐ค ๐ฅ : Universe) โ (๐ค โ ๐ฅ)โบ ฬ
propositional-resizing ๐ค ๐ฅ = (P : ๐ค ฬ ) โ is-subsingleton P โ P has-size ๐ฅ
Propositional-resizing : ๐คฯ
Propositional-resizing = {๐ค ๐ฅ : Universe} โ propositional-resizing ๐ค ๐ฅ
upper-resizing : โ {๐ค} ๐ฅ (X : ๐ค ฬ ) โ X has-size (๐ค โ ๐ฅ)
upper-resizing ๐ฅ X = (Lift ๐ฅ X , โ-Lift X)
has-size-is-upper : (X : ๐ค ฬ ) โ X has-size ๐ฅ โ X has-size (๐ฅ โ ๐ฆ)
has-size-is-upper {๐ค} {๐ฅ} {๐ฆ} X (Y , e) = Z , c
where
Z : ๐ฅ โ ๐ฆ ฬ
Z = Lift ๐ฆ Y
d : Y โ Z
d = โ-Lift Y
c : X โ Z
c = e โ d
upper-propositional-resizing : propositional-resizing ๐ค (๐ค โ ๐ฅ)
upper-propositional-resizing {๐ค} {๐ฅ} P i = upper-resizing ๐ฅ P
is-small : ๐ค ฬ โ ๐ค โ ๐คโ ฬ
is-small X = X has-size ๐คโ
all-propositions-are-small : โ ๐ค โ ๐ค โบ ฬ
all-propositions-are-small ๐ค = (P : ๐ค ฬ ) โ is-prop P โ is-small P
all-propositions-are-small-means-PRโ : all-propositions-are-small ๐ค
โก propositional-resizing ๐ค ๐คโ
all-propositions-are-small-means-PRโ = refl _
all-propositions-are-small-gives-PR : all-propositions-are-small ๐ค
โ propositional-resizing ๐ค ๐ฅ
all-propositions-are-small-gives-PR {๐ค} {๐ฅ} a P i = ฮณ
where
ฮด : P has-size ๐คโ
ฮด = a P i
ฮณ : P has-size ๐ฅ
ฮณ = has-size-is-upper P ฮด
All-propositions-are-small : ๐คฯ
All-propositions-are-small = โ ๐ค โ all-propositions-are-small ๐ค
PR-gives-All-propositions-are-small : Propositional-resizing
โ All-propositions-are-small
PR-gives-All-propositions-are-small PR ๐ค = PR
All-propositions-are-small-gives-PR : All-propositions-are-small
โ Propositional-resizing
All-propositions-are-small-gives-PR a {๐ค} {๐ฅ} = all-propositions-are-small-gives-PR (a ๐ค)
resize : propositional-resizing ๐ค ๐ฅ
โ (P : ๐ค ฬ ) (i : is-subsingleton P) โ ๐ฅ ฬ
resize ฯ P i = prโ (ฯ P i)
resize-is-subsingleton : (ฯ : propositional-resizing ๐ค ๐ฅ)
(P : ๐ค ฬ ) (i : is-subsingleton P)
โ is-subsingleton (resize ฯ P i)
resize-is-subsingleton ฯ P i = equiv-to-subsingleton (โ-sym (prโ (ฯ P i))) i
to-resize : (ฯ : propositional-resizing ๐ค ๐ฅ)
(P : ๐ค ฬ ) (i : is-subsingleton P)
โ P โ resize ฯ P i
to-resize ฯ P i = โ prโ (ฯ P i) โ
from-resize : (ฯ : propositional-resizing ๐ค ๐ฅ)
(P : ๐ค ฬ ) (i : is-subsingleton P)
โ resize ฯ P i โ P
from-resize ฯ P i = โ โ-sym(prโ (ฯ P i)) โ
EM-gives-all-propositions-are-small : EM ๐ค โ all-propositions-are-small ๐ค
EM-gives-all-propositions-are-small em P i = ฮณ
where
Q : P + ยฌ P โ ๐คโ ฬ
Q (inl _) = ๐
Q (inr _) = ๐
j : (d : P + ยฌ P) โ is-subsingleton (Q d)
j (inl p) = ๐-is-subsingleton
j (inr n) = ๐-is-subsingleton
f : (d : P + ยฌ P) โ P โ Q d
f (inl _) _ = โ
f (inr n) p = !๐ ๐ (n p)
g : (d : P + ยฌ P) โ Q d โ P
g (inl p) _ = p
g (inr _) q = !๐ P q
e : P โ Q (em P i)
e = logically-equivalent-subsingletons-are-equivalent
P (Q (em P i)) i (j (em P i)) (f (em P i) , g (em P i))
ฮณ : is-small P
ฮณ = Q (em P i) , e
EM-gives-PR : EM ๐ค โ propositional-resizing ๐ค ๐ฅ
EM-gives-PR {๐ค} {๐ฅ} em = all-propositions-are-small-gives-PR
(EM-gives-all-propositions-are-small em)
has-size-is-subsingleton : Univalence
โ (X : ๐ค ฬ ) (๐ฅ : Universe)
โ is-subsingleton (X has-size ๐ฅ)
has-size-is-subsingleton {๐ค} ua X ๐ฅ = univalenceโ' (ua ๐ฅ) (ua (๐ค โ ๐ฅ)) X
PR-is-subsingleton : Univalence โ is-subsingleton (propositional-resizing ๐ค ๐ฅ)
PR-is-subsingleton {๐ค} {๐ฅ} ua =
ฮ -is-subsingleton (univalence-gives-global-dfunext ua)
(ฮป P โ ฮ -is-subsingleton (univalence-gives-global-dfunext ua)
(ฮป i โ has-size-is-subsingleton ua P ๐ฅ))
Impredicativity : (๐ค ๐ฅ : Universe) โ (๐ค โ ๐ฅ )โบ ฬ
Impredicativity ๐ค ๐ฅ = ฮฉ ๐ค has-size ๐ฅ
is-impredicative : (๐ค : Universe) โ ๐ค โบ ฬ
is-impredicative ๐ค = Impredicativity ๐ค ๐ค
is-relatively-small : ๐ค โบ ฬ โ ๐ค โบ ฬ
is-relatively-small {๐ค} X = X has-size ๐ค
impredicativity-is-ฮฉ-smallness : โ {๐ค} โ is-impredicative ๐ค โก is-relatively-small (ฮฉ ๐ค)
impredicativity-is-ฮฉ-smallness {๐ค} = refl _
PR-gives-Impredicativityโบ : global-propext
โ global-dfunext
โ propositional-resizing ๐ฅ ๐ค
โ propositional-resizing ๐ค ๐ฅ
โ Impredicativity ๐ค (๐ฅ โบ)
PR-gives-Impredicativityโบ {๐ฅ} {๐ค} pe fe ฯ ฯ = ฮณ
where
ฯ : ฮฉ ๐ฅ โ ฮฉ ๐ค
ฯ (Q , j) = resize ฯ Q j , resize-is-subsingleton ฯ Q j
ฯ : ฮฉ ๐ค โ ฮฉ ๐ฅ
ฯ (P , i) = resize ฯ P i , resize-is-subsingleton ฯ P i
ฮท : (p : ฮฉ ๐ค) โ ฯ (ฯ p) โก p
ฮท (P , i) = ฮฉ-ext fe pe a b
where
Q : ๐ฅ ฬ
Q = resize ฯ P i
j : is-subsingleton Q
j = resize-is-subsingleton ฯ P i
a : resize ฯ Q j โ P
a = from-resize ฯ P i โ from-resize ฯ Q j
b : P โ resize ฯ Q j
b = to-resize ฯ Q j โ to-resize ฯ P i
ฮต : (q : ฮฉ ๐ฅ) โ ฯ (ฯ q) โก q
ฮต (Q , j) = ฮฉ-ext fe pe a b
where
P : ๐ค ฬ
P = resize ฯ Q j
i : is-subsingleton P
i = resize-is-subsingleton ฯ Q j
a : resize ฯ P i โ Q
a = from-resize ฯ Q j โ from-resize ฯ P i
b : Q โ resize ฯ P i
b = to-resize ฯ P i โ to-resize ฯ Q j
ฮณ : (ฮฉ ๐ค) has-size (๐ฅ โบ)
ฮณ = ฮฉ ๐ฅ , invertibility-gives-โ ฯ (ฯ , ฮท , ฮต)
PR-gives-impredicativityโบ : global-propext
โ global-dfunext
โ propositional-resizing (๐ค โบ) ๐ค
โ is-impredicative (๐ค โบ)
PR-gives-impredicativityโบ {๐ค} pe fe = PR-gives-Impredicativityโบ
pe fe (ฮป P i โ upper-resizing (๐ค โบ) P)
PR-gives-impredicativityโ : global-propext
โ global-dfunext
โ propositional-resizing ๐ค ๐คโ
โ Impredicativity ๐ค ๐คโ
PR-gives-impredicativityโ {๐ค} pe fe = PR-gives-Impredicativityโบ
pe fe (ฮป P i โ upper-resizing ๐ค P)
all-propositions-are-small-gives-impredicativityโ :
global-propext
โ global-dfunext
โ all-propositions-are-small ๐ค
โ ฮฉ ๐ค has-size ๐คโ
all-propositions-are-small-gives-impredicativityโ = PR-gives-impredicativityโ
Impredicativity-gives-PR : propext ๐ค
โ dfunext ๐ค ๐ค
โ Impredicativity ๐ค ๐ฅ
โ propositional-resizing ๐ค ๐ฅ
Impredicativity-gives-PR {๐ค} {๐ฅ} pe fe (O , e) P i = Q , ฮต
where
๐' : ๐ค ฬ
๐' = Lift ๐ค ๐
k : is-subsingleton ๐'
k (lift โ) (lift โ) = refl (lift โ)
down : ฮฉ ๐ค โ O
down = โ e โ
O-is-set : is-set O
O-is-set = equiv-to-set (โ-sym e) (ฮฉ-is-a-set fe pe)
Q : ๐ฅ ฬ
Q = down (๐' , k) โก down (P , i)
j : is-subsingleton Q
j = O-is-set (down (Lift ๐ค ๐ , k)) (down (P , i))
ฯ : Q โ P
ฯ q = Idโfun
(ap _holds (equivs-are-lc down (โโ-is-equiv e) q))
(lift โ)
ฮณ : P โ Q
ฮณ p = ap down (to-subtype-โก
(ฮป _ โ being-subsingleton-is-subsingleton fe)
(pe k i (ฮป _ โ p) (ฮป _ โ lift โ)))
ฮต : P โ Q
ฮต = logically-equivalent-subsingletons-are-equivalent P Q i j (ฮณ , ฯ)
PR-gives-existence-of-truncations : global-dfunext
โ Propositional-resizing
โ subsingleton-truncations-exist
PR-gives-existence-of-truncations fe R =
record
{
โฅ_โฅ =
ฮป {๐ค} X โ resize R
(is-inhabited X)
(inhabitation-is-subsingleton fe X) ;
โฅโฅ-is-subsingleton =
ฮป {๐ค} {X} โ resize-is-subsingleton R
(is-inhabited X)
(inhabitation-is-subsingleton fe X) ;
โฃ_โฃ =
ฮป {๐ค} {X} x โ to-resize R
(is-inhabited X)
(inhabitation-is-subsingleton fe X)
(inhabited-intro x) ;
โฅโฅ-recursion =
ฮป {๐ค} {๐ฅ} {X} {P} i u s โ from-resize R P i
(inhabited-recursion
(resize-is-subsingleton R P i)
(to-resize R P i โ u)
(from-resize R
(is-inhabited X)
(inhabitation-is-subsingleton fe X) s))
}
module powerset-union-existence
(pt : subsingleton-truncations-exist)
(hfe : global-hfunext)
where
open basic-truncation-development pt hfe
family-union : {X : ๐ค โ ๐ฅ ฬ } {I : ๐ฅ ฬ } โ (I โ ๐ X) โ ๐ X
family-union {๐ค} {๐ฅ} {X} {I} A = ฮป x โ (โ i ๊ I , x โ A i) , โ-is-subsingleton
๐๐ : ๐ค ฬ โ ๐ค โบโบ ฬ
๐๐ X = ๐ (๐ X)
existence-of-unions : (๐ค : Universe) โ ๐ค โบโบ ฬ
existence-of-unions ๐ค =
(X : ๐ค ฬ ) (๐ : ๐๐ X) โ ฮฃ B ๊ ๐ X , ((x : X) โ (x โ B) โ (โ A ๊ ๐ X , (A โ ๐) ร (x โ A)))
existence-of-unionsโ : (๐ค : Universe) โ _ ฬ
existence-of-unionsโ ๐ค =
(X : ๐ค ฬ )
(๐ : (X โ ฮฉ _) โ ฮฉ _)
โ ฮฃ B ๊ (X โ ฮฉ _) , ((x : X) โ (x โ B) โ (โ A ๊ (X โ ฮฉ _) , (A โ ๐) ร (x โ A)))
existence-of-unionsโ : (๐ค : Universe) โ ๐ค โบโบ ฬ
existence-of-unionsโ ๐ค =
(X : ๐ค ฬ )
(๐ : (X โ ฮฉ ๐ค) โ ฮฉ (๐ค โบ))
โ ฮฃ B ๊ (X โ ฮฉ ๐ค) , ((x : X) โ (x โ B) โ (โ A ๊ (X โ ฮฉ ๐ค) , (A โ ๐) ร (x โ A)))
existence-of-unions-agreement : existence-of-unions ๐ค โก existence-of-unionsโ ๐ค
existence-of-unions-agreement = refl _
existence-of-unions-gives-PR : existence-of-unions ๐ค
โ propositional-resizing (๐ค โบ) ๐ค
existence-of-unions-gives-PR {๐ค} ฮฑ = ฮณ
where
ฮณ : (P : ๐ค โบ ฬ ) โ (i : is-subsingleton P) โ P has-size ๐ค
ฮณ P i = Q , e
where
๐แตค : ๐ค ฬ
๐แตค = Lift ๐ค ๐
โแตค : ๐แตค
โแตค = lift โ
๐แตค-is-subsingleton : is-subsingleton ๐แตค
๐แตค-is-subsingleton = equiv-to-subsingleton (Lift-โ ๐) ๐-is-subsingleton
๐ : ๐๐ ๐แตค
๐ = ฮป (A : ๐ ๐แตค) โ P , i
B : ๐ ๐แตค
B = prโ (ฮฑ ๐แตค ๐)
ฯ : (x : ๐แตค) โ (x โ B) โ (โ A ๊ ๐ ๐แตค , (A โ ๐) ร (x โ A))
ฯ = prโ (ฮฑ ๐แตค ๐)
Q : ๐ค ฬ
Q = โแตค โ B
j : is-subsingleton Q
j = โ-is-subsingleton B โแตค
f : P โ Q
f p = b
where
a : ฮฃ A ๊ ๐ ๐แตค , (A โ ๐) ร (โแตค โ A)
a = (ฮป (x : ๐แตค) โ ๐แตค , ๐แตค-is-subsingleton) , p , โแตค
b : โแตค โ B
b = rl-implication (ฯ โแตค) โฃ a โฃ
g : Q โ P
g q = โฅโฅ-recursion i b a
where
a : โ A ๊ ๐ ๐แตค , (A โ ๐) ร (โแตค โ A)
a = lr-implication (ฯ โแตค) q
b : (ฮฃ A ๊ ๐ ๐แตค , (A โ ๐) ร (โแตค โ A)) โ P
b (A , m , _) = m
e : P โ Q
e = logically-equivalent-subsingletons-are-equivalent P Q i j (f , g)
PR-gives-existence-of-unions : propositional-resizing (๐ค โบ) ๐ค
โ existence-of-unions ๐ค
PR-gives-existence-of-unions {๐ค} ฯ X ๐ = B , (ฮป x โ lr x , rl x)
where
ฮฒ : X โ ๐ค โบ ฬ
ฮฒ x = โ A ๊ ๐ X , (A โ ๐) ร (x โ A)
i : (x : X) โ is-subsingleton (ฮฒ x)
i x = โ-is-subsingleton
B : ๐ X
B x = (resize ฯ (ฮฒ x) (i x) , resize-is-subsingleton ฯ (ฮฒ x) (i x))
lr : (x : X) โ x โ B โ โ A ๊ ๐ X , (A โ ๐) ร (x โ A)
lr x = from-resize ฯ (ฮฒ x) (i x)
rl : (x : X) โ (โ A ๊ ๐ X , (A โ ๐) ร (x โ A)) โ x โ B
rl x = to-resize ฯ (ฮฒ x) (i x)
module basic-powerset-development
(hfe : global-hfunext)
(ฯ : Propositional-resizing)
where
pt : subsingleton-truncations-exist
pt = PR-gives-existence-of-truncations (hfunext-gives-dfunext hfe) ฯ
open basic-truncation-development pt hfe
open powerset-union-existence pt hfe
โ : {X : ๐ค ฬ } โ ๐๐ X โ ๐ X
โ ๐ = prโ (PR-gives-existence-of-unions ฯ _ ๐)
โ-property : {X : ๐ค ฬ } (๐ : ๐๐ X)
โ (x : X) โ (x โ โ ๐) โ (โ A ๊ ๐ X , (A โ ๐) ร (x โ A))
โ-property ๐ = prโ (PR-gives-existence-of-unions ฯ _ ๐)
intersections-exist :
(X : ๐ค ฬ )
(๐ : ๐๐ X)
โ ฮฃ B ๊ ๐ X , ((x : X) โ (x โ B) โ ((A : ๐ X) โ A โ ๐ โ x โ A))
intersections-exist {๐ค} X ๐ = B , (ฮป x โ lr x , rl x)
where
ฮฒ : X โ ๐ค โบ ฬ
ฮฒ x = (A : ๐ X) โ A โ ๐ โ x โ A
i : (x : X) โ is-subsingleton (ฮฒ x)
i x = ฮ -is-subsingleton hunapply
(ฮป A โ ฮ -is-subsingleton hunapply
(ฮป _ โ โ-is-subsingleton A x))
B : ๐ X
B x = (resize ฯ (ฮฒ x) (i x) , resize-is-subsingleton ฯ (ฮฒ x) (i x))
lr : (x : X) โ x โ B โ (A : ๐ X) โ A โ ๐ โ x โ A
lr x = from-resize ฯ (ฮฒ x) (i x)
rl : (x : X) โ ((A : ๐ X) โ A โ ๐ โ x โ A) โ x โ B
rl x = to-resize ฯ (ฮฒ x) (i x)
โ : {X : ๐ค ฬ } โ ๐๐ X โ ๐ X
โ {๐ค} {X} ๐ = prโ (intersections-exist X ๐)
โ-property : {X : ๐ค ฬ } (๐ : ๐๐ X)
โ (x : X) โ (x โ โ ๐) โ ((A : ๐ X) โ A โ ๐ โ x โ A)
โ-property {๐ค} {X} ๐ = prโ (intersections-exist X ๐)
โ
full : {X : ๐ค ฬ } โ ๐ X
โ
= ฮป x โ (Lift _ ๐ , equiv-to-subsingleton (Lift-โ ๐) ๐-is-subsingleton)
full = ฮป x โ (Lift _ ๐ , equiv-to-subsingleton (Lift-โ ๐) ๐-is-subsingleton)
โ
-property : (X : ๐ค ฬ ) โ (x : X) โ ยฌ(x โ โ
)
โ
-property X x = lower
full-property : (X : ๐ค ฬ ) โ (x : X) โ x โ full
full-property X x = lift โ
_โฉ_ _โช_ : {X : ๐ค ฬ } โ ๐ X โ ๐ X โ ๐ X
(A โช B) = ฮป x โ ((x โ A) โจ (x โ B)) , โจ-is-subsingleton
(A โฉ B) = ฮป x โ ((x โ A) ร (x โ B)) ,
ร-is-subsingleton
(โ-is-subsingleton A x)
(โ-is-subsingleton B x)
โช-property : {X : ๐ค ฬ } (A B : ๐ X)
โ (x : X) โ x โ (A โช B) โ (x โ A) โจ (x โ B)
โช-property {๐ค} {X} A B x = id , id
โฉ-property : {X : ๐ค ฬ } (A B : ๐ X)
โ (x : X) โ x โ (A โฉ B) โ (x โ A) ร (x โ B)
โฉ-property {๐ค} {X} A B x = id , id
infix 20 _โฉ_
infix 20 _โช_
Top : (๐ค : Universe) โ ๐ค โบโบ ฬ
Top ๐ค = ฮฃ X ๊ ๐ค ฬ , is-set X
ร (ฮฃ ๐ ๊ ๐๐ X , full โ ๐
ร ((U V : ๐ X) โ U โ ๐ โ V โ ๐ โ (U โฉ V) โ ๐)
ร ((๐ : ๐๐ X) โ ๐ โ ๐ โ โ ๐ โ ๐))
is-subsingleton-valued
reflexive
symmetric
transitive
is-equivalence-relation :
{X : ๐ค ฬ } โ (X โ X โ ๐ฅ ฬ ) โ ๐ค โ ๐ฅ ฬ
is-subsingleton-valued _โ_ = โ x y โ is-subsingleton (x โ y)
reflexive _โ_ = โ x โ x โ x
symmetric _โ_ = โ x y โ x โ y โ y โ x
transitive _โ_ = โ x y z โ x โ y โ y โ z โ x โ z
is-equivalence-relation _โ_ = is-subsingleton-valued _โ_
ร reflexive _โ_
ร symmetric _โ_
ร transitive _โ_
module quotient
{๐ค ๐ฅ : Universe}
(pt : subsingleton-truncations-exist)
(hfe : global-hfunext)
(pe : propext ๐ฅ)
(X : ๐ค ฬ )
(_โ_ : X โ X โ ๐ฅ ฬ )
(โp : is-subsingleton-valued _โ_)
(โr : reflexive _โ_)
(โs : symmetric _โ_)
(โt : transitive _โ_)
where
open basic-truncation-development pt hfe
equiv-rel : X โ (X โ ฮฉ ๐ฅ)
equiv-rel x y = (x โ y) , โp x y
X/โ : ๐ฅ โบ โ ๐ค ฬ
X/โ = image equiv-rel
X/โ-is-set : is-set X/โ
X/โ-is-set = subsets-of-sets-are-sets (X โ ฮฉ ๐ฅ) _
(powersets-are-sets (dfunext-gives-hfunext hunapply) hunapply pe)
(ฮป _ โ โ-is-subsingleton)
ฮท : X โ X/โ
ฮท = corestriction equiv-rel
ฮท-surjection : is-surjection ฮท
ฮท-surjection = corestriction-surjection equiv-rel
ฮท-induction : (P : X/โ โ ๐ฆ ฬ )
โ ((x' : X/โ) โ is-subsingleton (P x'))
โ ((x : X) โ P (ฮท x))
โ (x' : X/โ) โ P x'
ฮท-induction = surjection-induction ฮท ฮท-surjection
ฮท-equiv-equal : {x y : X} โ x โ y โ ฮท x โก ฮท y
ฮท-equiv-equal {x} {y} e =
to-subtype-โก
(ฮป _ โ โ-is-subsingleton)
(hunapply (ฮป z โ to-subtype-โก
(ฮป _ โ being-subsingleton-is-subsingleton hunapply)
(pe (โp x z) (โp y z) (โt y x z (โs x y e)) (โt x y z e))))
ฮท-equal-equiv : {x y : X} โ ฮท x โก ฮท y โ x โ y
ฮท-equal-equiv {x} {y} p = equiv-rel-reflect (ap prโ p)
where
equiv-rel-reflect : equiv-rel x โก equiv-rel y โ x โ y
equiv-rel-reflect q = b (โr y)
where
a : (y โ y) โก (x โ y)
a = ap (ฮป - โ prโ(- y)) (q โปยน)
b : y โ y โ x โ y
b = Idโfun a
universal-property : (A : ๐ฆ ฬ )
โ is-set A
โ (f : X โ A)
โ ({x x' : X} โ x โ x' โ f x โก f x')
โ โ! f' ๊ (X/โ โ A), f' โ ฮท โก f
universal-property {๐ฆ} A i f ฯ = e
where
G : X/โ โ ๐ฅ โบ โ ๐ค โ ๐ฆ ฬ
G x' = ฮฃ a ๊ A , โ x ๊ X , (ฮท x โก x') ร (f x โก a)
ฯ : (x' : X/โ) โ is-subsingleton (G x')
ฯ = ฮท-induction _ ฮณ induction-step
where
induction-step : (y : X) โ is-subsingleton (G (ฮท y))
induction-step x (a , d) (b , e) = to-subtype-โก (ฮป _ โ โ-is-subsingleton) p
where
h : (ฮฃ x' ๊ X , (ฮท x' โก ฮท x) ร (f x' โก a))
โ (ฮฃ y' ๊ X , (ฮท y' โก ฮท x) ร (f y' โก b))
โ a โก b
h (x' , r , s) (y' , t , u) = a โกโจ s โปยน โฉ
f x' โกโจ ฯ (ฮท-equal-equiv (r โ t โปยน)) โฉ
f y' โกโจ u โฉ
b โ
p : a โก b
p = โฅโฅ-recursion (i a b) (ฮป ฯ โ โฅโฅ-recursion (i a b) (h ฯ) e) d
ฮณ : (x' : X/โ) โ is-subsingleton (is-subsingleton (G x'))
ฮณ x' = being-subsingleton-is-subsingleton hunapply
k : (x' : X/โ) โ G x'
k = ฮท-induction _ ฯ induction-step
where
induction-step : (y : X) โ G (ฮท y)
induction-step x = f x , โฃ x , refl (ฮท x) , refl (f x) โฃ
f' : X/โ โ A
f' x' = prโ (k x')
r : f' โ ฮท โก f
r = hunapply h
where
g : (y : X) โ โ x ๊ X , (ฮท x โก ฮท y) ร (f x โก f' (ฮท y))
g y = prโ (k (ฮท y))
j : (y : X) โ (ฮฃ x ๊ X , (ฮท x โก ฮท y) ร (f x โก f' (ฮท y))) โ f'(ฮท y) โก f y
j y (x , p , q) = f' (ฮท y) โกโจ q โปยน โฉ
f x โกโจ ฯ (ฮท-equal-equiv p) โฉ
f y โ
h : (y : X) โ f'(ฮท y) โก f y
h y = โฅโฅ-recursion (i (f' (ฮท y)) (f y)) (j y) (g y)
c : (ฯ : ฮฃ f'' ๊ (X/โ โ A), f'' โ ฮท โก f) โ (f' , r) โก ฯ
c (f'' , s) = to-subtype-โก (ฮป g โ ฮ -is-set hfe (ฮป _ โ i) (g โ ฮท) f) t
where
w : โ x โ f'(ฮท x) โก f''(ฮท x)
w = happly (f' โ ฮท) (f'' โ ฮท) (r โ s โปยน)
t : f' โก f''
t = hunapply (ฮท-induction _ (ฮป x' โ i (f' x') (f'' x')) w)
e : โ! f' ๊ (X/โ โ A), f' โ ฮท โก f
e = (f' , r) , c
module โ-order-exercise-solution where
_โค'_ : โ โ โ โ ๐คโ ฬ
_โค'_ = โ-iteration (โ โ ๐คโ ฬ ) (ฮป y โ ๐)
(ฮป f โ โ-recursion (๐คโ ฬ ) ๐ (ฮป y P โ f y))
open โ-order
โค-and-โค'-coincide : (x y : โ) โ (x โค y) โก (x โค' y)
โค-and-โค'-coincide 0 y = refl _
โค-and-โค'-coincide (succ x) 0 = refl _
โค-and-โค'-coincide (succ x) (succ y) = โค-and-โค'-coincide x y
module โ-more where
open Arithmetic renaming (_+_ to _โ_)
open basic-arithmetic-and-order
โค-prop-valued : (x y : โ) โ is-subsingleton (x โค y)
โค-prop-valued 0 y = ๐-is-subsingleton
โค-prop-valued (succ x) zero = ๐-is-subsingleton
โค-prop-valued (succ x) (succ y) = โค-prop-valued x y
โผ-prop-valued : (x y : โ) โ is-subsingleton (x โผ y)
โผ-prop-valued x y (z , p) (z' , p') = ฮณ
where
q : z โก z'
q = +-lc x z z' (x โ z โกโจ p โฉ
y โกโจ p' โปยน โฉ
x โ z' โ)
ฮณ : z , p โก z' , p'
ฮณ = to-subtype-โก (ฮป z โ โ-is-set (x โ z) y) q
โค-charac : propext ๐คโ โ (x y : โ) โ (x โค y) โก (x โผ y)
โค-charac pe x y = pe (โค-prop-valued x y) (โผ-prop-valued x y)
(โค-gives-โผ x y) (โผ-gives-โค x y)
the-subsingletons-are-the-subtypes-of-a-singleton : (X : ๐ค ฬ )
โ is-subsingleton X โ (X โช ๐)
the-subsingletons-are-the-subtypes-of-a-singleton X = ฯ , ฯ
where
i : is-subsingleton X โ is-embedding (!๐' X)
i s โ (x , refl โ) (y , refl โ) = ap (ฮป - โ - , refl โ) (s x y)
ฯ : is-subsingleton X โ X โช ๐
ฯ s = !๐ , i s
ฯ : X โช ๐ โ is-subsingleton X
ฯ (f , e) x y = d
where
a : x โก y โ f x โก f y
a = ap f {x} {y}
b : is-equiv a
b = embedding-gives-ap-is-equiv f e x y
c : f x โก f y
c = ๐-is-subsingleton (f x) (f y)
d : x โก y
d = inverse a b c
the-subsingletons-are-the-subtypes-of-a-singleton' : propext ๐ค โ global-dfunext
โ (X : ๐ค ฬ )
โ is-subsingleton X โก (X โช ๐)
the-subsingletons-are-the-subtypes-of-a-singleton' pe fe X = ฮณ
where
a : is-subsingleton X โ (X โช ๐)
a = the-subsingletons-are-the-subtypes-of-a-singleton X
b : is-subsingleton (X โช ๐)
b (f , e) (f' , e') = to-subtype-โก
(being-embedding-is-subsingleton fe)
(fe (ฮป x โ ๐-is-subsingleton (f x) (f' x)))
ฮณ : is-subsingleton X โก (X โช ๐)
ฮณ = pe (being-subsingleton-is-subsingleton fe) b (prโ a) (prโ a)
Gโ-โ-equation : (ua : is-univalent (๐ค โ ๐ฅ))
โ (X : ๐ค ฬ )
โ (A : (ฮฃ Y ๊ ๐ค โ ๐ฅ ฬ , X โ Y) โ ๐ฆ ฬ )
โ (a : A (Lift ๐ฅ X , โ-Lift X))
โ Gโ-โ ua X A a (Lift ๐ฅ X) (โ-Lift X) โก a
Gโ-โ-equation {๐ค} {๐ฅ} {๐ฆ} ua X A a =
Gโ-โ ua X A a (Lift ๐ฅ X) (โ-Lift X) โกโจ refl (transport A p a) โฉ
transport A p a โกโจ ap (ฮป - โ transport A - a) q โฉ
transport A (refl t) a โกโจ refl a โฉ
a โ
where
t : (ฮฃ Y ๊ ๐ค โ ๐ฅ ฬ , X โ Y)
t = (Lift ๐ฅ X , โ-Lift X)
p : t โก t
p = univalenceโ'' {๐ค} {๐ค โ ๐ฅ} ua X t t
q : p โก refl t
q = subsingletons-are-sets (ฮฃ Y ๊ ๐ค โ ๐ฅ ฬ , X โ Y)
(univalenceโ'' {๐ค} {๐ค โ ๐ฅ} ua X) t t p (refl t)
Hโ-โ-equation : (ua : is-univalent (๐ค โ ๐ฅ))
โ (X : ๐ค ฬ )
โ (A : (Y : ๐ค โ ๐ฅ ฬ ) โ X โ Y โ ๐ฆ ฬ )
โ (a : A (Lift ๐ฅ X) (โ-Lift X))
โ Hโ-โ ua X A a (Lift ๐ฅ X) (โ-Lift X) โก a
Hโ-โ-equation ua X A = Gโ-โ-equation ua X (ฮฃ-induction A)
has-section-charac : {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (f : X โ Y)
โ ((y : Y) โ ฮฃ x ๊ X , f x โก y) โ has-section f
has-section-charac f = ฮ ฮฃ-distr-โ
retractions-into : ๐ค ฬ โ ๐ค โบ ฬ
retractions-into {๐ค} Y = ฮฃ X ๊ ๐ค ฬ , Y โ X
pointed-types : (๐ค : Universe) โ ๐ค โบ ฬ
pointed-types ๐ค = ฮฃ X ๊ ๐ค ฬ , X
retraction-classifier : Univalence
โ (Y : ๐ค ฬ ) โ retractions-into Y โ (Y โ pointed-types ๐ค)
retraction-classifier {๐ค} ua Y =
retractions-into Y โโจ i โฉ
(ฮฃ X ๊ ๐ค ฬ , ฮฃ f ๊ (X โ Y) , ((y : Y) โ ฮฃ x ๊ X , f x โก y)) โโจ ii โฉ
((๐ค /[ id ] Y)) โโจ iii โฉ
(Y โ pointed-types ๐ค) โ
where
i = โ-sym (ฮฃ-cong (ฮป X โ ฮฃ-cong (ฮป f โ ฮ ฮฃ-distr-โ)))
ii = IdโEq _ _ (refl _)
iii = special-map-classifier (ua ๐ค)
(univalence-gives-dfunext' (ua ๐ค) (ua (๐ค โบ)))
id Y
module surjection-classifier
(pt : subsingleton-truncations-exist)
(ua : Univalence)
where
hfe : global-hfunext
hfe = univalence-gives-global-hfunext ua
open basic-truncation-development pt hfe public
_โ _ : ๐ค ฬ โ ๐ฅ ฬ โ ๐ค โ ๐ฅ ฬ
X โ Y = ฮฃ f ๊ (X โ Y), is-surjection f
surjections-into : ๐ค ฬ โ ๐ค โบ ฬ
surjections-into {๐ค} Y = ฮฃ X ๊ ๐ค ฬ , X โ Y
inhabited-types : (๐ค : Universe) โ ๐ค โบ ฬ
inhabited-types ๐ค = ฮฃ X ๊ ๐ค ฬ , โฅ X โฅ
surjection-classifier : Univalence
โ (Y : ๐ค ฬ )
โ surjections-into Y โ (Y โ inhabited-types ๐ค)
surjection-classifier {๐ค} ua = special-map-classifier (ua ๐ค)
(univalence-gives-dfunext' (ua ๐ค) (ua (๐ค โบ)))
โฅ_โฅ
positive-cantors-diagonal : (e : โ โ (โ โ โ)) โ ฮฃ ฮฑ ๊ (โ โ โ), ((n : โ) โ ฮฑ โข e n)
cantors-diagonal : ยฌ(ฮฃ e ๊ (โ โ (โ โ โ)) , ((ฮฑ : โ โ โ) โ ฮฃ n ๊ โ , ฮฑ โก e n))
๐-has-๐-automorphisms : dfunext ๐คโ ๐คโ โ (๐ โ ๐) โ ๐
lifttwo : is-univalent ๐คโ โ is-univalent ๐คโ โ (๐ โก ๐) โก Lift ๐คโ ๐
DNE : โ ๐ค โ ๐ค โบ ฬ
DNE ๐ค = (P : ๐ค ฬ ) โ is-subsingleton P โ ยฌยฌ P โ P
ne : (X : ๐ค ฬ ) โ ยฌยฌ(X + ยฌ X)
DNE-gives-EM : dfunext ๐ค ๐คโ โ DNE ๐ค โ EM ๐ค
EM-gives-DNE : EM ๐ค โ DNE ๐ค
SN : โ ๐ค โ ๐ค โบ ฬ
SN ๐ค = (P : ๐ค ฬ ) โ is-subsingleton P โ ฮฃ X ๊ ๐ค ฬ , P โ ยฌ X
SN-gives-DNE : SN ๐ค โ DNE ๐ค
DNE-gives-SN : DNE ๐ค โ SN ๐ค
succ-no-fixed-point : (n : โ) โ succ n โข n
succ-no-fixed-point 0 = positive-not-zero 0
succ-no-fixed-point (succ n) = ฮณ
where
IH : succ n โข n
IH = succ-no-fixed-point n
ฮณ : succ (succ n) โข succ n
ฮณ p = IH (succ-lc p)
positive-cantors-diagonal = sol
where
sol : (e : โ โ (โ โ โ)) โ ฮฃ ฮฑ ๊ (โ โ โ), ((n : โ) โ ฮฑ โข e n)
sol e = (ฮฑ , ฯ)
where
ฮฑ : โ โ โ
ฮฑ n = succ(e n n)
ฯ : (n : โ) โ ฮฑ โข e n
ฯ n p = succ-no-fixed-point (e n n) q
where
q = succ (e n n) โกโจ refl (ฮฑ n) โฉ
ฮฑ n โกโจ ap (ฮป - โ - n) p โฉ
e n n โ
cantors-diagonal = sol
where
sol : ยฌ(ฮฃ e ๊ (โ โ (โ โ โ)) , ((ฮฑ : โ โ โ) โ ฮฃ n ๊ โ , ฮฑ โก e n))
sol (e , ฮณ) = c
where
ฮฑ : โ โ โ
ฮฑ = prโ (positive-cantors-diagonal e)
ฯ : (n : โ) โ ฮฑ โข e n
ฯ = prโ (positive-cantors-diagonal e)
b : ฮฃ n ๊ โ , ฮฑ โก e n
b = ฮณ ฮฑ
c : ๐
c = ฯ (prโ b) (prโ b)
๐-has-๐-automorphisms = sol
where
sol : dfunext ๐คโ ๐คโ โ (๐ โ ๐) โ ๐
sol fe = invertibility-gives-โ f (g , ฮท , ฮต)
where
f : (๐ โ ๐) โ ๐
f (h , e) = h โ
g : ๐ โ (๐ โ ๐)
g โ = id , id-is-equiv ๐
g โ = swapโ , swapโ-is-equiv
ฮท : (e : ๐ โ ๐) โ g (f e) โก e
ฮท (h , e) = ฮณ (h โ) (h โ) (refl (h โ)) (refl (h โ))
where
ฮณ : (m n : ๐) โ h โ โก m โ h โ โก n โ g (h โ) โก (h , e)
ฮณ โ โ p q = !๐ (g (h โ) โก (h , e))
(โ-is-not-โ (equivs-are-lc h e (h โ โกโจ q โฉ
โ โกโจ p โปยน โฉ
h โ โ)))
ฮณ โ โ p q = to-subtype-โก
(being-equiv-is-subsingleton fe fe)
(fe (๐-induction (ฮป n โ prโ (g (h โ)) n โก h n)
(prโ (g (h โ)) โ โกโจ ap (ฮป - โ prโ (g -) โ) p โฉ
prโ (g โ) โ โกโจ refl โ โฉ
โ โกโจ p โปยน โฉ
h โ โ)
(prโ (g (h โ)) โ โกโจ ap (ฮป - โ prโ (g -) โ) p โฉ
prโ (g โ) โ โกโจ refl โ โฉ
โ โกโจ q โปยน โฉ
h โ โ)))
ฮณ โ โ p q = to-subtype-โก
(being-equiv-is-subsingleton fe fe)
(fe (๐-induction (ฮป n โ prโ (g (h โ)) n โก h n)
(prโ (g (h โ)) โ โกโจ ap (ฮป - โ prโ (g -) โ) p โฉ
prโ (g โ) โ โกโจ refl โ โฉ
โ โกโจ p โปยน โฉ
h โ โ)
(prโ (g (h โ)) โ โกโจ ap (ฮป - โ prโ (g -) โ) p โฉ
prโ (g โ) โ โกโจ refl โ โฉ
โ โกโจ q โปยน โฉ
h โ โ)))
ฮณ โ โ p q = !๐ (g (h โ) โก (h , e))
(โ-is-not-โ (equivs-are-lc h e (h โ โกโจ q โฉ
โ โกโจ p โปยน โฉ
h โ โ)))
ฮต : (n : ๐) โ f (g n) โก n
ฮต โ = refl โ
ฮต โ = refl โ
lifttwo = sol
where
sol : is-univalent ๐คโ โ is-univalent ๐คโ โ (๐ โก ๐) โก Lift ๐คโ ๐
sol uaโ uaโ = EqโId uaโ (๐ โก ๐) (Lift ๐คโ ๐) e
where
e = (๐ โก ๐) โโจ IdโEq ๐ ๐ , uaโ ๐ ๐ โฉ
(๐ โ ๐) โโจ ๐-has-๐-automorphisms (univalence-gives-dfunext uaโ) โฉ
๐ โโจ โ-sym (Lift-โ ๐) โฉ
Lift ๐คโ ๐ โ
hde-is-subsingleton : dfunext ๐ค ๐คโ
โ dfunext ๐ค ๐ค
โ (X : ๐ค ฬ )
โ is-subsingleton (has-decidable-equality X)
hde-is-subsingleton feโ fe X h h' = c h h'
where
a : (x y : X) โ is-subsingleton (decidable (x โก y))
a x y = +-is-subsingleton' feโ b
where
b : is-subsingleton (x โก y)
b = hedberg h x y
c : is-subsingleton (has-decidable-equality X)
c = ฮ -is-subsingleton fe (ฮป x โ ฮ -is-subsingleton fe (a x))
ne = sol
where
sol : (X : ๐ค ฬ ) โ ยฌยฌ(X + ยฌ X)
sol X = ฮป (f : ยฌ(X + ยฌ X)) โ f (inr (ฮป (x : X) โ f (inl x)))
DNE-gives-EM = sol
where
sol : dfunext ๐ค ๐คโ โ DNE ๐ค โ EM ๐ค
sol fe dne P i = dne (P + ยฌ P) (+-is-subsingleton' fe i) (ne P)
EM-gives-DNE = sol
where
sol : EM ๐ค โ DNE ๐ค
sol em P i = ฮณ (em P i)
where
ฮณ : P + ยฌ P โ ยฌยฌ P โ P
ฮณ (inl p) ฯ = p
ฮณ (inr n) ฯ = !๐ P (ฯ n)
SN-gives-DNE = sol
where
sol : SN ๐ค โ DNE ๐ค
sol {๐ค} sn P i = h
where
X : ๐ค ฬ
X = prโ (sn P i)
f : P โ ยฌ X
f = prโ (prโ (sn P i))
g : ยฌ X โ P
g = prโ (prโ (sn P i))
f' : ยฌยฌ P โ ยฌ(ยฌยฌ X)
f' = contrapositive (contrapositive f)
h : ยฌยฌ P โ P
h = g โ tno X โ f'
h' : ยฌยฌ P โ P
h' ฯ = g (ฮป (x : X) โ ฯ (ฮป (p : P) โ f p x))
DNE-gives-SN = sol
where
sol : DNE ๐ค โ SN ๐ค
sol dne P i = ยฌ P , dni P , dne P i
infix 0 _โผ_
infixr 50 _,_
infixr 30 _ร_
infixr 20 _+_
infixl 70 _โ_
infix 0 Id
infix 0 _โก_
infix 10 _โ_
infixl 30 _โ_
infixr 0 _โกโจ_โฉ_
infix 1 _โ
infix 40 _โปยน
infix 10 _โ_
infixr 0 _โโจ_โฉ_
infix 1 _โ
infix 10 _โ_
infixl 30 _โ_
infixr 0 _โโจ_โฉ_
infix 1 _โ
infix 40 _โ_
infix 30 _[_,_]
infixr -1 -ฮฃ
infixr -1 -ฮ
infixr -1 -โ!