123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- module Datoid where
- import Equiv
- import Prelude
- open Equiv
- open Prelude
- data Datoid : Set1 where
- datoid : (a : Set) -> DecidableEquiv a -> Datoid
- El : Datoid -> Set
- El (datoid a _) = a
- datoidEq : (a : Datoid) -> DecidableEquiv (El a)
- datoidEq (datoid _ eq) = eq
- datoidRel : (a : Datoid) -> El a -> El a -> Set
- datoidRel d = rel' (datoidEq d)
- datoidDecRel : (a : Datoid) -> (x y : El a)
- -> Either (datoidRel a x y) (Not (datoidRel a x y))
- datoidDecRel d = decRel (datoidEq d)
- dRefl : (a : Datoid) -> {x : El a} -> datoidRel a x x
- dRefl a = refl (datoidEq a)
- dSym : (a : Datoid) -> {x y : El a}
- -> datoidRel a x y -> datoidRel a y x
- dSym a = sym (datoidEq a)
- dTrans : (a : Datoid) -> {x y z : El a}
- -> datoidRel a x y -> datoidRel a y z -> datoidRel a x z
- dTrans a = trans (datoidEq a)
- data Respects (a : Datoid) (P : El a -> Set) : Set where
- respects : ((x y : El a) -> datoidRel a x y -> P x -> P y) -> Respects a P
- subst : {a : Datoid} -> {P : El a -> Set} -> Respects a P
- -> (x y : El a) -> datoidRel a x y -> P x -> P y
- subst (respects f) = f
- pairDatoid : (a b : Datoid) -> Datoid
- pairDatoid a b = datoid (Pair (El a) (El b))
- (pairEquiv (datoidEq a) (datoidEq b))
|