diff --git a/src/finite-group-theory/cartier-delooping-sign-homomorphism.lagda.md b/src/finite-group-theory/cartier-delooping-sign-homomorphism.lagda.md
index 5c0505d499..7a1ba6b3a1 100644
--- a/src/finite-group-theory/cartier-delooping-sign-homomorphism.lagda.md
+++ b/src/finite-group-theory/cartier-delooping-sign-homomorphism.lagda.md
@@ -17,7 +17,7 @@ open import finite-group-theory.finite-type-groups
open import finite-group-theory.sign-homomorphism
open import finite-group-theory.transpositions
-open import foundation.action-on-equivalences-families-over-subuniverses
+open import foundation.action-on-equivalences-type-families-over-subuniverses
open import foundation.action-on-identifications-functions
open import foundation.contractible-types
open import foundation.dependent-pair-types
@@ -29,6 +29,7 @@ open import foundation.negation
open import foundation.propositional-truncations
open import foundation.raising-universe-levels
open import foundation.transport-along-identifications
+open import foundation.type-theoretic-principle-of-choice
open import foundation.unit-type
open import foundation.universe-levels
@@ -69,7 +70,7 @@ module _
( star)
( transposition Y))
( map-equiv
- ( action-equiv-family-on-subuniverse
+ ( action-equiv-family-over-subuniverse
( mere-equiv-Prop (Fin (n +ℕ 2)))
( orientation-Complete-Undirected-Graph (n +ℕ 2))
( raise l (Fin (n +ℕ 2)) ,
@@ -110,17 +111,19 @@ module _
preserves-id-equiv-orientation-complete-undirected-graph-equiv
( n +ℕ 2)}
{ y =
- ( action-equiv-family-on-subuniverse
+ ( action-equiv-family-over-subuniverse
( mere-equiv-Prop (Fin (n +ℕ 2)))
( orientation-Complete-Undirected-Graph (n +ℕ 2))) ,
- ( preserves-id-equiv-action-equiv-family-on-subuniverse
+ ( compute-id-equiv-action-equiv-family-over-subuniverse
( mere-equiv-Prop (Fin (n +ℕ 2)))
( orientation-Complete-Undirected-Graph (n +ℕ 2)))}
( eq-is-contr
- ( is-contr-preserves-id-action-equiv-family-on-subuniverse
- ( mere-equiv-Prop (Fin (n +ℕ 2)))
- ( orientation-Complete-Undirected-Graph (n +ℕ 2))
- ( is-set-orientation-Complete-Undirected-Graph (n +ℕ 2)))))
+ ( is-contr-equiv' _
+ ( distributive-Π-Σ)
+ ( is-contr-Π
+ ( unique-action-equiv-family-over-subuniverse
+ ( mere-equiv-Prop (Fin (n +ℕ 2)))
+ ( orientation-Complete-Undirected-Graph (n +ℕ 2)))))))
( not-even-difference-orientation-aut-transposition-count
(n +ℕ 2 , (compute-raise l (Fin (n +ℕ 2)))) (star))
diff --git a/src/finite-group-theory/delooping-sign-homomorphism.lagda.md b/src/finite-group-theory/delooping-sign-homomorphism.lagda.md
index 5e28858730..0df76282fe 100644
--- a/src/finite-group-theory/delooping-sign-homomorphism.lagda.md
+++ b/src/finite-group-theory/delooping-sign-homomorphism.lagda.md
@@ -18,8 +18,9 @@ open import finite-group-theory.permutations
open import finite-group-theory.sign-homomorphism
open import finite-group-theory.transpositions
-open import foundation.action-on-equivalences-families-over-subuniverses
+open import foundation.action-on-equivalences-type-families-over-subuniverses
open import foundation.action-on-identifications-functions
+open import foundation.binary-transport
open import foundation.commuting-squares-of-maps
open import foundation.contractible-types
open import foundation.coproduct-types
@@ -31,6 +32,7 @@ open import foundation.empty-types
open import foundation.equality-dependent-pair-types
open import foundation.equivalence-classes
open import foundation.equivalence-extensionality
+open import foundation.equivalence-induction
open import foundation.equivalence-relations
open import foundation.equivalences
open import foundation.function-extensionality
@@ -129,7 +131,7 @@ module _
unit-trunc-Prop (compute-raise-Fin l1 (n +ℕ 2))))
( quotient-aut-succ-succ-Fin n (transposition Y))
( map-equiv
- ( action-equiv-family-on-subuniverse
+ ( action-equiv-family-over-subuniverse
( mere-equiv-Prop (Fin (n +ℕ 2)))
( D (n +ℕ 2))
( raise l1 (Fin (n +ℕ 2)) ,
@@ -146,9 +148,8 @@ module _
eq-counting-equivalence-class-R :
(n : ℕ) →
- Id
- ( equivalence-class (R (n +ℕ 2) (Fin-UU-Fin l1 (n +ℕ 2))))
- ( raise (l2 ⊔ lsuc l3) (Fin 2))
+ equivalence-class (R (n +ℕ 2) (Fin-UU-Fin l1 (n +ℕ 2))) =
+ raise (l2 ⊔ lsuc l3) (Fin 2)
eq-counting-equivalence-class-R n =
eq-equiv
( equivalence-class (R (n +ℕ 2) (Fin-UU-Fin l1 (n +ℕ 2))))
@@ -165,34 +166,57 @@ module _
(n : ℕ) (X X' : UU-Fin l1 n) →
type-UU-Fin n X ≃ type-UU-Fin n X' → D n X ≃ D n X'
invertible-action-D-equiv n =
- action-equiv-family-on-subuniverse (mere-equiv-Prop (Fin n)) (D n)
+ action-equiv-family-over-subuniverse (mere-equiv-Prop (Fin n)) (D n)
preserves-id-equiv-invertible-action-D-equiv :
(n : ℕ) (X : UU-Fin l1 n) →
Id (invertible-action-D-equiv n X X id-equiv) id-equiv
preserves-id-equiv-invertible-action-D-equiv n =
- preserves-id-equiv-action-equiv-family-on-subuniverse
+ compute-id-equiv-action-equiv-family-over-subuniverse
( mere-equiv-Prop (Fin n))
( D n)
- preserves-R-invertible-action-D-equiv :
- ( n : ℕ) →
- ( X X' : UU-Fin l1 n)
- ( e : type-UU-Fin n X ≃ type-UU-Fin n X') →
- ( a a' : D n X) →
- ( sim-Equivalence-Relation (R n X) a a' ↔
- sim-Equivalence-Relation
- ( R n X')
- ( map-equiv (invertible-action-D-equiv n X X' e) a)
- ( map-equiv (invertible-action-D-equiv n X X' e) a'))
- preserves-R-invertible-action-D-equiv n X X' =
- Ind-action-equiv-family-on-subuniverse (mere-equiv-Prop (Fin n)) (D n) X
- ( λ Y f →
- ( a a' : D n X) →
- ( sim-Equivalence-Relation (R n X) a a' ↔
- sim-Equivalence-Relation (R n Y) (map-equiv f a) (map-equiv f a')))
- ( λ a a' → id , id)
- ( X')
+ abstract
+ preserves-R-invertible-action-D-equiv :
+ ( n : ℕ) →
+ ( X X' : UU-Fin l1 n)
+ ( e : type-UU-Fin n X ≃ type-UU-Fin n X') →
+ ( a a' : D n X) →
+ ( sim-Equivalence-Relation (R n X) a a' ↔
+ sim-Equivalence-Relation
+ ( R n X')
+ ( map-equiv (invertible-action-D-equiv n X X' e) a)
+ ( map-equiv (invertible-action-D-equiv n X X' e) a'))
+ preserves-R-invertible-action-D-equiv n X =
+ ind-equiv-subuniverse
+ ( mere-equiv-Prop (Fin n))
+ ( X)
+ ( λ Y f →
+ ( a a' : D n X) →
+ ( sim-Equivalence-Relation (R n X) a a' ↔
+ sim-Equivalence-Relation
+ ( R n Y)
+ ( map-equiv (invertible-action-D-equiv n X Y f) a)
+ ( map-equiv (invertible-action-D-equiv n X Y f) a')))
+ ( λ a a' →
+ ( binary-tr
+ ( sim-Equivalence-Relation (R n X))
+ ( inv
+ ( htpy-eq-equiv
+ ( preserves-id-equiv-invertible-action-D-equiv n X)
+ ( a)))
+ ( inv
+ ( htpy-eq-equiv
+ ( preserves-id-equiv-invertible-action-D-equiv n X)
+ ( a')))) ,
+ ( binary-tr
+ ( sim-Equivalence-Relation (R n X))
+ ( htpy-eq-equiv
+ ( preserves-id-equiv-invertible-action-D-equiv n X)
+ ( a))
+ ( htpy-eq-equiv
+ ( preserves-id-equiv-invertible-action-D-equiv n X)
+ ( a'))))
raise-UU-Fin-Fin : (n : ℕ) → UU-Fin l1 n
pr1 (raise-UU-Fin-Fin n) = raise l1 (Fin n)
@@ -1490,7 +1514,7 @@ module _
unit-trunc-Prop (compute-raise-Fin l1 (n +ℕ 2))))) →
¬ ( x =
( map-equiv
- ( action-equiv-family-on-subuniverse
+ ( action-equiv-family-over-subuniverse
( mere-equiv-Prop (Fin (n +ℕ 2)))
( type-UU-Fin 2 ∘ Q (n +ℕ 2))
( raise l1 (Fin (n +ℕ 2)) ,
diff --git a/src/finite-group-theory/simpson-delooping-sign-homomorphism.lagda.md b/src/finite-group-theory/simpson-delooping-sign-homomorphism.lagda.md
index f85e3e3227..7a90598c0b 100644
--- a/src/finite-group-theory/simpson-delooping-sign-homomorphism.lagda.md
+++ b/src/finite-group-theory/simpson-delooping-sign-homomorphism.lagda.md
@@ -21,7 +21,7 @@ open import finite-group-theory.permutations
open import finite-group-theory.sign-homomorphism
open import finite-group-theory.transpositions
-open import foundation.action-on-equivalences-families-over-subuniverses
+open import foundation.action-on-equivalences-type-families-over-subuniverses
open import foundation.action-on-identifications-functions
open import foundation.contractible-types
open import foundation.coproduct-types
@@ -43,6 +43,7 @@ open import foundation.propositional-truncations
open import foundation.raising-universe-levels
open import foundation.sets
open import foundation.transport-along-identifications
+open import foundation.type-theoretic-principle-of-choice
open import foundation.unit-type
open import foundation.universe-levels
@@ -683,7 +684,7 @@ module _
unit-trunc-Prop (compute-raise-Fin l (n +ℕ 2))))
( sign-comp-aut-succ-succ-Fin n (transposition Y))
( map-equiv
- ( action-equiv-family-on-subuniverse
+ ( action-equiv-family-over-subuniverse
( mere-equiv-Prop (Fin (n +ℕ 2)))
( λ X → Fin (n +ℕ 2) ≃ pr1 X)
( raise l (Fin (n +ℕ 2)) ,
@@ -716,20 +717,19 @@ module _
simpson-comp-equiv (n +ℕ 2) ,
preserves-id-equiv-simpson-comp-equiv (n +ℕ 2)}
{ y =
- ( action-equiv-family-on-subuniverse
+ ( action-equiv-family-over-subuniverse
( mere-equiv-Prop (Fin (n +ℕ 2)))
( λ X → Fin (n +ℕ 2) ≃ type-UU-Fin (n +ℕ 2) X) ,
- ( preserves-id-equiv-action-equiv-family-on-subuniverse
+ ( compute-id-equiv-action-equiv-family-over-subuniverse
( mere-equiv-Prop (Fin (n +ℕ 2)))
( λ X → Fin (n +ℕ 2) ≃ type-UU-Fin (n +ℕ 2) X)))}
( eq-is-contr
- ( is-contr-preserves-id-action-equiv-family-on-subuniverse
- ( mere-equiv-Prop (Fin (n +ℕ 2)))
- ( λ X → Fin (n +ℕ 2) ≃ type-UU-Fin (n +ℕ 2) X)
- ( λ X →
- is-set-equiv-is-set
- ( is-set-Fin (n +ℕ 2))
- ( is-set-type-UU-Fin (n +ℕ 2) X)))))
+ ( is-contr-equiv' _
+ ( distributive-Π-Σ)
+ ( is-contr-Π
+ ( unique-action-equiv-family-over-subuniverse
+ ( mere-equiv-Prop (Fin (n +ℕ 2)))
+ ( λ Y → Fin (n +ℕ 2) ≃ type-UU-Fin (n +ℕ 2) Y))))))
( not-sign-comp-transposition-count
(n +ℕ 2 , (compute-raise l (Fin (n +ℕ 2)))) (star))
diff --git a/src/foundation.lagda.md b/src/foundation.lagda.md
index 8096470e1a..606923be30 100644
--- a/src/foundation.lagda.md
+++ b/src/foundation.lagda.md
@@ -10,8 +10,10 @@ open import foundation.0-images-of-maps public
open import foundation.0-maps public
open import foundation.1-types public
open import foundation.2-types public
-open import foundation.action-on-equivalences-families-over-subuniverses public
open import foundation.action-on-equivalences-functions public
+open import foundation.action-on-equivalences-functions-out-of-subuniverses public
+open import foundation.action-on-equivalences-type-families public
+open import foundation.action-on-equivalences-type-families-over-subuniverses public
open import foundation.action-on-identifications-binary-functions public
open import foundation.action-on-identifications-dependent-functions public
open import foundation.action-on-identifications-functions public
@@ -251,6 +253,7 @@ open import foundation.subtype-identity-principle public
open import foundation.subtypes public
open import foundation.subuniverses public
open import foundation.surjective-maps public
+open import foundation.symmetric-binary-relations public
open import foundation.symmetric-difference public
open import foundation.symmetric-identity-types public
open import foundation.symmetric-operations public
@@ -295,6 +298,7 @@ open import foundation.universal-property-coproduct-types public
open import foundation.universal-property-dependent-pair-types public
open import foundation.universal-property-empty-type public
open import foundation.universal-property-fiber-products public
+open import foundation.universal-property-identity-systems public
open import foundation.universal-property-identity-types public
open import foundation.universal-property-image public
open import foundation.universal-property-maybe public
diff --git a/src/foundation/action-on-equivalences-families-over-subuniverses.lagda.md b/src/foundation/action-on-equivalences-families-over-subuniverses.lagda.md
deleted file mode 100644
index fc3b20eb18..0000000000
--- a/src/foundation/action-on-equivalences-families-over-subuniverses.lagda.md
+++ /dev/null
@@ -1,144 +0,0 @@
-# Action on equivalences in type families over subuniverses
-
-```agda
-module foundation.action-on-equivalences-families-over-subuniverses where
-```
-
-Imports
-
-```agda
-open import foundation.action-on-identifications-functions
-open import foundation.dependent-pair-types
-open import foundation.function-extensionality
-open import foundation.sets
-open import foundation.subuniverses
-open import foundation.transport-along-identifications
-open import foundation.univalence
-open import foundation.universe-levels
-
-open import foundation-core.contractible-types
-open import foundation-core.equality-dependent-pair-types
-open import foundation-core.equivalences
-open import foundation-core.identity-types
-open import foundation-core.injective-maps
-open import foundation-core.propositions
-open import foundation-core.subtypes
-```
-
-
-
-## Ideas
-
-Given a [subuniverse](foundation.subuniverses.md) `P`, any family of types `B`
-indexed by types of `P` has an
-[action on equivalences](foundation.action-on-equivalences-functions.md)
-obtained by using the [univalence axiom](foundation.univalence.md).
-
-## Definition
-
-```agda
-module _
- { l1 l2 l3 : Level}
- ( P : subuniverse l1 l2) (B : type-subuniverse P → UU l3)
- where
-
- action-equiv-family-on-subuniverse :
- (X Y : type-subuniverse P) → pr1 X ≃ pr1 Y → B X ≃ B Y
- action-equiv-family-on-subuniverse X Y e =
- equiv-tr B (eq-equiv-subuniverse P e)
-```
-
-## Properties
-
-```agda
- preserves-id-equiv-action-equiv-family-on-subuniverse :
- (X : type-subuniverse P) →
- action-equiv-family-on-subuniverse X X id-equiv = id-equiv
- preserves-id-equiv-action-equiv-family-on-subuniverse X =
- ( ap (equiv-tr B)
- ( is-injective-map-equiv
- ( extensionality-subuniverse P X X)
- ( is-section-map-inv-is-equiv
- ( is-equiv-equiv-eq-subuniverse P X X)
- ( id-equiv)))) ∙
- ( equiv-tr-refl B)
-
- Ind-path-action-equiv-family-on-subuniverse :
- { l4 : Level}
- ( X : type-subuniverse P)
- ( F : (Y : type-subuniverse P) → B X ≃ B Y → UU l4) →
- F X id-equiv → ( Y : type-subuniverse P) (p : X = Y) →
- F Y (equiv-tr B p)
- Ind-path-action-equiv-family-on-subuniverse X F p .X refl =
- tr (F X) (inv (equiv-tr-refl B)) p
-
- Ind-action-equiv-family-on-subuniverse :
- { l4 : Level}
- ( X : type-subuniverse P)
- ( F : (Y : type-subuniverse P) → B X ≃ B Y → UU l4) →
- F X id-equiv → (Y : type-subuniverse P) (e : pr1 X ≃ pr1 Y) →
- F Y (action-equiv-family-on-subuniverse X Y e)
- Ind-action-equiv-family-on-subuniverse X F p Y e =
- Ind-path-action-equiv-family-on-subuniverse X F p Y
- ( eq-equiv-subuniverse P e)
-
- is-contr-preserves-id-action-equiv-family-on-subuniverse :
- ( (X : type-subuniverse P) → is-set (B X)) →
- is-contr
- ( Σ
- ( (X Y : type-subuniverse P) → pr1 X ≃ pr1 Y → B X ≃ B Y)
- ( λ D → (X : type-subuniverse P) → D X X id-equiv = id-equiv))
- pr1 (pr1 (is-contr-preserves-id-action-equiv-family-on-subuniverse H)) =
- action-equiv-family-on-subuniverse
- pr2 (pr1 (is-contr-preserves-id-action-equiv-family-on-subuniverse H)) =
- preserves-id-equiv-action-equiv-family-on-subuniverse
- pr2 (is-contr-preserves-id-action-equiv-family-on-subuniverse H) (D , p) =
- eq-pair-Σ
- ( eq-htpy (λ X → eq-htpy (λ Y → eq-htpy (λ e →
- lemma2 action-equiv-family-on-subuniverse D
- ( λ X →
- preserves-id-equiv-action-equiv-family-on-subuniverse X ∙ inv (p X))
- X Y e))))
- ( eq-is-prop
- ( is-prop-Π
- ( λ X →
- is-set-type-Set
- ( B X ≃ B X , is-set-equiv-is-set (H X) (H X))
- ( D X X id-equiv)
- ( id-equiv))))
- where
- lemma1 :
- (f g : (X Y : UU l1) → (pX : is-in-subuniverse P X) →
- ( pY : is-in-subuniverse P Y) → X = Y →
- B (X , pX) ≃ B (Y , pY)) →
- ( (X : UU l1) (pX : is-in-subuniverse P X)
- (pX' : is-in-subuniverse P X) →
- f X X pX pX' refl = g X X pX pX' refl) →
- ( X Y : UU l1) (pX : is-in-subuniverse P X)
- ( pY : is-in-subuniverse P Y) (p : X = Y) →
- f X Y pX pY p = g X Y pX pY p
- lemma1 f g h X .X pX pX' refl = h X pX pX'
- lemma2 :
- ( f g : (X Y : type-subuniverse P) → pr1 X ≃ pr1 Y → B X ≃ B Y) →
- ( (X : type-subuniverse P) → f X X id-equiv = g X X id-equiv) →
- ( X Y : type-subuniverse P) (e : pr1 X ≃ pr1 Y) →
- f X Y e = g X Y e
- lemma2 f g h X Y e =
- tr
- ( λ e' → f X Y e' = g X Y e')
- ( is-section-map-inv-is-equiv (univalence (pr1 X) (pr1 Y)) e)
- ( lemma1
- ( λ X Y pX pY p → f (X , pX) (Y , pY) (equiv-eq p))
- ( λ X Y pX pY p → g (X , pX) (Y , pY) (equiv-eq p))
- ( λ X pX pX' →
- tr
- ( λ p → f (X , pX) (X , p) id-equiv =
- g (X , pX) (X , p) id-equiv)
- ( eq-is-prop (is-prop-is-in-subtype P X))
- ( h ( X , pX)))
- ( pr1 X)
- ( pr1 Y)
- ( pr2 X)
- ( pr2 Y)
- ( eq-equiv (pr1 X) (pr1 Y) e))
-```
diff --git a/src/foundation/action-on-equivalences-functions-out-of-subuniverses.lagda.md b/src/foundation/action-on-equivalences-functions-out-of-subuniverses.lagda.md
new file mode 100644
index 0000000000..e1ce00fc21
--- /dev/null
+++ b/src/foundation/action-on-equivalences-functions-out-of-subuniverses.lagda.md
@@ -0,0 +1,77 @@
+# The action on equivalences of functions out of subuniverses
+
+```agda
+module foundation.action-on-equivalences-functions-out-of-subuniverses where
+```
+
+Imports
+
+```agda
+open import foundation.action-on-identifications-functions
+open import foundation.contractible-types
+open import foundation.dependent-pair-types
+open import foundation.equivalence-induction
+open import foundation.equivalences
+open import foundation.function-types
+open import foundation.identity-types
+open import foundation.subuniverses
+open import foundation.universe-levels
+```
+
+
+
+## Idea
+
+Consider a [subuniverse](foundation.subuniverses.md) `P` of `𝒰` and a map
+`f : P → B` from the subuniverse `P` into some type `B`. Then `f` has an
+**action on equivalences**
+
+```text
+ (X ≃ Y) → (f X = f Y)
+```
+
+which is uniquely determined by the
+[identification](foundation-core.identity-types.md)
+`action-equiv f id-equiv = refl`. The action on equivalences fits in a
+[commuting square](foundation.commuting-squares-of-maps.md) of maps
+
+```text
+ ap f
+ (X = Y) ---------------> (f X = f Y)
+ | |
+ equiv-eq | | id
+ V V
+ (X ≃ Y) ---------------> (f X = f Y)
+ action-equiv f
+```
+
+## Definitions
+
+```agda
+module _
+ {l1 l2 l3 : Level} (P : subuniverse l1 l2)
+ {B : UU l3} (f : type-subuniverse P → B)
+ where
+
+ abstract
+ unique-action-equiv-function-subuniverse :
+ (X : type-subuniverse P) →
+ is-contr
+ ( Σ ( (Y : type-subuniverse P) → equiv-subuniverse P X Y → f X = f Y)
+ ( λ h → h X id-equiv = refl))
+ unique-action-equiv-function-subuniverse X =
+ is-contr-map-ev-id-equiv-subuniverse P X
+ ( λ Y e → f X = f Y)
+ ( refl)
+
+ action-equiv-function-subuniverse :
+ (X Y : type-subuniverse P) → equiv-subuniverse P X Y → f X = f Y
+ action-equiv-function-subuniverse X Y =
+ ap f ∘ eq-equiv-subuniverse P
+
+ compute-action-equiv-function-subuniverse-id-equiv :
+ (X : type-subuniverse P) →
+ action-equiv-function-subuniverse X X id-equiv = refl
+ compute-action-equiv-function-subuniverse-id-equiv X =
+ ap (ap f) (compute-eq-equiv-id-equiv-subuniverse P)
+```
diff --git a/src/foundation/action-on-equivalences-functions.lagda.md b/src/foundation/action-on-equivalences-functions.lagda.md
index 1fa32b1f30..704c34b224 100644
--- a/src/foundation/action-on-equivalences-functions.lagda.md
+++ b/src/foundation/action-on-equivalences-functions.lagda.md
@@ -8,13 +8,14 @@ module foundation.action-on-equivalences-functions where
```agda
open import foundation.action-on-identifications-functions
+open import foundation.contractible-types
+open import foundation.dependent-pair-types
+open import foundation.equivalence-induction
open import foundation.equivalences
open import foundation.univalence
open import foundation.universe-levels
open import foundation-core.constant-maps
-open import foundation-core.function-types
-open import foundation-core.homotopies
open import foundation-core.identity-types
```
@@ -37,70 +38,32 @@ luckily, these two notions coincide.
## Definition
```agda
-action-equiv-function :
- {l1 l2 : Level} {B : UU l2} (f : UU l1 → B) {X Y : UU l1} →
- X ≃ Y → f X = f Y
-action-equiv-function f {X} {Y} e = ap f (eq-equiv X Y e)
-
-action-equiv-family :
- {l1 l2 : Level} (f : UU l1 → UU l2) {X Y : UU l1} →
- X ≃ Y → f X ≃ f Y
-action-equiv-family f = equiv-eq ∘ action-equiv-function f
-
-map-action-equiv-family :
- {l1 l2 : Level} (f : UU l1 → UU l2) {X Y : UU l1} →
- X ≃ Y → f X → f Y
-map-action-equiv-family f = map-equiv ∘ action-equiv-family f
+module _
+ {l1 l2 : Level} {B : UU l2} (f : UU l1 → B)
+ where
+
+ abstract
+ unique-action-equiv-function :
+ (X : UU l1) →
+ is-contr
+ ( Σ ((Y : UU l1) → X ≃ Y → f X = f Y) (λ h → h X id-equiv = refl))
+ unique-action-equiv-function X =
+ is-contr-map-ev-id-equiv
+ ( λ Y e → f X = f Y)
+ ( refl)
+
+ action-equiv-function :
+ {X Y : UU l1} → X ≃ Y → f X = f Y
+ action-equiv-function {X} {Y} e = ap f (eq-equiv X Y e)
+
+ compute-action-equiv-function-id-equiv :
+ (X : UU l1) → action-equiv-function id-equiv = refl
+ compute-action-equiv-function-id-equiv X =
+ ap (ap f) (compute-eq-equiv-id-equiv X)
```
## Properties
-### The identity function acts trivially on equivalences
-
-```agda
-compute-action-equiv-family-id :
- {l : Level} {X Y : UU l} (e : X ≃ Y) → (action-equiv-family id e) = e
-compute-action-equiv-family-id {l} {X} {Y} e =
- (ap equiv-eq (ap-id (eq-equiv X Y e))) ∙ (is-section-eq-equiv e)
-```
-
-### The action on equivalences of a composite function is the composite of the actions
-
-```agda
-distributive-action-equiv-function-comp :
- {l1 l2 l3 : Level} {C : UU l3} (g : UU l2 → C) (f : UU l1 → UU l2)
- {X Y : UU l1} →
- action-equiv-function (g ∘ f) ~
- action-equiv-function g ∘ action-equiv-family f
-distributive-action-equiv-function-comp g f {X} {Y} e =
- ( ap-comp g f (eq-equiv X Y e)) ∙
- ( ap (ap g) (inv (is-retraction-eq-equiv (action-equiv-function f e))))
-
-distributive-action-equiv-family-comp :
- {l1 l2 l3 : Level} (g : UU l2 → UU l3) (f : UU l1 → UU l2)
- {X Y : UU l1} →
- action-equiv-family (g ∘ f) ~
- action-equiv-family g ∘ action-equiv-family f
-distributive-action-equiv-family-comp g f {X} {Y} e =
- ap equiv-eq (distributive-action-equiv-function-comp g f {X} {Y} e)
-```
-
-### The action on equivalences of any map preserves `id-equiv`
-
-```agda
-compute-action-equiv-function-id-equiv :
- {l1 l2 : Level} {B : UU l2} (f : UU l1 → B) (A : UU l1) →
- (action-equiv-function f id-equiv) = refl
-compute-action-equiv-function-id-equiv f A =
- ap (ap f) (compute-eq-equiv-id-equiv A)
-
-compute-action-equiv-family-id-equiv :
- {l1 l2 : Level} (f : UU l1 → UU l2) (A : UU l1) →
- (action-equiv-family f id-equiv) = id-equiv
-compute-action-equiv-family-id-equiv f A =
- ap equiv-eq (compute-action-equiv-function-id-equiv f A)
-```
-
### The action on equivalences of a constant map is constant
```agda
@@ -108,12 +71,6 @@ compute-action-equiv-function-const :
{l1 l2 : Level} {B : UU l2} (b : B) {X Y : UU l1}
(e : X ≃ Y) → (action-equiv-function (const (UU l1) B b) e) = refl
compute-action-equiv-function-const b {X} {Y} e = ap-const b (eq-equiv X Y e)
-
-compute-action-equiv-family-const :
- {l1 l2 : Level} (B : UU l2) {X Y : UU l1}
- (e : X ≃ Y) → (action-equiv-family (const (UU l1) (UU l2) B) e) = id-equiv
-compute-action-equiv-family-const B {X} {Y} e =
- ap equiv-eq (compute-action-equiv-function-const B e)
```
### The action on equivalences of any map preserves composition of equivalences
@@ -127,18 +84,6 @@ distributive-action-equiv-function-comp-equiv :
distributive-action-equiv-function-comp-equiv f {X} {Y} {Z} e e' =
( ap (ap f) (inv (compute-eq-equiv-comp-equiv X Y Z e e'))) ∙
( ap-concat f (eq-equiv X Y e) (eq-equiv Y Z e'))
-
-distributive-action-equiv-family-comp-equiv :
- {l1 l2 : Level} (f : UU l1 → UU l2) {X Y Z : UU l1} →
- (e : X ≃ Y) (e' : Y ≃ Z) →
- action-equiv-family f (e' ∘e e) =
- action-equiv-family f e' ∘e action-equiv-family f e
-distributive-action-equiv-family-comp-equiv f e e' =
- ( ap equiv-eq (distributive-action-equiv-function-comp-equiv f e e')) ∙
- ( inv
- ( compute-equiv-eq-concat
- ( action-equiv-function f e)
- ( action-equiv-function f e')))
```
### The action on equivalences of any map preserves inverses
@@ -151,12 +96,4 @@ compute-action-equiv-function-inv-equiv :
compute-action-equiv-function-inv-equiv f {X} {Y} e =
( ap (ap f) (inv (commutativity-inv-eq-equiv X Y e))) ∙
( ap-inv f (eq-equiv X Y e))
-
-compute-action-equiv-family-inv-equiv :
- {l1 l2 : Level} (f : UU l1 → UU l2) {X Y : UU l1}
- (e : X ≃ Y) →
- action-equiv-family f (inv-equiv e) = inv-equiv (action-equiv-family f e)
-compute-action-equiv-family-inv-equiv f {X} {Y} e =
- ( ap equiv-eq (compute-action-equiv-function-inv-equiv f e)) ∙
- ( inv (commutativity-inv-equiv-eq (f X) (f Y) (action-equiv-function f e)))
```
diff --git a/src/foundation/action-on-equivalences-type-families-over-subuniverses.lagda.md b/src/foundation/action-on-equivalences-type-families-over-subuniverses.lagda.md
new file mode 100644
index 0000000000..8d9235e946
--- /dev/null
+++ b/src/foundation/action-on-equivalences-type-families-over-subuniverses.lagda.md
@@ -0,0 +1,95 @@
+# Action on equivalences in type families over subuniverses
+
+```agda
+module foundation.action-on-equivalences-type-families-over-subuniverses where
+```
+
+Imports
+
+```agda
+open import foundation.action-on-identifications-functions
+open import foundation.commuting-squares-of-maps
+open import foundation.dependent-pair-types
+open import foundation.equivalence-induction
+open import foundation.fibers-of-maps
+open import foundation.function-types
+open import foundation.subuniverses
+open import foundation.univalence
+open import foundation.universe-levels
+
+open import foundation-core.contractible-types
+open import foundation-core.equivalences
+open import foundation-core.identity-types
+```
+
+
+
+## Ideas
+
+Given a [subuniverse](foundation.subuniverses.md) `P`, any family of types `B`
+indexed by types of `P` has an
+[action on equivalences](foundation.action-on-equivalences-functions.md)
+obtained by using the [univalence axiom](foundation.univalence.md).
+
+## Definitions
+
+### The action on equivalences of a family of types over a subuniverse
+
+```agda
+module _
+ { l1 l2 l3 : Level}
+ ( P : subuniverse l1 l2) (B : type-subuniverse P → UU l3)
+ where
+
+ abstract
+ unique-action-equiv-family-over-subuniverse :
+ (X : type-subuniverse P) →
+ is-contr
+ ( fiber (ev-id-equiv-subuniverse P X {λ Y e → B X ≃ B Y}) id-equiv)
+ unique-action-equiv-family-over-subuniverse X =
+ is-contr-map-ev-id-equiv-subuniverse P X (λ Y e → B X ≃ B Y) id-equiv
+
+ action-equiv-family-over-subuniverse :
+ (X Y : type-subuniverse P) → pr1 X ≃ pr1 Y → B X ≃ B Y
+ action-equiv-family-over-subuniverse X Y =
+ equiv-eq ∘ ap B ∘ eq-equiv-subuniverse P
+
+ compute-id-equiv-action-equiv-family-over-subuniverse :
+ (X : type-subuniverse P) →
+ action-equiv-family-over-subuniverse X X id-equiv = id-equiv
+ compute-id-equiv-action-equiv-family-over-subuniverse X =
+ ap (equiv-eq ∘ ap B) (compute-eq-equiv-id-equiv-subuniverse P)
+```
+
+## Properties
+
+### The action on equivalences of a family of types over a subuniverse fits in a commuting square with `equiv-eq`
+
+We claim that the square
+
+```text
+ ap B
+ (X = Y) --------> (B X = B Y)
+ | |
+ equiv-eq | | equiv-eq
+ V V
+ (X ≃ Y) ---------> (B X ≃ B Y).
+ B
+```
+
+commutes for any two types `X Y : type-subuniverse P` and any family of types
+`B` over the subuniverse `P`.
+
+```agda
+coherence-square-action-equiv-family-over-subuniverse :
+ {l1 l2 l3 : Level} (P : subuniverse l1 l2) (B : type-subuniverse P → UU l3) →
+ (X Y : type-subuniverse P) →
+ coherence-square-maps
+ ( ap B {X} {Y})
+ ( equiv-eq-subuniverse P X Y)
+ ( equiv-eq)
+ ( action-equiv-family-over-subuniverse P B X Y)
+coherence-square-action-equiv-family-over-subuniverse
+ P B X .X refl =
+ compute-id-equiv-action-equiv-family-over-subuniverse P B X
+```
diff --git a/src/foundation/action-on-equivalences-type-families.lagda.md b/src/foundation/action-on-equivalences-type-families.lagda.md
new file mode 100644
index 0000000000..2fa7aff0f7
--- /dev/null
+++ b/src/foundation/action-on-equivalences-type-families.lagda.md
@@ -0,0 +1,185 @@
+# Action on equivalences of type families
+
+```agda
+module foundation.action-on-equivalences-type-families where
+```
+
+Imports
+
+```agda
+open import foundation.action-on-equivalences-functions
+open import foundation.action-on-identifications-functions
+open import foundation.commuting-squares-of-maps
+open import foundation.constant-maps
+open import foundation.equivalence-induction
+open import foundation.fibers-of-maps
+open import foundation.function-types
+open import foundation.homotopies
+open import foundation.identity-types
+open import foundation.univalence
+open import foundation.universe-levels
+
+open import foundation-core.contractible-types
+open import foundation-core.equivalences
+```
+
+
+
+## Ideas
+
+Any family of types `B : 𝒰 → 𝒱` over a universe `𝒰` has an **action on
+equivalences**
+
+```text
+ (A ≃ B) → P A ≃ P B
+```
+
+obtained by [equivalence induction](foundation.equivalence-induction.md). The
+acion on equivalences of a type family `B` on a universe `𝒰` is uniquely
+determined by the identification `B id-equiv = id-equiv`, and fits in a
+[commuting square](foundation.commuting-squares-of-maps.md)
+
+```text
+ ap B
+ (X = Y) --------> (B X = B Y)
+ | |
+ equiv-eq | | equiv-eq
+ V V
+ (X ≃ Y) ---------> (B X ≃ B Y).
+ B
+```
+
+Note that in general -- in particular in our general constructions below -- we
+need the univalence axiom to construct the action on equivalences of a family of
+types. However, for many specific type families that are defined in terms of the
+basic type constructors, we can construct the action on equivalences directly
+without invoking the univalence axiom.
+
+## Definitions
+
+### The action on equivalences of a family of types over a universe
+
+```agda
+module _
+ {l1 l2 : Level} (B : UU l1 → UU l2)
+ where
+
+ abstract
+ unique-action-equiv-family :
+ {X : UU l1} →
+ is-contr (fiber (ev-id-equiv (λ Y e → B X ≃ B Y)) id-equiv)
+ unique-action-equiv-family =
+ is-contr-map-ev-id-equiv (λ Y e → B _ ≃ B Y) id-equiv
+
+ action-equiv-family :
+ {X Y : UU l1} → (X ≃ Y) → B X ≃ B Y
+ action-equiv-family {X} {Y} =
+ equiv-eq ∘ action-equiv-function B
+
+ compute-action-equiv-family-id-equiv :
+ {X : UU l1} →
+ action-equiv-family {X} {X} id-equiv = id-equiv
+ compute-action-equiv-family-id-equiv {X} =
+ ap equiv-eq (compute-action-equiv-function-id-equiv B X)
+
+ map-action-equiv-family : {X Y : UU l1} → X ≃ Y → B X → B Y
+ map-action-equiv-family = map-equiv ∘ action-equiv-family
+```
+
+## Properties
+
+### The action on equivalences of a family of types over a universe fits in a commuting square with `equiv-eq`
+
+We claim that the square
+
+```text
+ ap B
+ (X = Y) --------> (B X = B Y)
+ | |
+ equiv-eq | | equiv-eq
+ V V
+ (X ≃ Y) ---------> (B X ≃ B Y).
+ B
+```
+
+commutes for any two types `X Y : 𝒰` and any type family `B` over `𝒰`.
+
+```agda
+coherence-square-action-equiv-family :
+ {l1 l2 : Level} (B : UU l1 → UU l2) (X Y : UU l1) →
+ coherence-square-maps
+ ( ap B {X} {Y})
+ ( equiv-eq)
+ ( equiv-eq)
+ ( action-equiv-family B)
+coherence-square-action-equiv-family B X .X refl =
+ compute-action-equiv-family-id-equiv B
+```
+
+### The identity function acts trivially on equivalences
+
+```agda
+compute-action-equiv-family-id :
+ {l : Level} {X Y : UU l} (e : X ≃ Y) → (action-equiv-family id e) = e
+compute-action-equiv-family-id {l} {X} {Y} e =
+ (ap equiv-eq (ap-id (eq-equiv X Y e))) ∙ (is-section-eq-equiv e)
+```
+
+### The action on equivalences of a constant map is constant
+
+```agda
+compute-action-equiv-family-const :
+ {l1 l2 : Level} (B : UU l2) {X Y : UU l1}
+ (e : X ≃ Y) → (action-equiv-family (const (UU l1) (UU l2) B) e) = id-equiv
+compute-action-equiv-family-const B {X} {Y} e =
+ ap equiv-eq (compute-action-equiv-function-const B e)
+```
+
+### The action on equivalences of a composite function is the composite of the actions
+
+```agda
+distributive-action-equiv-function-comp :
+ {l1 l2 l3 : Level} {C : UU l3} (g : UU l2 → C) (f : UU l1 → UU l2)
+ {X Y : UU l1} →
+ action-equiv-function (g ∘ f) ~
+ action-equiv-function g ∘ action-equiv-family f
+distributive-action-equiv-function-comp g f {X} {Y} e =
+ ( ap-comp g f (eq-equiv X Y e)) ∙
+ ( ap (ap g) (inv (is-retraction-eq-equiv (action-equiv-function f e))))
+
+distributive-action-equiv-family-comp :
+ {l1 l2 l3 : Level} (g : UU l2 → UU l3) (f : UU l1 → UU l2)
+ {X Y : UU l1} →
+ action-equiv-family (g ∘ f) ~
+ action-equiv-family g ∘ action-equiv-family f
+distributive-action-equiv-family-comp g f {X} {Y} e =
+ ap equiv-eq (distributive-action-equiv-function-comp g f {X} {Y} e)
+```
+
+### The action on equivalences of any map preserves composition of equivalences
+
+```agda
+distributive-action-equiv-family-comp-equiv :
+ {l1 l2 : Level} (f : UU l1 → UU l2) {X Y Z : UU l1} →
+ (e : X ≃ Y) (e' : Y ≃ Z) →
+ action-equiv-family f (e' ∘e e) =
+ action-equiv-family f e' ∘e action-equiv-family f e
+distributive-action-equiv-family-comp-equiv f e e' =
+ ( ap equiv-eq (distributive-action-equiv-function-comp-equiv f e e')) ∙
+ ( inv
+ ( compute-equiv-eq-concat
+ ( action-equiv-function f e)
+ ( action-equiv-function f e')))
+```
+
+### The action on equivalences of any map preserves inverses
+
+```agda
+compute-action-equiv-family-inv-equiv :
+ {l1 l2 : Level} (f : UU l1 → UU l2) {X Y : UU l1}
+ (e : X ≃ Y) →
+ action-equiv-family f (inv-equiv e) = inv-equiv (action-equiv-family f e)
+compute-action-equiv-family-inv-equiv f {X} {Y} e =
+ ( ap equiv-eq (compute-action-equiv-function-inv-equiv f e)) ∙
+ ( inv (commutativity-inv-equiv-eq (f X) (f Y) (action-equiv-function f e)))
+```
diff --git a/src/foundation/axiom-of-choice.lagda.md b/src/foundation/axiom-of-choice.lagda.md
index 54c5a7a8eb..9312e81445 100644
--- a/src/foundation/axiom-of-choice.lagda.md
+++ b/src/foundation/axiom-of-choice.lagda.md
@@ -21,7 +21,6 @@ open import foundation-core.equivalences
open import foundation-core.fibers-of-maps
open import foundation-core.function-types
open import foundation-core.functoriality-dependent-pair-types
-open import foundation-core.homotopies
open import foundation-core.identity-types
open import foundation-core.sets
open import foundation-core.whiskering-homotopies
diff --git a/src/foundation/binary-relations.lagda.md b/src/foundation/binary-relations.lagda.md
index 961d012bda..6e73fbb572 100644
--- a/src/foundation/binary-relations.lagda.md
+++ b/src/foundation/binary-relations.lagda.md
@@ -124,6 +124,17 @@ module _
is-antisymmetric-Relation-Prop = is-antisymmetric (type-Relation-Prop R)
```
+### Morphisms of binary relations
+
+```agda
+module _
+ {l1 l2 l3 : Level} {A : UU l1}
+ where
+
+ hom-Relation : Relation l2 A → Relation l3 A → UU (l1 ⊔ l2 ⊔ l3)
+ hom-Relation R S = (x y : A) → R x y → S x y
+```
+
## Properties
### Characterization of equality of binary relations
diff --git a/src/foundation/commuting-triangles-of-maps.lagda.md b/src/foundation/commuting-triangles-of-maps.lagda.md
index b1f54b0fe3..9ddf15431b 100644
--- a/src/foundation/commuting-triangles-of-maps.lagda.md
+++ b/src/foundation/commuting-triangles-of-maps.lagda.md
@@ -11,10 +11,12 @@ open import foundation-core.commuting-triangles-of-maps public
```agda
open import foundation.action-on-identifications-functions
open import foundation.functoriality-dependent-function-types
+open import foundation.homotopies
open import foundation.identity-types
open import foundation.universe-levels
open import foundation-core.equivalences
+open import foundation-core.function-types
```
@@ -50,13 +52,22 @@ module _
equiv-coherence-triangle-maps-inv-top :
coherence-triangle-maps left right (map-equiv e) ≃
- coherence-triangle-maps' right left (map-inv-equiv e)
+ coherence-triangle-maps right left (map-inv-equiv e)
equiv-coherence-triangle-maps-inv-top =
- equiv-Π
+ ( equiv-inv-htpy
+ ( left ∘ (map-inv-equiv e))
+ ( right)) ∘e
+ ( equiv-Π
( λ b → left (map-inv-equiv e b) = right b)
( e)
( λ a →
equiv-concat
( ap left (is-retraction-map-inv-equiv e a))
- ( right (map-equiv e a)))
+ ( right (map-equiv e a))))
+
+ coherence-triangle-maps-inv-top :
+ coherence-triangle-maps left right (map-equiv e) →
+ coherence-triangle-maps right left (map-inv-equiv e)
+ coherence-triangle-maps-inv-top =
+ map-equiv equiv-coherence-triangle-maps-inv-top
```
diff --git a/src/foundation/decidable-propositions.lagda.md b/src/foundation/decidable-propositions.lagda.md
index 800ce600f6..bc77976212 100644
--- a/src/foundation/decidable-propositions.lagda.md
+++ b/src/foundation/decidable-propositions.lagda.md
@@ -170,6 +170,10 @@ pr2 (iff-universes-Decidable-Prop l l' P) p =
is-set-Decidable-Prop : {l : Level} → is-set (Decidable-Prop l)
is-set-Decidable-Prop {l} =
is-set-equiv bool equiv-bool-Decidable-Prop is-set-bool
+
+Decidable-Prop-Set : (l : Level) → Set (lsuc l)
+pr1 (Decidable-Prop-Set l) = Decidable-Prop l
+pr2 (Decidable-Prop-Set l) = is-set-Decidable-Prop
```
### Extensionality of decidable propositions
@@ -230,6 +234,13 @@ abstract
is-decidable (type-Prop P) → is-finite (type-Prop P)
is-finite-is-decidable-Prop P x =
is-finite-count (count-is-decidable-Prop P x)
+
+is-finite-type-Decidable-Prop :
+ {l : Level} (P : Decidable-Prop l) → is-finite (type-Decidable-Prop P)
+is-finite-type-Decidable-Prop P =
+ is-finite-is-decidable-Prop
+ ( prop-Decidable-Prop P)
+ ( is-decidable-Decidable-Prop P)
```
### The type of decidable propositions of any universe level is finite
diff --git a/src/foundation/equivalence-extensionality.lagda.md b/src/foundation/equivalence-extensionality.lagda.md
index 3c07ca39f6..7d8ad2c455 100644
--- a/src/foundation/equivalence-extensionality.lagda.md
+++ b/src/foundation/equivalence-extensionality.lagda.md
@@ -10,6 +10,7 @@ module foundation.equivalence-extensionality where
open import foundation.dependent-pair-types
open import foundation.function-extensionality
open import foundation.fundamental-theorem-of-identity-types
+open import foundation.identity-systems
open import foundation.subtype-identity-principle
open import foundation.type-theoretic-principle-of-choice
open import foundation.universe-levels
@@ -24,6 +25,7 @@ open import foundation-core.functoriality-dependent-pair-types
open import foundation-core.homotopies
open import foundation-core.identity-types
open import foundation-core.propositions
+open import foundation-core.sections
```
@@ -88,3 +90,34 @@ module _
{e e' : A ≃ B} → (map-equiv e) = (map-equiv e') → htpy-equiv e e'
htpy-eq-map-equiv = htpy-eq
```
+
+### Homotopy induction for homotopies between equivalences
+
+```agda
+module _
+ {l1 l2 : Level} {A : UU l1} {B : UU l2}
+ where
+
+ abstract
+ Ind-htpy-equiv :
+ {l3 : Level} (e : A ≃ B)
+ (P : (e' : A ≃ B) (H : htpy-equiv e e') → UU l3) →
+ section
+ ( λ (h : (e' : A ≃ B) (H : htpy-equiv e e') → P e' H) →
+ h e (refl-htpy-equiv e))
+ Ind-htpy-equiv e =
+ is-identity-system-is-torsorial e
+ ( refl-htpy-equiv e)
+ ( is-contr-total-htpy-equiv e)
+
+ ind-htpy-equiv :
+ {l3 : Level} (e : A ≃ B) (P : (e' : A ≃ B) (H : htpy-equiv e e') → UU l3) →
+ P e (refl-htpy-equiv e) → (e' : A ≃ B) (H : htpy-equiv e e') → P e' H
+ ind-htpy-equiv e P = pr1 (Ind-htpy-equiv e P)
+
+ compute-ind-htpy-equiv :
+ {l3 : Level} (e : A ≃ B) (P : (e' : A ≃ B) (H : htpy-equiv e e') → UU l3)
+ (p : P e (refl-htpy-equiv e)) →
+ ind-htpy-equiv e P p e (refl-htpy-equiv e) = p
+ compute-ind-htpy-equiv e P = pr2 (Ind-htpy-equiv e P)
+```
diff --git a/src/foundation/equivalence-induction.lagda.md b/src/foundation/equivalence-induction.lagda.md
index 5fe4716a37..735792e8a7 100644
--- a/src/foundation/equivalence-induction.lagda.md
+++ b/src/foundation/equivalence-induction.lagda.md
@@ -2,53 +2,259 @@
```agda
module foundation.equivalence-induction where
-
-open import foundation-core.equivalence-induction public
```
Imports
```agda
+open import foundation.contractible-maps
+open import foundation.contractible-types
open import foundation.dependent-pair-types
+open import foundation.identity-systems
+open import foundation.identity-types
+open import foundation.subuniverses
open import foundation.univalence
+open import foundation.universal-property-dependent-pair-types
open import foundation.universe-levels
+open import foundation-core.commuting-triangles-of-maps
open import foundation-core.equivalences
open import foundation-core.function-types
+open import foundation-core.homotopies
open import foundation-core.sections
+open import foundation-core.singleton-induction
```
## Idea
-Equivalence induction is a condition equivalent to the univalence axiom
+**Equivalence induction** is the principle asserting that for any type family
+
+```text
+ P : (B : 𝒰) (e : A ≃ B) → 𝒰
+```
+
+of types indexed by all [equivalences](foundation.equivalences.md) with domain
+`A`, there is a [section](foundation.sections.md) of the evaluation map
+
+```text
+ ((B : 𝒰) (e : A ≃ B) → P B e) → P A id-equiv.
+```
+
+The principle of equivalence induction is equivalent to the
+[univalence axiom](foundation.univalence.md).
-## Theorem
+By equivalence induction, it follows that any type family `P : 𝒰 → 𝒱` on the
+universe has an
+[action on equivalences](foundation.action-on-equivalences-type-families.md)
+
+```text
+ (A ≃ B) → P A ≃ P B.
+```
+
+## Statement
```agda
-abstract
- Ind-equiv :
- {l1 l2 : Level} (A : UU l1) (P : (B : UU l1) (e : A ≃ B) → UU l2) →
- section (ev-id P)
- Ind-equiv A P =
- IND-EQUIV-is-contr-total-equiv
- ( is-contr-total-equiv A)
- ( λ t → P (pr1 t) (pr2 t))
+module _
+ {l1 : Level} {A : UU l1}
+ where
+
+ ev-id-equiv :
+ {l : Level} (P : (B : UU l1) → (A ≃ B) → UU l) →
+ ((B : UU l1) (e : A ≃ B) → P B e) → P A id-equiv
+ ev-id-equiv P f = f A id-equiv
+
+ equivalence-induction :
+ {l : Level} (P : (B : UU l1) (e : A ≃ B) → UU l) → UU (lsuc l1 ⊔ l)
+ equivalence-induction P = section (ev-id-equiv P)
+
+ triangle-ev-id-equiv :
+ {l : Level}
+ (P : (Σ (UU l1) (λ X → A ≃ X)) → UU l) →
+ coherence-triangle-maps
+ ( ev-point (A , id-equiv) {P})
+ ( ev-id-equiv (λ X e → P (X , e)))
+ ( ev-pair {A = UU l1} {B = λ X → A ≃ X} {C = P})
+ triangle-ev-id-equiv P f = refl
+```
+
+## Properties
+
+### Equivalence induction is equivalent to the contractibility of the total space of equivalences
+
+#### Contractibility of the total space of equivalences implies equivalence induction
+
+```agda
+module _
+ {l1 : Level} {A : UU l1}
+ where
+
+ abstract
+ is-identity-system-is-contr-total-equiv :
+ is-contr (Σ (UU l1) (λ X → A ≃ X)) →
+ {l : Level} →
+ (P : (Σ (UU l1) (λ X → A ≃ X)) → UU l) →
+ equivalence-induction (λ B e → P (B , e))
+ is-identity-system-is-contr-total-equiv c P =
+ section-left-factor
+ ( ev-id-equiv (λ X e → P (X , e)))
+ ( ev-pair)
+ ( is-singleton-is-contr
+ ( A , id-equiv)
+ ( ( A , id-equiv) ,
+ ( λ t →
+ ( inv (contraction c (A , id-equiv))) ∙ (contraction c t)))
+ ( P))
+```
+
+#### Equivalence induction implies contractibility of the total space of equivalences
+
+```agda
+module _
+ {l1 : Level} {A : UU l1}
+ where
+
+ abstract
+ is-contr-total-is-identity-system-equiv :
+ ( {l : Level} → is-identity-system l (λ X → A ≃ X) A id-equiv) →
+ is-contr (Σ (UU l1) (λ X → A ≃ X))
+ is-contr-total-is-identity-system-equiv ind =
+ is-contr-is-singleton
+ ( Σ (UU l1) (λ X → A ≃ X))
+ ( A , id-equiv)
+ ( λ P → section-comp
+ ( ev-id-equiv (λ X e → P (X , e)))
+ ( ev-pair {A = UU l1} {B = λ X → A ≃ X} {C = P})
+ ( ind-Σ , refl-htpy)
+ ( ind (λ X e → P (X , e))))
+```
+
+### Equivalence induction in a universe
+
+```agda
+module _
+ {l1 l2 : Level} {A : UU l1} (P : (B : UU l1) (e : A ≃ B) → UU l2)
+ where
+
+ abstract
+ is-identity-system-equiv : section (ev-id-equiv P)
+ is-identity-system-equiv =
+ is-identity-system-is-contr-total-equiv
+ ( is-contr-total-equiv _)
+ ( λ t → P (pr1 t) (pr2 t))
+
+ ind-equiv :
+ P A id-equiv → {B : UU l1} (e : A ≃ B) → P B e
+ ind-equiv p {B} = pr1 is-identity-system-equiv p B
+
+ compute-ind-equiv :
+ (u : P A id-equiv) → ind-equiv u id-equiv = u
+ compute-ind-equiv = pr2 is-identity-system-equiv
+```
+
+### Equivalence induction in a subuniverse
+
+```agda
+module _
+ {l1 l2 l3 : Level} (P : subuniverse l1 l2) (A : type-subuniverse P)
+ where
+
+ ev-id-equiv-subuniverse :
+ {F : (B : type-subuniverse P) → equiv-subuniverse P A B → UU l3} →
+ ((B : type-subuniverse P) (e : equiv-subuniverse P A B) → F B e) →
+ F A id-equiv
+ ev-id-equiv-subuniverse f = f A id-equiv
+
+ triangle-ev-id-equiv-subuniverse :
+ (F : (B : type-subuniverse P) → equiv-subuniverse P A B → UU l3) →
+ coherence-triangle-maps
+ ( ev-point (A , id-equiv))
+ ( ev-id-equiv-subuniverse {F})
+ ( ev-pair)
+ triangle-ev-id-equiv-subuniverse F E = refl
-ind-equiv :
- {l1 l2 : Level} (A : UU l1) (P : (B : UU l1) (e : A ≃ B) → UU l2) →
- P A id-equiv → {B : UU l1} (e : A ≃ B) → P B e
-ind-equiv A P p {B} = pr1 (Ind-equiv A P) p B
+ abstract
+ is-identity-system-equiv-subuniverse :
+ (F : (B : type-subuniverse P) → equiv-subuniverse P A B → UU l3) →
+ section (ev-id-equiv-subuniverse {F})
+ is-identity-system-equiv-subuniverse =
+ is-identity-system-is-torsorial A id-equiv
+ ( is-contr-total-equiv-subuniverse P A)
+
+ ind-equiv-subuniverse :
+ (F : (B : type-subuniverse P) → equiv-subuniverse P A B → UU l3) →
+ F A id-equiv → (B : type-subuniverse P) (e : equiv-subuniverse P A B) →
+ F B e
+ ind-equiv-subuniverse F =
+ pr1 (is-identity-system-equiv-subuniverse F)
+
+ compute-ind-equiv-subuniverse :
+ (F : (B : type-subuniverse P) → equiv-subuniverse P A B → UU l3) →
+ (u : F A id-equiv) →
+ ind-equiv-subuniverse F u A id-equiv = u
+ compute-ind-equiv-subuniverse F =
+ pr2 (is-identity-system-equiv-subuniverse F)
```
-## Corollaries
+### The evaluation map `ev-id-equiv` is an equivalence
+
+```agda
+module _
+ {l1 l2 : Level} {A : UU l1} (P : (B : UU l1) (e : A ≃ B) → UU l2)
+ where
+
+ is-equiv-ev-id-equiv : is-equiv (ev-id-equiv P)
+ is-equiv-ev-id-equiv =
+ is-equiv-left-factor-htpy
+ ( ev-point (A , id-equiv))
+ ( ev-id-equiv P)
+ ( ev-pair)
+ ( triangle-ev-id-equiv (λ u → P (pr1 u) (pr2 u)))
+ ( dependent-universal-property-contr-is-contr
+ ( A , id-equiv)
+ ( is-contr-total-equiv A)
+ ( λ u → P (pr1 u) (pr2 u)))
+ ( is-equiv-ev-pair)
+
+ is-contr-map-ev-id-equiv : is-contr-map (ev-id-equiv P)
+ is-contr-map-ev-id-equiv = is-contr-map-is-equiv is-equiv-ev-id-equiv
+```
+
+### The evaluation map `ev-id-equiv-subuniverse` is an equivalence
+
+```agda
+module _
+ {l1 l2 l3 : Level} (P : subuniverse l1 l2) (X : type-subuniverse P)
+ (F : (Y : type-subuniverse P) (e : equiv-subuniverse P X Y) → UU l3)
+ where
+
+ is-equiv-ev-id-equiv-subuniverse :
+ is-equiv (ev-id-equiv-subuniverse P X {F})
+ is-equiv-ev-id-equiv-subuniverse =
+ is-equiv-left-factor-htpy
+ ( ev-point (X , id-equiv))
+ ( ev-id-equiv-subuniverse P X)
+ ( ev-pair)
+ ( triangle-ev-id-equiv-subuniverse P X F)
+ ( dependent-universal-property-contr-is-contr
+ ( X , id-equiv)
+ ( is-contr-total-equiv-subuniverse P X)
+ ( λ E → F (pr1 E) (pr2 E)))
+ ( is-equiv-ev-pair)
+
+ is-contr-map-ev-id-equiv-subuniverse :
+ is-contr-map (ev-id-equiv-subuniverse P X {F})
+ is-contr-map-ev-id-equiv-subuniverse =
+ is-contr-map-is-equiv is-equiv-ev-id-equiv-subuniverse
+```
### Equivalence induction implies that postcomposing by an equivalence is an equivalence
-Of course we already know this fact from function extensionality, but we prove
-it again from equivalence induction so that we can prove that univalence implies
-function extensionality.
+Of course we already know that this fact follows from
+[function extensionality](foundation.function-extensionality.md). However, we
+prove it again from equivalence induction so that we can prove that
+[univalence implies function extensionality](foundation.univalence-implies-function-extensionality.md).
```agda
abstract
@@ -56,5 +262,5 @@ abstract
{l1 l2 : Level} {X Y : UU l1} (A : UU l2) (e : X ≃ Y) →
is-equiv (postcomp A (map-equiv e))
is-equiv-postcomp-univalence {X = X} A =
- ind-equiv X (λ Y e → is-equiv (postcomp A (map-equiv e))) is-equiv-id
+ ind-equiv (λ Y e → is-equiv (postcomp A (map-equiv e))) is-equiv-id
```
diff --git a/src/foundation/equivalences.lagda.md b/src/foundation/equivalences.lagda.md
index 858b4a952c..47fb87b058 100644
--- a/src/foundation/equivalences.lagda.md
+++ b/src/foundation/equivalences.lagda.md
@@ -15,7 +15,6 @@ open import foundation.dependent-pair-types
open import foundation.equivalence-extensionality
open import foundation.function-extensionality
open import foundation.functoriality-fibers-of-maps
-open import foundation.identity-systems
open import foundation.identity-types
open import foundation.truncated-maps
open import foundation.type-theoretic-principle-of-choice
@@ -263,37 +262,6 @@ module _
equiv-is-equiv-right-factor-htpy e (f ∘ map-equiv e) refl-htpy
```
-### Homotopy induction for homotopies between equivalences
-
-```agda
-module _
- {l1 l2 : Level} {A : UU l1} {B : UU l2}
- where
-
- abstract
- Ind-htpy-equiv :
- {l3 : Level} (e : A ≃ B)
- (P : (e' : A ≃ B) (H : htpy-equiv e e') → UU l3) →
- section
- ( λ (h : (e' : A ≃ B) (H : htpy-equiv e e') → P e' H) →
- h e (refl-htpy-equiv e))
- Ind-htpy-equiv e =
- Ind-identity-system e
- ( refl-htpy-equiv e)
- ( is-contr-total-htpy-equiv e)
-
- ind-htpy-equiv :
- {l3 : Level} (e : A ≃ B) (P : (e' : A ≃ B) (H : htpy-equiv e e') → UU l3) →
- P e (refl-htpy-equiv e) → (e' : A ≃ B) (H : htpy-equiv e e') → P e' H
- ind-htpy-equiv e P = pr1 (Ind-htpy-equiv e P)
-
- compute-ind-htpy-equiv :
- {l3 : Level} (e : A ≃ B) (P : (e' : A ≃ B) (H : htpy-equiv e e') → UU l3)
- (p : P e (refl-htpy-equiv e)) →
- ind-htpy-equiv e P p e (refl-htpy-equiv e) = p
- compute-ind-htpy-equiv e P = pr2 (Ind-htpy-equiv e P)
-```
-
### The groupoid laws for equivalences
#### Composition of equivalences is associative
diff --git a/src/foundation/homotopies.lagda.md b/src/foundation/homotopies.lagda.md
index 105569dbae..b8664ccc3a 100644
--- a/src/foundation/homotopies.lagda.md
+++ b/src/foundation/homotopies.lagda.md
@@ -86,7 +86,7 @@ abstract
{l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} (f : (x : A) → B x) →
FUNEXT f → IND-HTPY {l3 = l3} f
IND-HTPY-FUNEXT {l3 = l3} {A = A} {B = B} f funext-f =
- Ind-identity-system f
+ is-identity-system-is-torsorial f
( refl-htpy)
( is-contr-total-htpy f)
@@ -95,7 +95,7 @@ abstract
{l1 l2 : Level} {A : UU l1} {B : A → UU l2} (f : (x : A) → B x) →
({l : Level} → IND-HTPY {l3 = l} f) → FUNEXT f
FUNEXT-IND-HTPY f ind-htpy-f =
- fundamental-theorem-id-IND-identity-system f
+ fundamental-theorem-id-is-identity-system f
( refl-htpy)
( ind-htpy-f)
( λ g → htpy-eq)
diff --git a/src/foundation/identity-systems.lagda.md b/src/foundation/identity-systems.lagda.md
index 494a0cc6f6..b3622001da 100644
--- a/src/foundation/identity-systems.lagda.md
+++ b/src/foundation/identity-systems.lagda.md
@@ -23,25 +23,39 @@ open import foundation-core.transport-along-identifications
## Idea
-A unary identity system on a type `A` equipped with a point `a : A` consists of
-a type family `B` over `A` equipped with a point `b : B a` that satisfies an
-induction principle analogous to the induction principle of the identity type at
-`a`.
+A **(unary) identity system** on a type `A` equipped with a point `a : A`
+consists of a type family `B` over `A` equipped with a point `b : B a` that
+satisfies an induction principle analogous to the induction principle of the
+[identity type](foundation.identity-types.md) at `a`. The
+[dependent universal property of identity types](foundation.universal-property-identity-types.md)
+also follows for identity systems.
+
+## Definitions
+
+### The predicate of being an identity system
```agda
+ev-refl-identity-system :
+ {l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2} {a : A} (b : B a)
+ {P : (x : A) (y : B x) → UU l3} →
+ ((x : A) (y : B x) → P x y) → P a b
+ev-refl-identity-system b f = f _ b
+
module _
{l1 l2 : Level} (l : Level) {A : UU l1} (B : A → UU l2) (a : A) (b : B a)
where
- IND-identity-system : UU (l1 ⊔ l2 ⊔ lsuc l)
- IND-identity-system =
- ( P : (x : A) (y : B x) → UU l) →
- section (λ (h : (x : A) (y : B x) → P x y) → h a b)
+ is-identity-system : UU (l1 ⊔ l2 ⊔ lsuc l)
+ is-identity-system =
+ (P : (x : A) (y : B x) → UU l) → section (ev-refl-identity-system b {P})
```
## Properties
-### A type family over `A` is an identity system if and only if it is equivalent to the identity type
+### A type family over `A` is an identity system if and only if its total space is contractible
+
+In [`foundation.torsorial-type-families`](foundation.torsorial-type-families.md)
+we will start calling type families with contractible total space torsorial.
```agda
module _
@@ -49,36 +63,36 @@ module _
where
abstract
- Ind-identity-system :
- (is-contr-AB : is-contr (Σ A B)) →
- {l : Level} → IND-identity-system l B a b
- pr1 (Ind-identity-system is-contr-AB P) p x y =
+ is-identity-system-is-torsorial :
+ (H : is-contr (Σ A B)) →
+ {l : Level} → is-identity-system l B a b
+ pr1 (is-identity-system-is-torsorial H P) p x y =
tr
( fam-Σ P)
- ( eq-is-contr is-contr-AB)
+ ( eq-is-contr H)
( p)
- pr2 (Ind-identity-system is-contr-AB P) p =
+ pr2 (is-identity-system-is-torsorial H P) p =
ap
( λ t → tr (fam-Σ P) t p)
( eq-is-contr'
- ( is-prop-is-contr is-contr-AB (pair a b) (pair a b))
- ( eq-is-contr is-contr-AB)
+ ( is-prop-is-contr H (pair a b) (pair a b))
+ ( eq-is-contr H)
( refl))
abstract
- is-contr-total-space-IND-identity-system :
- ({l : Level} → IND-identity-system l B a b) → is-contr (Σ A B)
- pr1 (pr1 (is-contr-total-space-IND-identity-system ind)) = a
- pr2 (pr1 (is-contr-total-space-IND-identity-system ind)) = b
- pr2 (is-contr-total-space-IND-identity-system ind) (pair x y) =
- pr1 (ind (λ x' y' → (pair a b) = (pair x' y'))) refl x y
+ is-torsorial-is-identity-system :
+ ({l : Level} → is-identity-system l B a b) → is-contr (Σ A B)
+ pr1 (pr1 (is-torsorial-is-identity-system H)) = a
+ pr2 (pr1 (is-torsorial-is-identity-system H)) = b
+ pr2 (is-torsorial-is-identity-system H) (pair x y) =
+ pr1 (H (λ x' y' → (pair a b) = (pair x' y'))) refl x y
abstract
- fundamental-theorem-id-IND-identity-system :
- ({l : Level} → IND-identity-system l B a b) →
+ fundamental-theorem-id-is-identity-system :
+ ({l : Level} → is-identity-system l B a b) →
(f : (x : A) → a = x → B x) → (x : A) → is-equiv (f x)
- fundamental-theorem-id-IND-identity-system ind f =
+ fundamental-theorem-id-is-identity-system H f =
fundamental-theorem-id
- ( is-contr-total-space-IND-identity-system ind)
+ ( is-torsorial-is-identity-system H)
( f)
```
diff --git a/src/foundation/subuniverses.lagda.md b/src/foundation/subuniverses.lagda.md
index 5c1d434904..07d686f36f 100644
--- a/src/foundation/subuniverses.lagda.md
+++ b/src/foundation/subuniverses.lagda.md
@@ -169,6 +169,12 @@ module _
{s t : type-subuniverse P} → equiv-subuniverse s t → s = t
eq-equiv-subuniverse {s} {t} =
map-inv-is-equiv (is-equiv-equiv-eq-subuniverse s t)
+
+ compute-eq-equiv-id-equiv-subuniverse :
+ {s : type-subuniverse P} →
+ eq-equiv-subuniverse {s} {s} (id-equiv {A = pr1 s}) = refl
+ compute-eq-equiv-id-equiv-subuniverse =
+ is-retraction-map-inv-equiv (extensionality-subuniverse _ _) refl
```
### Equivalences of families of types in a subuniverse
diff --git a/src/foundation/symmetric-binary-relations.lagda.md b/src/foundation/symmetric-binary-relations.lagda.md
new file mode 100644
index 0000000000..c9688b1722
--- /dev/null
+++ b/src/foundation/symmetric-binary-relations.lagda.md
@@ -0,0 +1,198 @@
+# Symmetric binary relations
+
+```agda
+module foundation.symmetric-binary-relations where
+```
+
+Imports
+
+```agda
+open import foundation.action-on-identifications-functions
+open import foundation.binary-relations
+open import foundation.dependent-pair-types
+open import foundation.equivalence-extensionality
+open import foundation.equivalences
+open import foundation.function-extensionality
+open import foundation.function-types
+open import foundation.homotopies
+open import foundation.identity-types
+open import foundation.symmetric-operations
+open import foundation.transport-along-identifications
+open import foundation.universe-levels
+open import foundation.unordered-pairs
+
+open import univalent-combinatorics.standard-finite-types
+```
+
+
+
+## Idea
+
+A **symmetric binary relation** on a type `A` is a type family `R` over the type
+of [unordered pairs](foundation.unordered-pairs.md) of elements of `A`. Given a
+symmetric binary relation `R` on `A` and an equivalence of unordered pairs
+`p = q`, we have `R p ≃ R q`. In particular, we have
+
+```text
+ R ({x,y}) ≃ R ({y,x})
+```
+
+for any two elements `x y : A`, where `{x,y}` is the _standard unordered pair_
+consisting of `x` and `y`.
+
+Note that a symmetric binary relation R on a type is just a
+[symmetric operation](foundation.symmetric-operations.md) from `A` into a
+universe `𝒰`.
+
+## Definitions
+
+### Symmetric binary relations
+
+```agda
+Symmetric-Relation :
+ {l1 : Level} (l2 : Level) → UU l1 → UU (l1 ⊔ lsuc l2)
+Symmetric-Relation l2 A = symmetric-operation A (UU l2)
+```
+
+### Action on symmetries of symmetric binary relations
+
+```agda
+module _
+ {l1 l2 : Level} {A : UU l1} (R : Symmetric-Relation l2 A)
+ where
+
+ abstract
+ equiv-tr-Symmetric-Relation :
+ (p q : unordered-pair A) → Eq-unordered-pair p q → R p ≃ R q
+ equiv-tr-Symmetric-Relation p =
+ ind-Eq-unordered-pair p (λ q e → R p ≃ R q) id-equiv
+
+ compute-refl-equiv-tr-Symmetric-Relation :
+ (p : unordered-pair A) →
+ equiv-tr-Symmetric-Relation p p (refl-Eq-unordered-pair p) =
+ id-equiv
+ compute-refl-equiv-tr-Symmetric-Relation p =
+ compute-refl-ind-Eq-unordered-pair p (λ q e → R p ≃ R q) id-equiv
+
+ htpy-compute-refl-equiv-tr-Symmetric-Relation :
+ (p : unordered-pair A) →
+ htpy-equiv
+ ( equiv-tr-Symmetric-Relation p p (refl-Eq-unordered-pair p))
+ ( id-equiv)
+ htpy-compute-refl-equiv-tr-Symmetric-Relation p =
+ htpy-eq-equiv (compute-refl-equiv-tr-Symmetric-Relation p)
+
+ abstract
+ tr-Symmetric-Relation :
+ (p q : unordered-pair A) → Eq-unordered-pair p q → R p → R q
+ tr-Symmetric-Relation p q e =
+ map-equiv (equiv-tr-Symmetric-Relation p q e)
+
+ tr-inv-Symmetric-Relation :
+ (p q : unordered-pair A) → Eq-unordered-pair p q → R q → R p
+ tr-inv-Symmetric-Relation p q e =
+ map-inv-equiv (equiv-tr-Symmetric-Relation p q e)
+
+ is-section-tr-inv-Symmetric-Relation :
+ (p q : unordered-pair A) (e : Eq-unordered-pair p q) →
+ tr-Symmetric-Relation p q e ∘
+ tr-inv-Symmetric-Relation p q e ~
+ id
+ is-section-tr-inv-Symmetric-Relation p q e =
+ is-section-map-inv-equiv (equiv-tr-Symmetric-Relation p q e)
+
+ is-retraction-tr-inv-Symmetric-Relation :
+ (p q : unordered-pair A) (e : Eq-unordered-pair p q) →
+ tr-inv-Symmetric-Relation p q e ∘
+ tr-Symmetric-Relation p q e ~
+ id
+ is-retraction-tr-inv-Symmetric-Relation p q e =
+ is-retraction-map-inv-equiv (equiv-tr-Symmetric-Relation p q e)
+
+ compute-refl-tr-Symmetric-Relation :
+ (p : unordered-pair A) →
+ tr-Symmetric-Relation p p (refl-Eq-unordered-pair p) = id
+ compute-refl-tr-Symmetric-Relation p =
+ ap map-equiv (compute-refl-equiv-tr-Symmetric-Relation p)
+
+ htpy-compute-refl-tr-Symmetric-Relation :
+ (p : unordered-pair A) →
+ tr-Symmetric-Relation p p (refl-Eq-unordered-pair p) ~ id
+ htpy-compute-refl-tr-Symmetric-Relation p =
+ htpy-eq (compute-refl-tr-Symmetric-Relation p)
+```
+
+### The underlying binary relation of a symmetric binary relation
+
+```agda
+module _
+ {l1 l2 : Level} {A : UU l1} (R : Symmetric-Relation l2 A)
+ where
+
+ relation-Symmetric-Relation : Relation l2 A
+ relation-Symmetric-Relation x y = R (standard-unordered-pair x y)
+
+ equiv-symmetric-relation-Symmetric-Relation :
+ {x y : A} →
+ relation-Symmetric-Relation x y ≃
+ relation-Symmetric-Relation y x
+ equiv-symmetric-relation-Symmetric-Relation {x} {y} =
+ equiv-tr-Symmetric-Relation R
+ ( standard-unordered-pair x y)
+ ( standard-unordered-pair y x)
+ ( swap-standard-unordered-pair x y)
+
+ symmetric-relation-Symmetric-Relation :
+ {x y : A} →
+ relation-Symmetric-Relation x y →
+ relation-Symmetric-Relation y x
+ symmetric-relation-Symmetric-Relation =
+ map-equiv equiv-symmetric-relation-Symmetric-Relation
+```
+
+### The forgetful functor from binary relations to symmetric binary relations
+
+```agda
+module _
+ {l1 l2 : Level} {A : UU l1} (R : Relation l2 A)
+ where
+
+ symmetric-relation-Relation : Symmetric-Relation l2 A
+ symmetric-relation-Relation p =
+ Σ ( type-unordered-pair p)
+ ( λ i →
+ R (element-unordered-pair p i) (other-element-unordered-pair p i))
+
+ unit-symmetric-relation-Relation :
+ (x y : A) → R x y →
+ relation-Symmetric-Relation symmetric-relation-Relation x y
+ pr1 (unit-symmetric-relation-Relation x y r) = zero-Fin 1
+ pr2 (unit-symmetric-relation-Relation x y r) =
+ tr
+ ( R x)
+ ( inv (compute-other-element-standard-unordered-pair x y (zero-Fin 1)))
+ ( r)
+```
+
+### Morphisms of symmetric binary relations
+
+```agda
+module _
+ {l1 l2 l3 : Level} {A : UU l1}
+ where
+
+ hom-Symmetric-Relation :
+ Symmetric-Relation l2 A → Symmetric-Relation l3 A →
+ UU (lsuc lzero ⊔ l1 ⊔ l2 ⊔ l3)
+ hom-Symmetric-Relation R S =
+ (p : unordered-pair A) → R p → S p
+
+ hom-relation-hom-Symmetric-Relation :
+ (R : Symmetric-Relation l2 A) (S : Symmetric-Relation l3 A) →
+ hom-Symmetric-Relation R S →
+ hom-Relation
+ ( relation-Symmetric-Relation R)
+ ( relation-Symmetric-Relation S)
+ hom-relation-hom-Symmetric-Relation R S f x y =
+ f (standard-unordered-pair x y)
+```
diff --git a/src/foundation/symmetric-operations.lagda.md b/src/foundation/symmetric-operations.lagda.md
index 5e779b56c8..804aa8eaa0 100644
--- a/src/foundation/symmetric-operations.lagda.md
+++ b/src/foundation/symmetric-operations.lagda.md
@@ -9,9 +9,17 @@ module foundation.symmetric-operations where
```agda
open import foundation.action-on-identifications-binary-functions
open import foundation.action-on-identifications-functions
+open import foundation.contractible-types
open import foundation.dependent-pair-types
open import foundation.equivalence-extensionality
+open import foundation.function-extensionality
+open import foundation.function-types
open import foundation.functoriality-coproduct-types
+open import foundation.fundamental-theorem-of-identity-types
+open import foundation.homotopies
+open import foundation.propositional-truncations
+open import foundation.propositions
+open import foundation.subtypes
open import foundation.universal-property-propositional-truncation-into-sets
open import foundation.universe-levels
open import foundation.unordered-pairs
@@ -56,14 +64,27 @@ module _
is-commutative : (A → A → B) → UU (l1 ⊔ l2)
is-commutative f = (x y : A) → f x y = f y x
+
+is-commutative-Prop :
+ {l1 l2 : Level} {A : UU l1} (B : Set l2) →
+ (A → A → type-Set B) → Prop (l1 ⊔ l2)
+is-commutative-Prop B f =
+ Π-Prop _ (λ x → Π-Prop _ (λ y → Id-Prop B (f x y) (f y x)))
```
### Commutative operations
```agda
-symmetric-operation :
- {l1 l2 : Level} (A : UU l1) (B : UU l2) → UU (lsuc lzero ⊔ l1 ⊔ l2)
-symmetric-operation A B = unordered-pair A → B
+module _
+ {l1 l2 : Level} (A : UU l1) (B : UU l2)
+ where
+
+ symmetric-operation : UU (lsuc lzero ⊔ l1 ⊔ l2)
+ symmetric-operation = unordered-pair A → B
+
+ map-symmetric-operation : symmetric-operation → A → A → B
+ map-symmetric-operation f x y =
+ f (standard-unordered-pair x y)
```
## Properties
@@ -143,3 +164,144 @@ module _
p : Fin 2 → A
p = pr2 (standard-unordered-pair x y)
```
+
+### Characterization of equality of symmetric operations into sets
+
+```agda
+module _
+ {l1 l2 : Level} (A : UU l1) (B : Set l2)
+ (f : symmetric-operation A (type-Set B))
+ where
+
+ htpy-symmetric-operation-Set-Prop :
+ (g : symmetric-operation A (type-Set B)) → Prop (l1 ⊔ l2)
+ htpy-symmetric-operation-Set-Prop g =
+ Π-Prop A
+ ( λ x →
+ Π-Prop A
+ ( λ y →
+ Id-Prop B
+ ( map-symmetric-operation A (type-Set B) f x y)
+ ( map-symmetric-operation A (type-Set B) g x y)))
+
+ htpy-symmetric-operation-Set :
+ (g : symmetric-operation A (type-Set B)) → UU (l1 ⊔ l2)
+ htpy-symmetric-operation-Set g =
+ type-Prop (htpy-symmetric-operation-Set-Prop g)
+
+ center-total-htpy-symmetric-operation-Set :
+ Σ ( symmetric-operation A (type-Set B))
+ ( htpy-symmetric-operation-Set)
+ pr1 center-total-htpy-symmetric-operation-Set = f
+ pr2 center-total-htpy-symmetric-operation-Set x y = refl
+
+ contraction-total-htpy-symmetric-operation-Set :
+ ( t :
+ Σ ( symmetric-operation A (type-Set B))
+ ( htpy-symmetric-operation-Set)) →
+ center-total-htpy-symmetric-operation-Set = t
+ contraction-total-htpy-symmetric-operation-Set (g , H) =
+ eq-type-subtype
+ htpy-symmetric-operation-Set-Prop
+ ( eq-htpy
+ ( λ p →
+ apply-universal-property-trunc-Prop
+ ( is-surjective-standard-unordered-pair p)
+ ( Id-Prop B (f p) (g p))
+ ( λ { (x , y , refl) → H x y})))
+
+ is-contr-total-htpy-symmetric-operation-Set :
+ is-contr
+ ( Σ ( symmetric-operation A (type-Set B))
+ ( htpy-symmetric-operation-Set))
+ pr1 is-contr-total-htpy-symmetric-operation-Set =
+ center-total-htpy-symmetric-operation-Set
+ pr2 is-contr-total-htpy-symmetric-operation-Set =
+ contraction-total-htpy-symmetric-operation-Set
+
+ htpy-eq-symmetric-operation-Set :
+ (g : symmetric-operation A (type-Set B)) →
+ (f = g) → htpy-symmetric-operation-Set g
+ htpy-eq-symmetric-operation-Set g refl x y = refl
+
+ is-equiv-htpy-eq-symmetric-operation-Set :
+ (g : symmetric-operation A (type-Set B)) →
+ is-equiv (htpy-eq-symmetric-operation-Set g)
+ is-equiv-htpy-eq-symmetric-operation-Set =
+ fundamental-theorem-id
+ is-contr-total-htpy-symmetric-operation-Set
+ htpy-eq-symmetric-operation-Set
+
+ extensionality-symmetric-operation-Set :
+ (g : symmetric-operation A (type-Set B)) →
+ (f = g) ≃ htpy-symmetric-operation-Set g
+ pr1 (extensionality-symmetric-operation-Set g) =
+ htpy-eq-symmetric-operation-Set g
+ pr2 (extensionality-symmetric-operation-Set g) =
+ is-equiv-htpy-eq-symmetric-operation-Set g
+
+ eq-htpy-symmetric-operation-Set :
+ (g : symmetric-operation A (type-Set B)) →
+ htpy-symmetric-operation-Set g → (f = g)
+ eq-htpy-symmetric-operation-Set g =
+ map-inv-equiv (extensionality-symmetric-operation-Set g)
+```
+
+### The type of commutative operations into a set is equivalent to the type of symmetric operations
+
+```agda
+module _
+ {l1 l2 : Level} (A : UU l1) (B : Set l2)
+ where
+
+ map-compute-symmetric-operation-Set :
+ symmetric-operation A (type-Set B) → Σ (A → A → type-Set B) is-commutative
+ pr1 (map-compute-symmetric-operation-Set f) =
+ map-symmetric-operation A (type-Set B) f
+ pr2 (map-compute-symmetric-operation-Set f) =
+ is-commutative-symmetric-operation f
+
+ map-inv-compute-symmetric-operation-Set :
+ Σ (A → A → type-Set B) is-commutative → symmetric-operation A (type-Set B)
+ map-inv-compute-symmetric-operation-Set (f , H) =
+ symmetric-operation-is-commutative B f H
+
+ is-section-map-inv-compute-symmetric-operation-Set :
+ ( map-compute-symmetric-operation-Set ∘
+ map-inv-compute-symmetric-operation-Set) ~ id
+ is-section-map-inv-compute-symmetric-operation-Set (f , H) =
+ eq-type-subtype
+ ( is-commutative-Prop B)
+ ( eq-htpy
+ ( λ x →
+ eq-htpy
+ ( λ y →
+ compute-symmetric-operation-is-commutative B f H x y)))
+
+ is-retraction-map-inv-compute-symmetric-operation-Set :
+ ( map-inv-compute-symmetric-operation-Set ∘
+ map-compute-symmetric-operation-Set) ~ id
+ is-retraction-map-inv-compute-symmetric-operation-Set g =
+ eq-htpy-symmetric-operation-Set A B
+ ( map-inv-compute-symmetric-operation-Set
+ ( map-compute-symmetric-operation-Set g))
+ ( g)
+ ( compute-symmetric-operation-is-commutative B
+ ( map-symmetric-operation A (type-Set B) g)
+ ( is-commutative-symmetric-operation g))
+
+ is-equiv-map-compute-symmetric-operation-Set :
+ is-equiv map-compute-symmetric-operation-Set
+ is-equiv-map-compute-symmetric-operation-Set =
+ is-equiv-is-invertible
+ map-inv-compute-symmetric-operation-Set
+ is-section-map-inv-compute-symmetric-operation-Set
+ is-retraction-map-inv-compute-symmetric-operation-Set
+
+ compute-symmetric-operation-Set :
+ symmetric-operation A (type-Set B) ≃ Σ (A → A → type-Set B) is-commutative
+ pr1 compute-symmetric-operation-Set =
+ map-compute-symmetric-operation-Set
+ pr2 compute-symmetric-operation-Set =
+ is-equiv-map-compute-symmetric-operation-Set
+```
diff --git a/src/foundation/transport-along-equivalences.lagda.md b/src/foundation/transport-along-equivalences.lagda.md
index ebf2304b5c..316a911c17 100644
--- a/src/foundation/transport-along-equivalences.lagda.md
+++ b/src/foundation/transport-along-equivalences.lagda.md
@@ -8,12 +8,12 @@ module foundation.transport-along-equivalences where
```agda
open import foundation.action-on-equivalences-functions
+open import foundation.action-on-equivalences-type-families
open import foundation.action-on-identifications-functions
open import foundation.dependent-pair-types
open import foundation.equivalence-extensionality
open import foundation.equivalence-induction
open import foundation.equivalences
-open import foundation.function-extensionality
open import foundation.transport-along-identifications
open import foundation.univalence
open import foundation.universe-levels
@@ -182,10 +182,10 @@ eq-tr-equiv-action-equiv-family :
{l1 l2 : Level} (f : UU l1 → UU l2) {X Y : UU l1} →
(e : X ≃ Y) → tr-equiv f e = action-equiv-family f e
eq-tr-equiv-action-equiv-family f {X} =
- ind-equiv X
+ ind-equiv
( λ Y e → tr-equiv f e = action-equiv-family f e)
( compute-tr-equiv-id-equiv f ∙
- inv (compute-action-equiv-family-id-equiv f X))
+ inv (compute-action-equiv-family-id-equiv f))
eq-map-tr-equiv-map-action-equiv-family :
{l1 l2 : Level} (f : UU l1 → UU l2) {X Y : UU l1} →
diff --git a/src/foundation/universal-property-identity-systems.lagda.md b/src/foundation/universal-property-identity-systems.lagda.md
new file mode 100644
index 0000000000..a31939e189
--- /dev/null
+++ b/src/foundation/universal-property-identity-systems.lagda.md
@@ -0,0 +1,98 @@
+# The universal property of identity systems
+
+```agda
+module foundation.universal-property-identity-systems where
+```
+
+Imports
+
+```agda
+open import foundation.contractible-types
+open import foundation.dependent-pair-types
+open import foundation.identity-systems
+open import foundation.torsorial-type-families
+open import foundation.universal-property-dependent-pair-types
+open import foundation.universe-levels
+
+open import foundation-core.equivalences
+open import foundation-core.identity-types
+```
+
+
+
+## Idea
+
+A **(unary) identity system** on a type `A` equipped with a point `a : A`
+consists of a type family `B` over `A` equipped with a point `b : B a` that
+satisfies an induction principle analogous to the induction principle of the
+[identity type](foundation.identity-types.md) at `a`. The
+[dependent universal property of identity types](foundation.universal-property-identity-types.md)
+also follows for identity systems.
+
+## Definition
+
+### The universal property of identity systems
+
+```agda
+dependent-universal-property-identity-system :
+ {l1 l2 : Level} (l3 : Level) {A : UU l1} {B : A → UU l2} {a : A} (b : B a) →
+ UU (l1 ⊔ l2 ⊔ lsuc l3)
+dependent-universal-property-identity-system l3 {A} {B} b =
+ (P : (x : A) (y : B x) → UU l3) → is-equiv (ev-refl-identity-system b {P})
+```
+
+## Properties
+
+### A type family satisfies the dependent universal property of identity systems if and only if it is torsorial
+
+```agda
+module _
+ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {a : A} (b : B a)
+ where
+
+ dependent-universal-property-identity-system-is-torsorial :
+ is-torsorial B →
+ {l3 : Level} → dependent-universal-property-identity-system l3 {A} {B} b
+ dependent-universal-property-identity-system-is-torsorial
+ H P =
+ is-equiv-left-factor
+ ( ev-refl-identity-system b)
+ ( ev-pair)
+ ( dependent-universal-property-contr-is-contr
+ ( a , b)
+ ( H)
+ ( λ u → P (pr1 u) (pr2 u)))
+ ( is-equiv-ev-pair)
+
+ is-torsorial-dependent-universal-property-identity-system :
+ ({l3 : Level} → dependent-universal-property-identity-system l3 {A} {B} b) →
+ is-torsorial B
+ pr1 (is-torsorial-dependent-universal-property-identity-system H) = (a , b)
+ pr2 (is-torsorial-dependent-universal-property-identity-system H) u =
+ map-inv-is-equiv
+ ( H (λ x y → (a , b) = (x , y)))
+ ( refl)
+ ( pr1 u)
+ ( pr2 u)
+```
+
+### A type family satisfies the dependent universal property of identity systems if and only if it is an identity system
+
+```agda
+module _
+ {l1 l2 : Level} {A : UU l1} {B : A → UU l2} {a : A} (b : B a)
+ where
+
+ dependent-universal-property-identity-system-is-identity-system :
+ ({l : Level} → is-identity-system l {A} B a b) →
+ ({l : Level} → dependent-universal-property-identity-system l {A} {B} b)
+ dependent-universal-property-identity-system-is-identity-system H =
+ dependent-universal-property-identity-system-is-torsorial b
+ ( is-torsorial-is-identity-system a b H)
+
+ is-identity-system-dependent-universal-property-identity-system :
+ ({l : Level} → dependent-universal-property-identity-system l {A} {B} b) →
+ ({l : Level} → is-identity-system l {A} B a b)
+ is-identity-system-dependent-universal-property-identity-system H P =
+ section-is-equiv (H P)
+```
diff --git a/src/foundation/unordered-pairs-of-types.lagda.md b/src/foundation/unordered-pairs-of-types.lagda.md
index 6819cbe635..491d79e352 100644
--- a/src/foundation/unordered-pairs-of-types.lagda.md
+++ b/src/foundation/unordered-pairs-of-types.lagda.md
@@ -71,7 +71,7 @@ module _
## Properties
-### Univalence for unordered pairs of types
+### Extensionality of unordered pairs of types
```agda
module _
diff --git a/src/foundation/unordered-pairs.lagda.md b/src/foundation/unordered-pairs.lagda.md
index 30c68f06e7..e69737ea60 100644
--- a/src/foundation/unordered-pairs.lagda.md
+++ b/src/foundation/unordered-pairs.lagda.md
@@ -8,6 +8,9 @@ module foundation.unordered-pairs where
```agda
open import foundation.action-on-identifications-functions
+open import foundation.commuting-triangles-of-maps
+open import foundation.contractible-maps
+open import foundation.contractible-types
open import foundation.decidable-equality
open import foundation.dependent-pair-types
open import foundation.existential-quantification
@@ -17,9 +20,9 @@ open import foundation.homotopies
open import foundation.mere-equivalences
open import foundation.propositional-truncations
open import foundation.structure-identity-principle
+open import foundation.universal-property-dependent-pair-types
open import foundation.universe-levels
-open import foundation-core.contractible-types
open import foundation-core.coproduct-types
open import foundation-core.embeddings
open import foundation-core.equivalences
@@ -125,21 +128,34 @@ Any two elements `x` and `y` in a type `A` define a standard unordered pair
```agda
module _
- {l1 : Level} {A : UU l1}
+ {l1 : Level} {A : UU l1} (x y : A)
where
- element-standard-unordered-pair : (x y : A) → Fin 2 → A
- element-standard-unordered-pair x y (inl (inr star)) = x
- element-standard-unordered-pair x y (inr star) = y
-
- standard-unordered-pair : A → A → unordered-pair A
- pr1 (standard-unordered-pair x y) = Fin-UU-Fin' 2
- pr2 (standard-unordered-pair x y) = element-standard-unordered-pair x y
+ element-standard-unordered-pair : Fin 2 → A
+ element-standard-unordered-pair (inl (inr star)) = x
+ element-standard-unordered-pair (inr star) = y
+
+ standard-unordered-pair : unordered-pair A
+ pr1 standard-unordered-pair = Fin-UU-Fin' 2
+ pr2 standard-unordered-pair = element-standard-unordered-pair
+
+ other-element-standard-unordered-pair : Fin 2 → A
+ other-element-standard-unordered-pair (inl (inr star)) = y
+ other-element-standard-unordered-pair (inr star) = x
+
+ compute-other-element-standard-unordered-pair :
+ (u : Fin 2) →
+ other-element-unordered-pair standard-unordered-pair u =
+ other-element-standard-unordered-pair u
+ compute-other-element-standard-unordered-pair (inl (inr star)) =
+ ap element-standard-unordered-pair (compute-swap-Fin-two-ℕ (inl (inr star)))
+ compute-other-element-standard-unordered-pair (inr star) =
+ ap element-standard-unordered-pair (compute-swap-Fin-two-ℕ (inr star))
```
## Properties
-### Equality of unordered pairs
+### Extensionality of unordered pairs
```agda
module _
@@ -150,7 +166,10 @@ module _
Eq-unordered-pair p q =
Σ ( type-unordered-pair p ≃ type-unordered-pair q)
( λ e →
- (element-unordered-pair p) ~ (element-unordered-pair q ∘ map-equiv e))
+ coherence-triangle-maps
+ ( element-unordered-pair p)
+ ( element-unordered-pair q)
+ ( map-equiv e))
refl-Eq-unordered-pair : (p : unordered-pair A) → Eq-unordered-pair p p
pr1 (refl-Eq-unordered-pair (pair X p)) = id-equiv-UU-Fin {k = 2} X
@@ -211,6 +230,78 @@ module _
eq-Eq-refl-unordered-pair p = is-retraction-eq-Eq-unordered-pair p p refl
```
+### Induction on equality of unordered pairs
+
+```agda
+module _
+ {l1 l2 : Level} {A : UU l1} (p : unordered-pair A)
+ (B : (q : unordered-pair A) → Eq-unordered-pair p q → UU l2)
+ where
+
+ ev-refl-Eq-unordered-pair :
+ ((q : unordered-pair A) (e : Eq-unordered-pair p q) → B q e) →
+ B p (refl-Eq-unordered-pair p)
+ ev-refl-Eq-unordered-pair f = f p (refl-Eq-unordered-pair p)
+
+ triangle-ev-refl-Eq-unordered-pair :
+ coherence-triangle-maps
+ ( ev-point (p , refl-Eq-unordered-pair p))
+ ( ev-refl-Eq-unordered-pair)
+ ( ev-pair)
+ triangle-ev-refl-Eq-unordered-pair = refl-htpy
+
+ abstract
+ is-equiv-ev-refl-Eq-unordered-pair : is-equiv ev-refl-Eq-unordered-pair
+ is-equiv-ev-refl-Eq-unordered-pair =
+ is-equiv-left-factor-htpy
+ ( ev-point (p , refl-Eq-unordered-pair p))
+ ( ev-refl-Eq-unordered-pair)
+ ( ev-pair)
+ ( triangle-ev-refl-Eq-unordered-pair)
+ ( dependent-universal-property-contr-is-contr
+ ( p , refl-Eq-unordered-pair p)
+ ( is-contr-total-Eq-unordered-pair p)
+ ( λ u → B (pr1 u) (pr2 u)))
+ ( is-equiv-ev-pair)
+
+ abstract
+ is-contr-map-ev-refl-Eq-unordered-pair :
+ is-contr-map ev-refl-Eq-unordered-pair
+ is-contr-map-ev-refl-Eq-unordered-pair =
+ is-contr-map-is-equiv is-equiv-ev-refl-Eq-unordered-pair
+
+ abstract
+ ind-Eq-unordered-pair :
+ B p (refl-Eq-unordered-pair p) →
+ ((q : unordered-pair A) (e : Eq-unordered-pair p q) → B q e)
+ ind-Eq-unordered-pair u =
+ pr1 (center (is-contr-map-ev-refl-Eq-unordered-pair u))
+
+ compute-refl-ind-Eq-unordered-pair :
+ (u : B p (refl-Eq-unordered-pair p)) →
+ ind-Eq-unordered-pair u p (refl-Eq-unordered-pair p) = u
+ compute-refl-ind-Eq-unordered-pair u =
+ pr2 (center (is-contr-map-ev-refl-Eq-unordered-pair u))
+```
+
+### Inverting extensional equality of unordered pairs
+
+```agda
+module _
+ {l : Level} {A : UU l} (p q : unordered-pair A)
+ where
+
+ inv-Eq-unordered-pair :
+ Eq-unordered-pair p q → Eq-unordered-pair q p
+ pr1 (inv-Eq-unordered-pair (e , H)) = inv-equiv e
+ pr2 (inv-Eq-unordered-pair (e , H)) =
+ coherence-triangle-maps-inv-top
+ ( element-unordered-pair p)
+ ( element-unordered-pair q)
+ ( e)
+ ( H)
+```
+
### Mere equality of unordered pairs
```agda
@@ -238,15 +329,25 @@ module _
### A standard unordered pair `{x,y}` is equal to the standard unordered pair `{y,x}`
```agda
-is-commutative-standard-unordered-pair :
- {l : Level} {A : UU l} (x y : A) →
- standard-unordered-pair x y = standard-unordered-pair y x
-is-commutative-standard-unordered-pair x y =
- eq-Eq-unordered-pair
- ( standard-unordered-pair x y)
- ( standard-unordered-pair y x)
- ( equiv-succ-Fin 2)
- ( λ { (inl (inr star)) → refl ; (inr star) → refl})
+module _
+ {l1 : Level} {A : UU l1} (x y : A)
+ where
+
+ swap-standard-unordered-pair :
+ Eq-unordered-pair
+ ( standard-unordered-pair x y)
+ ( standard-unordered-pair y x)
+ pr1 swap-standard-unordered-pair = equiv-succ-Fin 2
+ pr2 swap-standard-unordered-pair (inl (inr star)) = refl
+ pr2 swap-standard-unordered-pair (inr star) = refl
+
+ is-commutative-standard-unordered-pair :
+ standard-unordered-pair x y = standard-unordered-pair y x
+ is-commutative-standard-unordered-pair =
+ eq-Eq-unordered-pair'
+ ( standard-unordered-pair x y)
+ ( standard-unordered-pair y x)
+ ( swap-standard-unordered-pair)
```
### Functoriality of unordered pairs
@@ -346,5 +447,74 @@ id-equiv-standard-unordered-pair x y =
unordered-distinct-pair :
{l : Level} (A : UU l) → UU (lsuc lzero ⊔ l)
-unordered-distinct-pair A = Σ (UU-Fin lzero 2) (λ X → pr1 X ↪ A)
+unordered-distinct-pair A =
+ Σ (UU-Fin lzero 2) (λ X → pr1 X ↪ A)
+```
+
+### Every unordered pair is merely equal to a standard unordered pair
+
+```agda
+is-surjective-standard-unordered-pair :
+ {l : Level} {A : UU l} (p : unordered-pair A) →
+ type-trunc-Prop
+ ( Σ A (λ x → Σ A (λ y → standard-unordered-pair x y = p)))
+is-surjective-standard-unordered-pair (I , a) =
+ apply-universal-property-trunc-Prop
+ ( has-two-elements-type-2-Element-Type I)
+ ( trunc-Prop
+ ( Σ _ (λ x → Σ _ (λ y → standard-unordered-pair x y = (I , a)))))
+ ( λ e →
+ unit-trunc-Prop
+ ( a (map-equiv e (zero-Fin 1)) ,
+ a (map-equiv e (one-Fin 1)) ,
+ eq-Eq-unordered-pair
+ ( standard-unordered-pair _ _)
+ ( I , a)
+ ( e)
+ ( λ { (inl (inr star)) → refl ; (inr star) → refl})))
+```
+
+### For every unordered pair `p` and every element `i` in its underlying type, `p` is equal to a standard unordered pair
+
+```agda
+module _
+ {l : Level} {A : UU l} (p : unordered-pair A) (i : type-unordered-pair p)
+ where
+
+ compute-standard-unordered-pair-element-unordered-pair :
+ Eq-unordered-pair
+ ( standard-unordered-pair
+ ( element-unordered-pair p i)
+ ( other-element-unordered-pair p i))
+ ( p)
+ pr1 compute-standard-unordered-pair-element-unordered-pair =
+ equiv-point-2-Element-Type
+ ( 2-element-type-unordered-pair p)
+ ( i)
+ pr2 compute-standard-unordered-pair-element-unordered-pair (inl (inr star)) =
+ ap
+ ( element-unordered-pair p)
+ ( inv
+ ( compute-map-equiv-point-2-Element-Type
+ ( 2-element-type-unordered-pair p)
+ ( i)))
+ pr2 compute-standard-unordered-pair-element-unordered-pair (inr star) =
+ ap
+ ( element-unordered-pair p)
+ ( inv
+ ( compute-map-equiv-point-2-Element-Type'
+ ( 2-element-type-unordered-pair p)
+ ( i)))
+
+ eq-compute-standard-unordered-pair-element-unordered-pair :
+ standard-unordered-pair
+ ( element-unordered-pair p i)
+ ( other-element-unordered-pair p i) = p
+ eq-compute-standard-unordered-pair-element-unordered-pair =
+ eq-Eq-unordered-pair'
+ ( standard-unordered-pair
+ ( element-unordered-pair p i)
+ ( other-element-unordered-pair p i))
+ ( p)
+ ( compute-standard-unordered-pair-element-unordered-pair)
```
diff --git a/src/group-theory/commuting-elements-groups.lagda.md b/src/group-theory/commuting-elements-groups.lagda.md
index 5b20cee33a..9e76af7d68 100644
--- a/src/group-theory/commuting-elements-groups.lagda.md
+++ b/src/group-theory/commuting-elements-groups.lagda.md
@@ -7,10 +7,8 @@ module group-theory.commuting-elements-groups where
Imports
```agda
-open import foundation.action-on-identifications-functions
open import foundation.identity-types
open import foundation.propositions
-open import foundation.sets
open import foundation.universe-levels
open import group-theory.commuting-elements-monoids
diff --git a/src/group-theory/endomorphism-rings-abelian-groups.lagda.md b/src/group-theory/endomorphism-rings-abelian-groups.lagda.md
index 8ae3888a1a..d3dfb679a9 100644
--- a/src/group-theory/endomorphism-rings-abelian-groups.lagda.md
+++ b/src/group-theory/endomorphism-rings-abelian-groups.lagda.md
@@ -8,8 +8,6 @@ module group-theory.endomorphism-rings-abelian-groups where
```agda
open import foundation.dependent-pair-types
-open import foundation.propositional-truncations
-open import foundation.surjective-maps
open import foundation.universe-levels
open import group-theory.abelian-groups
diff --git a/src/group-theory/free-groups-with-one-generator.lagda.md b/src/group-theory/free-groups-with-one-generator.lagda.md
index 82e51078e9..c500185cbc 100644
--- a/src/group-theory/free-groups-with-one-generator.lagda.md
+++ b/src/group-theory/free-groups-with-one-generator.lagda.md
@@ -10,16 +10,13 @@ module group-theory.free-groups-with-one-generator where
open import elementary-number-theory.addition-integers
open import elementary-number-theory.group-of-integers
open import elementary-number-theory.integers
-open import elementary-number-theory.natural-numbers
open import foundation.action-on-identifications-functions
open import foundation.contractible-maps
open import foundation.contractible-types
-open import foundation.coproduct-types
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.identity-types
-open import foundation.iterating-automorphisms
open import foundation.sets
open import foundation.subtypes
open import foundation.universe-levels
diff --git a/src/group-theory/images-of-group-homomorphisms.lagda.md b/src/group-theory/images-of-group-homomorphisms.lagda.md
index 420c28599e..c8bde8b2fa 100644
--- a/src/group-theory/images-of-group-homomorphisms.lagda.md
+++ b/src/group-theory/images-of-group-homomorphisms.lagda.md
@@ -7,13 +7,11 @@ module group-theory.images-of-group-homomorphisms where
Imports
```agda
-open import foundation.commuting-triangles-of-maps
open import foundation.dependent-pair-types
open import foundation.identity-types
open import foundation.images
open import foundation.logical-equivalences
open import foundation.propositional-truncations
-open import foundation.surjective-maps
open import foundation.universal-property-image
open import foundation.universe-levels
diff --git a/src/group-theory/integer-multiples-of-elements-abelian-groups.lagda.md b/src/group-theory/integer-multiples-of-elements-abelian-groups.lagda.md
index 3251509447..8520bd3ff2 100644
--- a/src/group-theory/integer-multiples-of-elements-abelian-groups.lagda.md
+++ b/src/group-theory/integer-multiples-of-elements-abelian-groups.lagda.md
@@ -13,19 +13,14 @@ open import elementary-number-theory.multiplication-integers
open import elementary-number-theory.natural-numbers
open import foundation.action-on-identifications-functions
-open import foundation.coproduct-types
open import foundation.dependent-pair-types
open import foundation.identity-types
-open import foundation.iterating-automorphisms
open import foundation.universe-levels
open import group-theory.abelian-groups
open import group-theory.homomorphisms-abelian-groups
open import group-theory.integer-powers-of-elements-groups
open import group-theory.multiples-of-elements-abelian-groups
-
-open import structured-types.initial-pointed-type-equipped-with-automorphism
-open import structured-types.pointed-types-equipped-with-automorphisms
```
diff --git a/src/group-theory/integer-powers-of-elements-groups.lagda.md b/src/group-theory/integer-powers-of-elements-groups.lagda.md
index c82108f187..5315782812 100644
--- a/src/group-theory/integer-powers-of-elements-groups.lagda.md
+++ b/src/group-theory/integer-powers-of-elements-groups.lagda.md
@@ -16,7 +16,6 @@ open import foundation.action-on-identifications-functions
open import foundation.coproduct-types
open import foundation.identity-types
open import foundation.iterating-automorphisms
-open import foundation.unit-type
open import foundation.universe-levels
open import group-theory.commuting-elements-groups
diff --git a/src/group-theory/multiples-of-elements-abelian-groups.lagda.md b/src/group-theory/multiples-of-elements-abelian-groups.lagda.md
index 7423a3fc0c..e2f024ab58 100644
--- a/src/group-theory/multiples-of-elements-abelian-groups.lagda.md
+++ b/src/group-theory/multiples-of-elements-abelian-groups.lagda.md
@@ -7,25 +7,15 @@ module group-theory.multiples-of-elements-abelian-groups where
Imports
```agda
-open import elementary-number-theory.addition-integers
open import elementary-number-theory.addition-natural-numbers
-open import elementary-number-theory.integers
open import elementary-number-theory.multiplication-natural-numbers
open import elementary-number-theory.natural-numbers
-open import foundation.action-on-identifications-functions
-open import foundation.coproduct-types
-open import foundation.dependent-pair-types
open import foundation.identity-types
-open import foundation.iterating-automorphisms
open import foundation.universe-levels
open import group-theory.abelian-groups
-open import group-theory.groups
-open import group-theory.homomorphisms-abelian-groups
open import group-theory.powers-of-elements-groups
-
-open import structured-types.initial-pointed-type-equipped-with-automorphism
```
diff --git a/src/group-theory/powers-of-elements-groups.lagda.md b/src/group-theory/powers-of-elements-groups.lagda.md
index 2b55097976..e0583295d3 100644
--- a/src/group-theory/powers-of-elements-groups.lagda.md
+++ b/src/group-theory/powers-of-elements-groups.lagda.md
@@ -7,26 +7,17 @@ module group-theory.powers-of-elements-groups where
Imports
```agda
-open import elementary-number-theory.addition-integers
open import elementary-number-theory.addition-natural-numbers
-open import elementary-number-theory.integers
open import elementary-number-theory.multiplication-natural-numbers
open import elementary-number-theory.natural-numbers
-open import foundation.action-on-identifications-functions
-open import foundation.coproduct-types
-open import foundation.dependent-pair-types
open import foundation.identity-types
-open import foundation.iterating-automorphisms
-open import foundation.unit-type
open import foundation.universe-levels
open import group-theory.commuting-elements-groups
open import group-theory.groups
open import group-theory.homomorphisms-groups
open import group-theory.powers-of-elements-monoids
-
-open import structured-types.initial-pointed-type-equipped-with-automorphism
```
diff --git a/src/group-theory/subgroups-generated-by-elements-groups.lagda.md b/src/group-theory/subgroups-generated-by-elements-groups.lagda.md
index 71fbafefa0..e03f34a3a7 100644
--- a/src/group-theory/subgroups-generated-by-elements-groups.lagda.md
+++ b/src/group-theory/subgroups-generated-by-elements-groups.lagda.md
@@ -9,15 +9,12 @@ module group-theory.subgroups-generated-by-elements-groups where
```agda
open import elementary-number-theory.group-of-integers
open import elementary-number-theory.integers
-open import elementary-number-theory.natural-numbers
-open import foundation.coproduct-types
open import foundation.dependent-pair-types
open import foundation.identity-types
open import foundation.logical-equivalences
open import foundation.singleton-subtypes
open import foundation.subtypes
-open import foundation.unit-type
open import foundation.universe-levels
open import group-theory.free-groups-with-one-generator
diff --git a/src/higher-group-theory/cyclic-higher-groups.lagda.md b/src/higher-group-theory/cyclic-higher-groups.lagda.md
index fe27880197..8870924523 100644
--- a/src/higher-group-theory/cyclic-higher-groups.lagda.md
+++ b/src/higher-group-theory/cyclic-higher-groups.lagda.md
@@ -14,9 +14,6 @@ open import foundation.universe-levels
open import higher-group-theory.higher-groups
open import higher-group-theory.homomorphisms-higher-groups
-
-open import synthetic-homotopy-theory.functoriality-loop-spaces
-open import synthetic-homotopy-theory.loop-spaces
```
diff --git a/src/orthogonal-factorization-systems/local-families.lagda.md b/src/orthogonal-factorization-systems/local-families.lagda.md
index fa92bac793..7fcf5faa64 100644
--- a/src/orthogonal-factorization-systems/local-families.lagda.md
+++ b/src/orthogonal-factorization-systems/local-families.lagda.md
@@ -7,27 +7,10 @@ module orthogonal-factorization-systems.local-families where
Imports
```agda
-open import foundation.action-on-identifications-functions
-open import foundation.contractible-maps
-open import foundation.contractible-types
open import foundation.dependent-pair-types
-open import foundation.empty-types
open import foundation.equivalences
-open import foundation.fibers-of-maps
-open import foundation.function-extensionality
open import foundation.function-types
-open import foundation.functoriality-dependent-function-types
-open import foundation.functoriality-dependent-pair-types
-open import foundation.functoriality-function-types
-open import foundation.identity-types
open import foundation.propositions
-open import foundation.retractions
-open import foundation.sections
-open import foundation.transport-along-identifications
-open import foundation.type-arithmetic-dependent-function-types
-open import foundation.type-arithmetic-unit-type
-open import foundation.unit-type
-open import foundation.universal-property-empty-type
open import foundation.universe-levels
open import orthogonal-factorization-systems.local-types
diff --git a/src/orthogonal-factorization-systems/local-maps.lagda.md b/src/orthogonal-factorization-systems/local-maps.lagda.md
index 14a6b71b46..414018dfb5 100644
--- a/src/orthogonal-factorization-systems/local-maps.lagda.md
+++ b/src/orthogonal-factorization-systems/local-maps.lagda.md
@@ -7,31 +7,11 @@ module orthogonal-factorization-systems.local-maps where
Imports
```agda
-open import foundation.action-on-identifications-functions
-open import foundation.contractible-maps
-open import foundation.contractible-types
-open import foundation.dependent-pair-types
-open import foundation.empty-types
-open import foundation.equivalences
open import foundation.fibers-of-maps
-open import foundation.function-extensionality
-open import foundation.function-types
-open import foundation.functoriality-dependent-function-types
-open import foundation.functoriality-dependent-pair-types
-open import foundation.functoriality-function-types
-open import foundation.identity-types
open import foundation.propositions
-open import foundation.retractions
-open import foundation.sections
-open import foundation.transport-along-identifications
-open import foundation.type-arithmetic-dependent-function-types
-open import foundation.type-arithmetic-unit-type
-open import foundation.unit-type
-open import foundation.universal-property-empty-type
open import foundation.universe-levels
open import orthogonal-factorization-systems.local-families
-open import orthogonal-factorization-systems.local-types
```
diff --git a/src/ring-theory/category-of-rings.lagda.md b/src/ring-theory/category-of-rings.lagda.md
index b947694e21..864f8110f8 100644
--- a/src/ring-theory/category-of-rings.lagda.md
+++ b/src/ring-theory/category-of-rings.lagda.md
@@ -10,7 +10,6 @@ module ring-theory.category-of-rings where
open import category-theory.categories
open import category-theory.large-categories
-open import foundation.fundamental-theorem-of-identity-types
open import foundation.universe-levels
open import ring-theory.isomorphisms-rings
diff --git a/src/ring-theory/integer-multiples-of-elements-rings.lagda.md b/src/ring-theory/integer-multiples-of-elements-rings.lagda.md
index 5f2d652de3..aefe4acb6d 100644
--- a/src/ring-theory/integer-multiples-of-elements-rings.lagda.md
+++ b/src/ring-theory/integer-multiples-of-elements-rings.lagda.md
@@ -16,7 +16,6 @@ open import foundation.action-on-identifications-functions
open import foundation.coproduct-types
open import foundation.identity-types
open import foundation.transport-along-identifications
-open import foundation.unit-type
open import foundation.universe-levels
open import group-theory.homomorphisms-abelian-groups
diff --git a/src/ring-theory/isomorphisms-rings.lagda.md b/src/ring-theory/isomorphisms-rings.lagda.md
index f36a5fb094..aeff4276e6 100644
--- a/src/ring-theory/isomorphisms-rings.lagda.md
+++ b/src/ring-theory/isomorphisms-rings.lagda.md
@@ -10,7 +10,6 @@ module ring-theory.isomorphisms-rings where
open import category-theory.isomorphisms-large-precategories
open import foundation.action-on-identifications-functions
-open import foundation.cartesian-product-types
open import foundation.contractible-types
open import foundation.dependent-pair-types
open import foundation.equality-dependent-function-types
@@ -21,7 +20,6 @@ open import foundation.fundamental-theorem-of-identity-types
open import foundation.homotopies
open import foundation.identity-types
open import foundation.propositions
-open import foundation.sets
open import foundation.structure-identity-principle
open import foundation.subtype-identity-principle
open import foundation.subtypes
diff --git a/src/ring-theory/powers-of-elements-semirings.lagda.md b/src/ring-theory/powers-of-elements-semirings.lagda.md
index d85e2984a0..ca2f29b47c 100644
--- a/src/ring-theory/powers-of-elements-semirings.lagda.md
+++ b/src/ring-theory/powers-of-elements-semirings.lagda.md
@@ -11,7 +11,6 @@ open import elementary-number-theory.addition-natural-numbers
open import elementary-number-theory.multiplication-natural-numbers
open import elementary-number-theory.natural-numbers
-open import foundation.action-on-identifications-functions
open import foundation.identity-types
open import foundation.universe-levels
diff --git a/src/synthetic-homotopy-theory/dependent-suspension-structures.lagda.md b/src/synthetic-homotopy-theory/dependent-suspension-structures.lagda.md
index a2096ced2b..e113b5a80e 100644
--- a/src/synthetic-homotopy-theory/dependent-suspension-structures.lagda.md
+++ b/src/synthetic-homotopy-theory/dependent-suspension-structures.lagda.md
@@ -7,12 +7,9 @@ module synthetic-homotopy-theory.dependent-suspension-structures where
Imports
```agda
-open import foundation.action-on-identifications-dependent-functions
open import foundation.action-on-identifications-functions
open import foundation.commuting-squares-of-identifications
-open import foundation.commuting-squares-of-maps
open import foundation.constant-maps
-open import foundation.contractible-types
open import foundation.dependent-identifications
open import foundation.dependent-pair-types
open import foundation.equivalences
@@ -20,25 +17,16 @@ open import foundation.function-extensionality
open import foundation.function-types
open import foundation.functoriality-dependent-pair-types
open import foundation.homotopies
-open import foundation.identity-systems
open import foundation.identity-types
open import foundation.injective-maps
open import foundation.structure-identity-principle
open import foundation.transport-along-identifications
-open import foundation.type-arithmetic-dependent-pair-types
open import foundation.unit-type
open import foundation.universal-property-unit-type
open import foundation.universe-levels
-open import synthetic-homotopy-theory.cocones-under-spans
-open import synthetic-homotopy-theory.conjugation-loops
open import synthetic-homotopy-theory.dependent-cocones-under-spans
-open import synthetic-homotopy-theory.dependent-universal-property-pushouts
-open import synthetic-homotopy-theory.functoriality-loop-spaces
-open import synthetic-homotopy-theory.loop-spaces
-open import synthetic-homotopy-theory.pushouts
open import synthetic-homotopy-theory.suspension-structures
-open import synthetic-homotopy-theory.universal-property-pushouts
```
diff --git a/src/synthetic-homotopy-theory/dependent-universal-property-suspensions.lagda.md b/src/synthetic-homotopy-theory/dependent-universal-property-suspensions.lagda.md
index fd85921d9e..e4b40dc9c1 100644
--- a/src/synthetic-homotopy-theory/dependent-universal-property-suspensions.lagda.md
+++ b/src/synthetic-homotopy-theory/dependent-universal-property-suspensions.lagda.md
@@ -8,39 +8,17 @@ module synthetic-homotopy-theory.dependent-universal-property-suspensions where
```agda
open import foundation.action-on-identifications-dependent-functions
-open import foundation.action-on-identifications-functions
-open import foundation.commuting-squares-of-identifications
-open import foundation.commuting-squares-of-maps
open import foundation.constant-maps
-open import foundation.contractible-types
-open import foundation.dependent-identifications
open import foundation.dependent-pair-types
open import foundation.equivalences
-open import foundation.function-extensionality
open import foundation.function-types
-open import foundation.functoriality-dependent-pair-types
open import foundation.homotopies
-open import foundation.identity-systems
-open import foundation.identity-types
-open import foundation.structure-identity-principle
-open import foundation.transport-along-identifications
-open import foundation.type-arithmetic-dependent-pair-types
open import foundation.unit-type
-open import foundation.universal-property-unit-type
open import foundation.universe-levels
-open import structured-types.pointed-equivalences
-open import structured-types.pointed-maps
-open import structured-types.pointed-types
-
-open import synthetic-homotopy-theory.cocones-under-spans
open import synthetic-homotopy-theory.dependent-cocones-under-spans
open import synthetic-homotopy-theory.dependent-suspension-structures
-open import synthetic-homotopy-theory.dependent-universal-property-pushouts
-open import synthetic-homotopy-theory.pushouts
open import synthetic-homotopy-theory.suspension-structures
-open import synthetic-homotopy-theory.universal-property-pushouts
-open import synthetic-homotopy-theory.universal-property-suspensions
```
diff --git a/src/synthetic-homotopy-theory/descent-circle-dependent-pair-types.lagda.md b/src/synthetic-homotopy-theory/descent-circle-dependent-pair-types.lagda.md
index e0cc330f78..412d79e16b 100644
--- a/src/synthetic-homotopy-theory/descent-circle-dependent-pair-types.lagda.md
+++ b/src/synthetic-homotopy-theory/descent-circle-dependent-pair-types.lagda.md
@@ -9,7 +9,6 @@ module synthetic-homotopy-theory.descent-circle-dependent-pair-types where
```agda
open import foundation.dependent-pair-types
open import foundation.equality-dependent-pair-types
-open import foundation.equivalences
open import foundation.functoriality-dependent-pair-types
open import foundation.identity-types
open import foundation.universe-levels
diff --git a/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md b/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md
index 26b8f2b799..885cc7d9e8 100644
--- a/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md
+++ b/src/synthetic-homotopy-theory/descent-circle-function-types.lagda.md
@@ -149,12 +149,13 @@ module _
( equiv-inv-htpy
( map-aut-family-with-descent-data-circle B ∘ h)
( h ∘ map-aut-family-with-descent-data-circle A)) ∘e
- ( ( inv-equiv
- ( equiv-coherence-triangle-maps-inv-top
- ( map-aut-family-with-descent-data-circle B ∘ h)
- ( h)
- ( aut-family-with-descent-data-circle A))) ∘e
- ( equiv-funext)))
+ ( inv-equiv
+ ( equiv-coherence-triangle-maps-inv-top
+ ( map-aut-family-with-descent-data-circle B ∘ h)
+ ( h)
+ ( aut-family-with-descent-data-circle A))) ∘e
+ ( equiv-inv-htpy _ _) ∘e
+ ( equiv-funext))
equiv-ev-descent-data-circle-function-type-hom :
dependent-universal-property-circle (l2 ⊔ l3) l →
diff --git a/src/synthetic-homotopy-theory/pullback-property-pushouts.lagda.md b/src/synthetic-homotopy-theory/pullback-property-pushouts.lagda.md
index 41ccd22018..7b328268d2 100644
--- a/src/synthetic-homotopy-theory/pullback-property-pushouts.lagda.md
+++ b/src/synthetic-homotopy-theory/pullback-property-pushouts.lagda.md
@@ -11,7 +11,6 @@ open import foundation.commuting-squares-of-maps
open import foundation.cones-over-cospans
open import foundation.dependent-pair-types
open import foundation.function-types
-open import foundation.functoriality-function-types
open import foundation.pullbacks
open import foundation.universe-levels
diff --git a/src/synthetic-homotopy-theory/suspension-structures.lagda.md b/src/synthetic-homotopy-theory/suspension-structures.lagda.md
index 51084e96be..3e73a38685 100644
--- a/src/synthetic-homotopy-theory/suspension-structures.lagda.md
+++ b/src/synthetic-homotopy-theory/suspension-structures.lagda.md
@@ -7,15 +7,10 @@ module synthetic-homotopy-theory.suspension-structures where
Imports
```agda
-open import foundation.action-on-identifications-dependent-functions
open import foundation.action-on-identifications-functions
-open import foundation.commuting-squares-of-identifications
-open import foundation.commuting-squares-of-maps
open import foundation.constant-maps
open import foundation.contractible-types
-open import foundation.dependent-identifications
open import foundation.dependent-pair-types
-open import foundation.embeddings
open import foundation.equivalences
open import foundation.function-extensionality
open import foundation.function-types
@@ -25,22 +20,11 @@ open import foundation.identity-systems
open import foundation.identity-types
open import foundation.injective-maps
open import foundation.structure-identity-principle
-open import foundation.transport-along-identifications
-open import foundation.type-arithmetic-dependent-pair-types
open import foundation.unit-type
open import foundation.universal-property-unit-type
open import foundation.universe-levels
-open import structured-types.pointed-equivalences
-open import structured-types.pointed-maps
-open import structured-types.pointed-types
-
open import synthetic-homotopy-theory.cocones-under-spans
-open import synthetic-homotopy-theory.dependent-cocones-under-spans
-open import synthetic-homotopy-theory.dependent-universal-property-pushouts
-open import synthetic-homotopy-theory.loop-spaces
-open import synthetic-homotopy-theory.pushouts
-open import synthetic-homotopy-theory.universal-property-pushouts
```
@@ -259,7 +243,7 @@ module _
P c' H)
ind-htpy-suspension-structure P =
pr1
- ( Ind-identity-system
+ ( is-identity-system-is-torsorial
( c)
( refl-htpy-suspension-structure)
( is-contr-equiv
diff --git a/src/synthetic-homotopy-theory/suspensions-of-pointed-types.lagda.md b/src/synthetic-homotopy-theory/suspensions-of-pointed-types.lagda.md
index 66d7735858..b6959c312d 100644
--- a/src/synthetic-homotopy-theory/suspensions-of-pointed-types.lagda.md
+++ b/src/synthetic-homotopy-theory/suspensions-of-pointed-types.lagda.md
@@ -7,43 +7,16 @@ module synthetic-homotopy-theory.suspensions-of-pointed-types where
Imports
```agda
-open import foundation.action-on-identifications-dependent-functions
-open import foundation.action-on-identifications-functions
-open import foundation.commuting-squares-of-identifications
-open import foundation.commuting-squares-of-maps
open import foundation.constant-maps
-open import foundation.contractible-types
-open import foundation.dependent-identifications
open import foundation.dependent-pair-types
-open import foundation.equivalences
-open import foundation.function-extensionality
-open import foundation.function-types
-open import foundation.functoriality-dependent-pair-types
-open import foundation.homotopies
-open import foundation.identity-systems
open import foundation.identity-types
-open import foundation.structure-identity-principle
-open import foundation.transport-along-identifications
-open import foundation.type-arithmetic-dependent-pair-types
-open import foundation.unit-type
-open import foundation.universal-property-unit-type
open import foundation.universe-levels
-open import structured-types.pointed-equivalences
-open import structured-types.pointed-maps
open import structured-types.pointed-types
-open import synthetic-homotopy-theory.cocones-under-spans
-open import synthetic-homotopy-theory.dependent-cocones-under-spans
-open import synthetic-homotopy-theory.dependent-suspension-structures
-open import synthetic-homotopy-theory.dependent-universal-property-pushouts
-open import synthetic-homotopy-theory.dependent-universal-property-suspensions
open import synthetic-homotopy-theory.loop-spaces
-open import synthetic-homotopy-theory.pushouts
open import synthetic-homotopy-theory.suspension-structures
open import synthetic-homotopy-theory.suspensions-of-types
-open import synthetic-homotopy-theory.universal-property-pushouts
-open import synthetic-homotopy-theory.universal-property-suspensions
```
diff --git a/src/synthetic-homotopy-theory/suspensions-of-types.lagda.md b/src/synthetic-homotopy-theory/suspensions-of-types.lagda.md
index 517d08df40..1c37e70746 100644
--- a/src/synthetic-homotopy-theory/suspensions-of-types.lagda.md
+++ b/src/synthetic-homotopy-theory/suspensions-of-types.lagda.md
@@ -10,29 +10,21 @@ module synthetic-homotopy-theory.suspensions-of-types where
open import foundation.action-on-identifications-dependent-functions
open import foundation.action-on-identifications-functions
open import foundation.commuting-squares-of-identifications
-open import foundation.commuting-squares-of-maps
open import foundation.constant-maps
open import foundation.contractible-types
-open import foundation.dependent-identifications
open import foundation.dependent-pair-types
open import foundation.equivalences
-open import foundation.function-extensionality
open import foundation.function-types
open import foundation.functoriality-dependent-function-types
open import foundation.functoriality-dependent-pair-types
open import foundation.homotopies
-open import foundation.identity-systems
open import foundation.identity-types
-open import foundation.structure-identity-principle
open import foundation.transport-along-identifications
-open import foundation.type-arithmetic-dependent-pair-types
open import foundation.unit-type
-open import foundation.universal-property-unit-type
open import foundation.universe-levels
open import synthetic-homotopy-theory.dependent-cocones-under-spans
open import synthetic-homotopy-theory.dependent-suspension-structures
-open import synthetic-homotopy-theory.dependent-universal-property-pushouts
open import synthetic-homotopy-theory.dependent-universal-property-suspensions
open import synthetic-homotopy-theory.pushouts
open import synthetic-homotopy-theory.suspension-structures
diff --git a/src/synthetic-homotopy-theory/universal-cover-circle.lagda.md b/src/synthetic-homotopy-theory/universal-cover-circle.lagda.md
index 940f31faf7..9c3de244af 100644
--- a/src/synthetic-homotopy-theory/universal-cover-circle.lagda.md
+++ b/src/synthetic-homotopy-theory/universal-cover-circle.lagda.md
@@ -12,7 +12,6 @@ open import elementary-number-theory.universal-property-integers
open import foundation.action-on-identifications-dependent-functions
open import foundation.action-on-identifications-functions
-open import foundation.cartesian-product-types
open import foundation.commuting-squares-of-maps
open import foundation.contractible-types
open import foundation.dependent-identifications
@@ -28,7 +27,6 @@ open import foundation.homotopies
open import foundation.identity-types
open import foundation.raising-universe-levels
open import foundation.sets
-open import foundation.structure-identity-principle
open import foundation.transport-along-identifications
open import foundation.truncated-types
open import foundation.truncation-levels
diff --git a/src/synthetic-homotopy-theory/universal-property-suspensions-of-pointed-types.lagda.md b/src/synthetic-homotopy-theory/universal-property-suspensions-of-pointed-types.lagda.md
index aa892fc08a..38ab886c89 100644
--- a/src/synthetic-homotopy-theory/universal-property-suspensions-of-pointed-types.lagda.md
+++ b/src/synthetic-homotopy-theory/universal-property-suspensions-of-pointed-types.lagda.md
@@ -7,46 +7,23 @@ module synthetic-homotopy-theory.universal-property-suspensions-of-pointed-types
Imports
```agda
-open import foundation.action-on-identifications-dependent-functions
-open import foundation.action-on-identifications-functions
-open import foundation.commuting-squares-of-identifications
-open import foundation.commuting-squares-of-maps
-open import foundation.constant-maps
open import foundation.contractible-types
-open import foundation.dependent-identifications
open import foundation.dependent-pair-types
open import foundation.equivalences
-open import foundation.function-extensionality
open import foundation.function-types
open import foundation.functoriality-dependent-pair-types
-open import foundation.homotopies
-open import foundation.identity-systems
open import foundation.identity-types
-open import foundation.structure-identity-principle
-open import foundation.transport-along-identifications
open import foundation.type-arithmetic-dependent-pair-types
-open import foundation.unit-type
-open import foundation.universal-property-unit-type
open import foundation.universe-levels
open import structured-types.pointed-equivalences
open import structured-types.pointed-maps
open import structured-types.pointed-types
-open import synthetic-homotopy-theory.cocones-under-spans
-open import synthetic-homotopy-theory.conjugation-loops
-open import synthetic-homotopy-theory.dependent-cocones-under-spans
-open import synthetic-homotopy-theory.dependent-suspension-structures
-open import synthetic-homotopy-theory.dependent-universal-property-pushouts
-open import synthetic-homotopy-theory.dependent-universal-property-suspensions
open import synthetic-homotopy-theory.functoriality-loop-spaces
open import synthetic-homotopy-theory.loop-spaces
-open import synthetic-homotopy-theory.pushouts
-open import synthetic-homotopy-theory.suspension-structures
open import synthetic-homotopy-theory.suspensions-of-pointed-types
open import synthetic-homotopy-theory.suspensions-of-types
-open import synthetic-homotopy-theory.universal-property-pushouts
-open import synthetic-homotopy-theory.universal-property-suspensions
```
diff --git a/src/synthetic-homotopy-theory/universal-property-suspensions.lagda.md b/src/synthetic-homotopy-theory/universal-property-suspensions.lagda.md
index a8a1066c3b..af2d5a2e74 100644
--- a/src/synthetic-homotopy-theory/universal-property-suspensions.lagda.md
+++ b/src/synthetic-homotopy-theory/universal-property-suspensions.lagda.md
@@ -7,34 +7,17 @@ module synthetic-homotopy-theory.universal-property-suspensions where
Imports
```agda
-open import foundation.action-on-identifications-dependent-functions
-open import foundation.action-on-identifications-functions
-open import foundation.commuting-squares-of-identifications
-open import foundation.commuting-squares-of-maps
open import foundation.constant-maps
-open import foundation.contractible-types
-open import foundation.dependent-identifications
open import foundation.dependent-pair-types
open import foundation.equivalences
-open import foundation.function-extensionality
open import foundation.function-types
-open import foundation.functoriality-dependent-pair-types
open import foundation.homotopies
-open import foundation.identity-systems
open import foundation.identity-types
-open import foundation.structure-identity-principle
-open import foundation.transport-along-identifications
-open import foundation.type-arithmetic-dependent-pair-types
open import foundation.unit-type
-open import foundation.universal-property-unit-type
open import foundation.universe-levels
open import foundation.whiskering-homotopies
open import synthetic-homotopy-theory.cocones-under-spans
-open import synthetic-homotopy-theory.dependent-cocones-under-spans
-open import synthetic-homotopy-theory.dependent-suspension-structures
-open import synthetic-homotopy-theory.dependent-universal-property-pushouts
-open import synthetic-homotopy-theory.pushouts
open import synthetic-homotopy-theory.suspension-structures
open import synthetic-homotopy-theory.universal-property-pushouts
```
diff --git a/src/univalent-combinatorics/pigeonhole-principle.lagda.md b/src/univalent-combinatorics/pigeonhole-principle.lagda.md
index 4324e51af9..0e822632fb 100644
--- a/src/univalent-combinatorics/pigeonhole-principle.lagda.md
+++ b/src/univalent-combinatorics/pigeonhole-principle.lagda.md
@@ -17,7 +17,6 @@ open import foundation.embeddings
open import foundation.empty-types
open import foundation.equivalences
open import foundation.function-types
-open import foundation.homotopies
open import foundation.identity-types
open import foundation.injective-maps
open import foundation.negation