diff options
author | Greg Brown <greg.brown01@ed.ac.uk> | 2022-11-29 14:36:13 +0000 |
---|---|---|
committer | Greg Brown <greg.brown01@ed.ac.uk> | 2022-11-29 14:36:13 +0000 |
commit | b21e69503571272a5f35cf84c731994f3e921a3a (patch) | |
tree | 79f04a283d8873317b0c91bebbcd283a66edbc93 /src/Data | |
parent | d35c9f4eea009a5d3edd57c9165e49b8a7a66334 (diff) |
Move indexed setoids and functions out of Soat.
Diffstat (limited to 'src/Data')
-rw-r--r-- | src/Data/Morphism/Indexed.idr | 13 | ||||
-rw-r--r-- | src/Data/Setoid/Indexed.idr | 36 |
2 files changed, 49 insertions, 0 deletions
diff --git a/src/Data/Morphism/Indexed.idr b/src/Data/Morphism/Indexed.idr new file mode 100644 index 0000000..c271c90 --- /dev/null +++ b/src/Data/Morphism/Indexed.idr @@ -0,0 +1,13 @@ +module Data.Morphism.Indexed + +import Data.Setoid.Indexed + +public export +IFunc : {a : Type} -> (x, y : a -> Type) -> Type +IFunc {a} x y = (i : a) -> x i -> y i + +public export +record IFunction {a : Type} (x, y : ISetoid a) where + constructor MkIFunction + func : IFunc x.U y.U + cong : (i : a) -> {u, v : x.U i} -> x.relation i u v -> y.relation i (func i u) (func i v) diff --git a/src/Data/Setoid/Indexed.idr b/src/Data/Setoid/Indexed.idr new file mode 100644 index 0000000..df5606d --- /dev/null +++ b/src/Data/Setoid/Indexed.idr @@ -0,0 +1,36 @@ +module Data.Setoid.Indexed + +import public Data.Setoid + +%default total + +public export +IRel : {a : Type} -> (a -> Type) -> Type +IRel {a = a} x = (i : a) -> x i -> x i -> Type + +public export +IReflexive : {a : Type} -> (x : a -> Type) -> IRel x -> Type +IReflexive x rel = (i : a) -> Reflexive (x i) (rel i) + +public export +ISymmetric : {a : Type} -> (x : a -> Type) -> IRel x -> Type +ISymmetric x rel = (i : a) -> Symmetric (x i) (rel i) + +public export +ITransitive : {a : Type} -> (x : a -> Type) -> IRel x -> Type +ITransitive x rel = (i : a) -> Transitive (x i) (rel i) + +public export +IEquivalence : {a : Type} -> (x : a -> Type) -> IRel x -> Type +IEquivalence x rel = (i : a) -> Setoid.Equivalence (x i) (rel i) + +public export +record ISetoid (a : Type) where + constructor MkISetoid + 0 U : a -> Type + 0 relation : IRel U + equivalence : IEquivalence U relation + +public export +isetoid : (a -> Type) -> ISetoid a +isetoid u = MkISetoid u (\_ => Equal) (\_ => equiv) |