{-# OPTIONS --cubical-compatible --safe #-}
open import Relation.Binary using (Setoid)
module Data.Container.Indexed.Relation.Binary.Equality.Setoid
{ℓⁱ ℓᶜ ℓᵉ} {I : Set ℓⁱ} (S : I → Setoid ℓᶜ ℓᵉ)
where
open import Function
open import Level using (Level; _⊔_; suc)
open import Relation.Binary
open import Data.Container.Indexed.Core
open import Data.Container.Indexed.Relation.Binary.Pointwise
import Data.Container.Indexed.Relation.Binary.Pointwise.Properties
as Pointwise
open Setoid using (Carrier; _≈_)
private variable
ℓˢ ℓᵖ : Level
O : Set _
module _ (C : Container I O ℓˢ ℓᵖ) (o : O) where
Eq : Rel (⟦ C ⟧ (Carrier ∘ S) o) (ℓᵉ ⊔ ℓˢ ⊔ ℓᵖ)
Eq = Pointwise C (_≈_ ∘ S) o
refl : Reflexive Eq
refl = Pointwise.refl C _ (Setoid.refl ∘ S)
sym : Symmetric Eq
sym = Pointwise.sym C _ (Setoid.sym ∘ S)
trans : Transitive Eq
trans = Pointwise.trans C _ (Setoid.trans ∘ S)
isEquivalence : IsEquivalence Eq
isEquivalence = record
{ refl = refl
; sym = sym
; trans = trans
}
setoid : Setoid (ℓˢ ⊔ ℓᵖ ⊔ ℓᶜ) (ℓˢ ⊔ ℓᵖ ⊔ ℓᵉ)
setoid = record
{ isEquivalence = isEquivalence
}