Quasi-inverses

Table of Contents

1 Quasi-inverses

module Lib.Data.QInv where

This file defines the notion of quasi-inverses, that is, map that have an inverse, and provides accessors to the data-structure.

1.1 Packages imports

The imported packages can be accessed via the following links:

import Stdlib.Prelude
import Lib.Data.Map

1.2 Definition

A map f : A → B has an inverse if there exists g : B → A such that f \circ g ~ id B and g \circ f ~ id A. As such, the type of a quasi-inverse is a triple (g, \alpha, \beta) where \alpha and \beta are the two homotopies verifying that g is indeed an inverse of f.

has-inverse (A B : U) (f : A  B) : U =
  Σ (B  A) (λg. (Htpy B (λ_. B) (map/comp B A B f g) (id B)) *
                    (Htpy A (λ_. A) (map/comp A B A g f) (id A)))

1.3 Accessors

QInv/map (A B : U) (f : A  B) (i : has-inverse A B f) : B  A =
  i.1

QInv/right-htpy (A B : U) (f : A  B) (i : has-inverse A B f) : Htpy B (λ_. B) (map/comp B A B f (QInv/map A B f i)) (id B) =
  i.2.1

QInv/left-htpy (A B : U) (f : A  B) (i : has-inverse A B f) : Htpy A (λ_. A) (map/comp A B A (QInv/map A B f i) f) (id A) =
  i.2.2

Author: Johann Rosain

Created: 2024-07-23 Tue 13:52

Validate