# Coherently invertible maps

```agda
module foundation.coherently-invertible-maps where

open import foundation-core.coherently-invertible-maps public
```

<details><summary>Imports</summary>

```agda
open import foundation.action-on-identifications-functions
open import foundation.equivalences
open import foundation.identity-types
open import foundation.logical-equivalences
open import foundation.type-arithmetic-dependent-pair-types
open import foundation.universe-levels

open import foundation-core.contractible-maps
open import foundation-core.contractible-types
open import foundation-core.fibers-of-maps
open import foundation-core.functoriality-dependent-pair-types
open import foundation-core.propositions
open import foundation-core.sections
open import foundation-core.type-theoretic-principle-of-choice
```

</details>

## Properties

### Coherently invertible maps have a contractible type of sections

**Proof:** Since coherently invertible maps are
[contractible maps](foundation.contractible-maps.md), and products of
[contractible types](foundation-core.contractible-types.md) are contractible, it
follows that the type

```text
  (b : B) → fiber f b
```

is contractible, for any coherently invertible map `f`. However, by the
[type theoretic principle of choice](foundation.type-theoretic-principle-of-choice.md)
it follows that this type is equivalent to the type

```text
  Σ (B → A) (λ g → (b : B) → f (g b) = b),
```

which is the type of [sections](foundation.sections.md) of `f`.

```agda
module _
  {l1 l2 : Level} {A : UU l1} {B : UU l2}
  where

  abstract
    is-contr-section-is-coherently-invertible :
      {f : A  B}  is-coherently-invertible f  is-contr (section f)
    is-contr-section-is-coherently-invertible {f} F =
      is-contr-equiv'
        ( (b : B)  fiber f b)
        ( distributive-Π-Σ)
        ( is-contr-Π (is-contr-map-is-coherently-invertible F))
```

### Being coherently invertible is a property

```agda
module _
  {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A  B)
  where

  abstract
    is-proof-irrelevant-is-coherently-invertible :
      is-proof-irrelevant (is-coherently-invertible f)
    is-proof-irrelevant-is-coherently-invertible H =
      is-contr-equiv'
        ( _)
        ( associative-Σ _ _ _)
        ( is-contr-Σ
          ( is-contr-section-is-coherently-invertible H)
          ( section-is-coherently-invertible H)
          ( is-contr-equiv'
            ( _)
            ( distributive-Π-Σ)
            ( is-contr-Π
              ( λ x 
                is-contr-equiv'
                  ( _)
                  ( equiv-tot
                    ( λ p 
                      equiv-inv
                        ( ap f p)
                        ( is-section-map-inv-is-coherently-invertible H (f x))))
                  ( is-contr-map-is-coherently-invertible
                    ( is-coherently-invertible-ap-is-coherently-invertible H)
                    ( is-section-map-inv-is-coherently-invertible H (f x)))))))

  abstract
    is-prop-is-coherently-invertible : is-prop (is-coherently-invertible f)
    is-prop-is-coherently-invertible =
      is-prop-is-proof-irrelevant is-proof-irrelevant-is-coherently-invertible

  abstract
    is-equiv-is-coherently-invertible-is-equiv :
      is-equiv (is-coherently-invertible-is-equiv {f = f})
    is-equiv-is-coherently-invertible-is-equiv =
      is-equiv-has-converse-is-prop
        ( is-property-is-equiv f)
        ( is-prop-is-coherently-invertible)
        ( is-equiv-is-coherently-invertible)
```

### Being transpose coherently invertible is a property

This remains to be formalized.

## References

{{#bibliography}} {{#reference UF13}}

## See also

- For the notion of biinvertible maps see
  [`foundation.equivalences`](foundation.equivalences.md).
- For the notion of maps with contractible fibers see
  [`foundation.contractible-maps`](foundation.contractible-maps.md).
- For the notion of path-split maps see
  [`foundation.path-split-maps`](foundation.path-split-maps.md).