------------------------------------------------------------------------
-- The Agda standard library
--
-- Definitions for types of functions.
------------------------------------------------------------------------
-- The contents of this file should usually be accessed from `Function`.
{-# OPTIONS --without-K --safe #-}
open import Relation.Binary
module Function.Definitions
{a b ℓ₁ ℓ₂} {A : Set a} {B : Set b}
(_≈₁_ : Rel A ℓ₁) -- Equality over the domain
(_≈₂_ : Rel B ℓ₂) -- Equality over the codomain
where
open import Data.Product using (∃; _×_)
import Function.Definitions.Core1 as Core₁
import Function.Definitions.Core2 as Core₂
open import Function.Base
open import Level using (_⊔_)
------------------------------------------------------------------------
-- Definitions
Congruent : (A → B) → Set (a ⊔ ℓ₁ ⊔ ℓ₂)
Congruent f = ∀ {x y} → x ≈₁ y → f x ≈₂ f y
Injective : (A → B) → Set (a ⊔ ℓ₁ ⊔ ℓ₂)
Injective f = ∀ {x y} → f x ≈₂ f y → x ≈₁ y
open Core₂ _≈₂_ public
using (Surjective)
Bijective : (A → B) → Set (a ⊔ b ⊔ ℓ₁ ⊔ ℓ₂)
Bijective f = Injective f × Surjective f
open Core₂ _≈₂_ public
using (Inverseˡ)
open Core₁ _≈₁_ public
using (Inverseʳ)
Inverseᵇ : (A → B) → (B → A) → Set (a ⊔ b ⊔ ℓ₁ ⊔ ℓ₂)
Inverseᵇ f g = Inverseˡ f g × Inverseʳ f g
Generated from commit 2fd14c996b195ef101dff8919e837907ca0a08aa.