{-# OPTIONS --cubical --safe --postfix-projections #-} module Function.Injective.Base where open import Level open import Path open import Data.Sigma Injective : (A → B) → Type _ Injective f = ∀ x y → (f⟨x⟩≡f⟨y⟩ : f x ≡ f y) → x ≡ y infixr 0 _↣_ _↣_ : Type a → Type b → Type (a ℓ⊔ b) A ↣ B = Σ[ f ⦂ (A → B) ] × Injective f refl-↣ : A ↣ A refl-↣ .fst x = x refl-↣ .snd x y x≡y = x≡y