\begin{code}
{-# OPTIONS --cubical --safe --postfix-projections #-}
module Function.Injective.Base where
open import Level
open import Path
open import Data.Sigma
Injective : (A → B) → Type _
\end{code}
%<*injective>
\begin{code}
Injective f = ∀ x y → f x ≡ f y → x ≡ y
\end{code}
%</injective>
\begin{code}
infixr 0 _↣_
_↣_ : Type a → Type b → Type (a ℓ⊔ b)
\end{code}
%<*injection>
\begin{code}
A ↣ B = Σ[ f ⦂ (A → B) ] Injective f
\end{code}
%</injection>
\begin{code}
refl-↣ : A ↣ A
refl-↣ .fst x = x
refl-↣ .snd x y x≡y = x≡y
\end{code}