# Localizations at subuniverses
```agda
module orthogonal-factorization-systems.localizations-subuniverses where
```
<details><summary>Imports</summary>
```agda
open import foundation.cartesian-product-types
open import foundation.dependent-pair-types
open import foundation.subuniverses
open import foundation.universe-levels
open import orthogonal-factorization-systems.local-types
```
</details>
## Idea
Let `P` be a [subuniverse](foundation.subuniverses.md). Given a type `X`, its
**localization** at `P`, or **`P`-localization**, is a type `Y` in `P` and a map
`η : X → Y` such that every type in `P` is
`η`[-local](orthogonal-factorization-systems.local-types.md). I.e. for every `Z`
in `P`, the [precomposition map](foundation-core.function-types.md)
```text
_∘ η : (Y → Z) → (X → Z)
```
is an [equivalence](foundation-core.equivalences.md).
## Definition
### The predicate of being a localization at a subuniverse
```agda
is-subuniverse-localization :
{l1 l2 lP : Level} (P : subuniverse l1 lP) →
UU l2 → UU l1 → UU (lsuc l1 ⊔ l2 ⊔ lP)
is-subuniverse-localization {l1} {l2} P X Y =
( is-in-subuniverse P Y) ×
( Σ ( X → Y)
( λ η → (Z : UU l1) → is-in-subuniverse P Z → is-local η Z))
```
```agda
module _
{l1 l2 lP : Level} (P : subuniverse l1 lP) {X : UU l2} {Y : UU l1}
(is-localization-Y : is-subuniverse-localization P X Y)
where
is-in-subuniverse-is-subuniverse-localization : is-in-subuniverse P Y
is-in-subuniverse-is-subuniverse-localization = pr1 is-localization-Y
unit-is-subuniverse-localization : X → Y
unit-is-subuniverse-localization = pr1 (pr2 is-localization-Y)
is-local-at-unit-is-in-subuniverse-is-subuniverse-localization :
(Z : UU l1) → is-in-subuniverse P Z →
is-local unit-is-subuniverse-localization Z
is-local-at-unit-is-in-subuniverse-is-subuniverse-localization =
pr2 (pr2 is-localization-Y)
```
### The type of localizations at a subuniverse
```agda
subuniverse-localization :
{l1 l2 lP : Level} (P : subuniverse l1 lP) → UU l2 → UU (lsuc l1 ⊔ l2 ⊔ lP)
subuniverse-localization {l1} P X = Σ (UU l1) (is-subuniverse-localization P X)
```
```agda
module _
{l1 l2 lP : Level} (P : subuniverse l1 lP)
{X : UU l2} (L : subuniverse-localization P X)
where
type-subuniverse-localization : UU l1
type-subuniverse-localization = pr1 L
is-subuniverse-localization-subuniverse-localization :
is-subuniverse-localization P X type-subuniverse-localization
is-subuniverse-localization-subuniverse-localization = pr2 L
is-in-subuniverse-subuniverse-localization :
is-in-subuniverse P type-subuniverse-localization
is-in-subuniverse-subuniverse-localization =
is-in-subuniverse-is-subuniverse-localization P
( is-subuniverse-localization-subuniverse-localization)
unit-subuniverse-localization : X → type-subuniverse-localization
unit-subuniverse-localization =
unit-is-subuniverse-localization P
( is-subuniverse-localization-subuniverse-localization)
is-local-at-unit-is-in-subuniverse-subuniverse-localization :
(Z : UU l1) →
is-in-subuniverse P Z → is-local unit-subuniverse-localization Z
is-local-at-unit-is-in-subuniverse-subuniverse-localization =
is-local-at-unit-is-in-subuniverse-is-subuniverse-localization P
( is-subuniverse-localization-subuniverse-localization)
```
## Properties
### There is at most one `P`-localization
This is Proposition 5.1.2 in _Classifying Types_, and remains to be formalized.
## See also
- [Localizations at maps](orthogonal-factorization-systems.localizations-maps.md)
## References
{{#bibliography}} {{#reference RSS20}} {{#reference Rij19}}