Σ-types Properties

Table of Contents

1 Σ Properties

module Lib.Prop.Σ where

This file proves some useful basic facts on Σ-types.

1.1 Packages imports

The imported packages can be accessed via the following links:

import Stdlib.Prelude
import Lib.Prop.Paths

1.2 Induction principle

ind-Σ (A : U) (B : A  U) (P : Σ A B  U) (g : (x : A) (y : B x)  P(x, y)) : (z : Σ A B)  P z =
  λz. g z.1 z.2

1.3 Accessors

pr1 (A : U) (B : A  U) (u : Σ A B) : A = u.1
pr2 (A : U) (B : A  U) (u : Σ A B) : B (pr1 A B u) = u.2

1.4 Properties

1.4.1 Σ-Path implies subpaths

Let u, v be Σ-types such that u = v. Then, by path induction, we have p : u.1 = v.1 and (tr p u.2) = v.2.

Sg-path/left (A : U) (B : A  U) (u v : Σ A B) (p : Path (Σ A B) u v) : Path A u.1 v.1 =
  λi. (p i).1

PathSgSgPathO (A : U) (B : A  U) (u v : Σ A B) : Path (Σ A B) u v  SgPathO A B u v =
  coe 0 1 (i. PathSg-eq-SgPathO A B u v i)

Sg-path/right (A : U) (B : A  U) (u v : Σ A B) (p : Path (Σ A B) u v)
                 : PathO A u.1 v.1 (PathSgSgPathO A B u v p).1 B u.2 v.2 =
  (PathSgSgPathO A B u v p).2

1.4.2 Closed retract

If B, C are type families over A and B a retract of C, then Σ A B is also a retract of Σ A C.

Sg/closed-retract (A : U) (B C : A  U) (H : (x : A)  retract-of (B x) (C x)) : retract-of (Σ A B) (Σ A C) =
  let s : Σ A B  Σ A C = λu. (u.1, (H u.1).1 u.2)
      r : Σ A C  Σ A B = λu. (u.1, (H u.1).2.1 u.2) in
  (s, (r, λu. SgPathOPathΣ A B (r (s u)) u (refl A u.1, PathO/refl A u.1 B (r (s u)).2 u.2 ((H u.1).2.2 u.2))))

Author: Johann Rosain

Created: 2024-07-23 Tue 13:51

Validate