{-# OPTIONS --cubical --safe #-}

module Function.Injective.Properties where

open import Level
open import Path
open import Data.Sigma
open import Function.Injective.Base
open import Relation.Nullary.Decidable
open import Relation.Nullary.Discrete
open import Function

Discrete-pull-inj : A  B  Discrete B  Discrete A
Discrete-pull-inj (f , inj) _≟_ x y =
  case (f x  f y) of
    λ  { (no ¬p)  no (¬p  cong f)
       ; (yes p)  yes (inj x y p) }

inject-contrapositive : (f : A  B)  Injective f   x y  x  y  f x  f y
inject-contrapositive f inj x y x≢y fx≡fy = x≢y (inj x y fx≡fy)