Tom de Jong 22nd May 2019

A few basic lemmas for working with partial elements of a type.

\begin{code}

{-# OPTIONS --safe --without-K #-}

open import MLTT.Spartan

module Lifting.Miscelanea (๐“ฃ : Universe) where

open import Lifting.Construction ๐“ฃ
open import UF.Equiv
open import UF.EquivalenceExamples

module _ {๐“ค : Universe}
         {X : ๐“ค ฬ‡ }
       where

 value-is-constant : (l : ๐“› X) (d e : is-defined l) โ†’ value l d ๏ผ value l e
 value-is-constant l d e = ap (value l) (being-defined-is-prop l d e)

 ๏ผ-of-values-from-๏ผ : {l m : ๐“› X} {d : is-defined l} {e : is-defined m}
                    โ†’ l ๏ผ m โ†’ value l d ๏ผ value m e
 ๏ผ-of-values-from-๏ผ {l} {m} {d} {e} refl = value-is-constant l d e

 ๏ผ-to-is-defined : {l m : ๐“› X} โ†’ l ๏ผ m โ†’ is-defined l โ†’ is-defined m
 ๏ผ-to-is-defined e d = transport is-defined e d

 โŠฅ-is-not-ฮท : (x : X) โ†’ โŠฅ โ‰  ฮท x
 โŠฅ-is-not-ฮท x e = โŒœ one-๐Ÿ˜-only โŒ (๏ผ-to-is-defined (e โปยน) โ‹†)

\end{code}