{-# OPTIONS --without-K --exact-split #-}
open import TransportLemmas
open import EquivalenceType

open import HomotopyType
open import FunExtAxiom
open import HLevelTypes

Intervals

Interval. An interval is defined by taking two points (two elements) and a path between them (an element of the equality type). This path is nontrivial.

module IntervalType where

  private

    data !I : Type₀ where
      !Izero : !I
      !Ione : !I

  I : Type₀
  I = !I

  Izero : I
  Izero = !Izero

  Ione : I
  Ione = !Ione

  postulate
    seg : Izero == Ione

Recursion principle on points.

I-rec
  :  {: Level} {A : Type ℓ}
   (a b : A)
   (p : a == b)
  --------------
   (I  A)

I-rec a _ _ !Izero = a
I-rec _ b _ !Ione  = b

Recursion principle on paths.

postulate
  I-βrec
    :  {: Level} (A : Type ℓ)
     (a b : A)
     (p : a == b)
    ---------------------------
     ap (I-rec a b p) seg == p