agda-prelude/Prelude.agda

177 lines
6.2 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

module Prelude where
open import Function public
open import Agda.Primitive public using (Level ; lzero ; lsuc ; _⊔_)
open import Level public using (Lift ; lift ; lower)
instance liftᴵ : ∀ {a } {A : Set a} → ⦃ A ⦄ → Lift A
liftᴵ = lift it
open import Agda.Builtin.FromNat public
open import Agda.Builtin.FromNeg public
open import Agda.Builtin.FromString public
module where
open import Data.Unit public hiding (module )
open import Data.Unit.Properties public
open public using ( ; tt)
module ⊥ where
open import Data.Empty public hiding (module ⊥ ; ⊥-elim)
open import Data.Empty.Irrelevant public
open ⊥ public using (⊥ ; ⊥-elim)
module where
open import Data.Nat public hiding (module )
open import Data.Nat.Properties public
import Data.Nat.Literals as Lit
instance number = Lit.number
open public using ( ; zero ; suc)
module Fin where
import Data.Fin hiding (module Fin)
open Data.Fin public
open import Data.Fin.Properties public
import Data.Fin.Literals as Lit
instance number : ∀ {n} → Number (Fin n)
number = Lit.number _
open Fin public using (Fin ; zero ; suc ; #_)
module Bool where
open import Data.Bool public hiding (module Bool)
open import Data.Bool.Properties public
open Bool public using (Bool ; true ; false ; if_then_else_)
module ⊎ where
open import Data.Sum public hiding (module _⊎_)
open import Data.Sum.Properties public
open ⊎ public using (_⊎_ ; inj₁ ; inj₂)
module Σ where
open import Data.Product public hiding (module Σ)
open import Data.Product.Properties public
open Σ public using (Σ ; Σ-syntax ; _×_ ; ∃ ; ∃-syntax ; ∄ ; ∄-syntax ;
_,_ ; -,_ ; proj₁ ; proj₂)
module List where
open import Data.List public hiding (module List)
open import Data.List.Properties public
open List public using (List ; [] ; _∷_)
module Vec where
open import Data.Vec public hiding (module Vec)
open import Data.Vec.Properties public
open Vec public using (Vec ; [] ; _∷_)
module Maybe where
open import Data.Maybe public hiding (module Maybe)
open import Data.Maybe.Properties public
open Maybe public using (Maybe ; nothing ; just)
module Rel where
open import Relation.Nullary public renaming (Irrelevant to Irrelevant₀)
open import Relation.Nullary.Decidable public
open import Relation.Unary public hiding (⌊_⌋)
renaming (Irrelevant to Irrelevant₁ ; Recomputable to Recomputable₁ ;
Universal to Universal₁ ; Decidable to Decidable₁ ; _⇒_ to _⇒₁_)
open import Relation.Binary public
renaming (Irrelevant to Irrelevant₂ ; Recomputable to Recomputable₂ ;
Universal to Universal₂ ; Decidable to Decidable₂ ; _⇒_ to _⇒₂_)
module _ where
private variable ℓ₁ ℓ₂ ℓ₃ ℓ₄ ℓ₅ ℓ₆ ℓ₇ : Level ; A B C D E F G : Set _
_Preserves₃_⟶_⟶_⟶_ :
(A → B → C → D) → Rel A ℓ₁ → Rel B ℓ₂ → Rel C ℓ₃ → Rel D ℓ₄ → Set _
f Preserves₃ _ᵃ_ ⟶ _ᵇ_ ⟶ _ᶜ_ ⟶ _ᵈ_ =
∀ {a a b b c c} →
a ∼ᵃ a → b ∼ᵇ b → c ∼ᶜ c
f a b c ∼ᵈ f a b c
_Preserves₄_⟶_⟶_⟶_⟶_ :
(A → B → C → D → E) →
Rel A ℓ₁ → Rel B ℓ₂ → Rel C ℓ₃ → Rel D ℓ₄ → Rel E ℓ₅ → Set _
f Preserves₄ _ᵃ_ ⟶ _ᵇ_ ⟶ _ᶜ_ ⟶ _ᵈ_ ⟶ _ᵉ_ =
∀ {a a b b c c d d} →
a ∼ᵃ a → b ∼ᵇ b → c ∼ᶜ c → d ∼ᵈ d
f a b c d ∼ᵉ f a b c d
_Preserves₅_⟶_⟶_⟶_⟶_⟶_ :
(A → B → C → D → E → F) →
Rel A ℓ₁ → Rel B ℓ₂ → Rel C ℓ₃ → Rel D ℓ₄ → Rel E ℓ₅ → Rel F ℓ₆ → Set _
f Preserves₅ _ᵃ_ ⟶ _ᵇ_ ⟶ _ᶜ_ ⟶ _ᵈ_ ⟶ _ᵉ_ ⟶ _ᶠ_ =
∀ {a a b b c c d d e e} →
a ∼ᵃ a → b ∼ᵇ b → c ∼ᶜ c → d ∼ᵈ d → e ∼ᵉ e
f a b c d e ∼ᶠ f a b c d e
_Preserves₆_⟶_⟶_⟶_⟶_⟶_⟶_ :
(A → B → C → D → E → F → G) →
Rel A ℓ₁ → Rel B ℓ₂ → Rel C ℓ₃ → Rel D ℓ₄ → Rel E ℓ₅ → Rel F ℓ₆ →
Rel G ℓ₇ → Set _
𝑓 Preserves₆ _ᵃ_ ⟶ _ᵇ_ ⟶ _ᶜ_ ⟶ _ᵈ_ ⟶ _ᵉ_ ⟶ _ᶠ_ ⟶ _ᵍ_ =
∀ {a a b b c c d d e e f f} →
a ∼ᵃ a → b ∼ᵇ b → c ∼ᶜ c → d ∼ᵈ d → e ∼ᵉ e → f ∼ᶠ f
𝑓 a b c d e f ∼ᵍ 𝑓 a b c d e f
open Rel public
using (Dec ; yes ; no ; ¬_ ; True ; False ; ⌊_⌋ ;
Pred ; Decidable₁ ; Rel ; Decidable₂)
open import Algebra.Core public
module Algebra where
open import Algebra.Definitions as D public
open import Algebra.Structures as S public
open import Algebra.Bundles as B public
module WithEq {a } {A : Set a} (≈ : Rel A ) where
open D ≈ public
open S ≈ public
open B public
module ≡ where
open import Relation.Binary.PropositionalEquality public hiding (module _≡_)
At : ∀ {a} (A : Set a) → Rel A _
At A = _≡_ {A = A}
open ≡ public using (_≡_ ; _≢_ ; refl) renaming (At to ≡-At)
record Eq {a} (A : Set a) : Set a where
field _≟_ : Decidable₂ $ ≡-At A
open Eq ⦃ … ⦄ public
module _ where
private variable a b : Level ; A : Set a ; B : Set b ; F : A → Set b ; n :
instance
eq- : Eq
eq- ._≟_ = ._≟_
eq-⊥ : Eq ⊥
eq-⊥ ._≟_ () ()
eq- : Eq
eq- ._≟_ = ._≟_
eq-fin : Eq (Fin n)
eq-fin ._≟_ = Fin._≟_
eq-bool : Eq Bool
eq-bool ._≟_ = Bool._≟_
eq-⊎ : ⦃ Eq A ⦄ → ⦃ Eq B ⦄ → Eq (A ⊎ B)
eq-⊎ ._≟_ = ⊎.≡-dec _≟_ _≟_
eq-prod : ⦃ Eq A ⦄ → ⦃ Rel.∀[ Eq ∘ F ] ⦄ → Eq (Σ A F)
eq-prod ._≟_ = Σ.≡-dec _≟_ _≟_
eq-maybe : ⦃ Eq A ⦄ → Eq (Maybe A)
eq-maybe ._≟_ = Maybe.≡-dec _≟_
eq-list : ⦃ Eq A ⦄ → Eq (List A)
eq-list ._≟_ = List.≡-dec _≟_
eq-vec : ⦃ Eq A ⦄ → Eq (Vec A n)
eq-vec ._≟_ = Vec.≡-dec _≟_