summaryrefslogtreecommitdiff
path: root/src/Data
diff options
context:
space:
mode:
Diffstat (limited to 'src/Data')
-rw-r--r--src/Data/Morphism/Indexed.idr8
-rw-r--r--src/Data/Setoid/Indexed.idr7
2 files changed, 15 insertions, 0 deletions
diff --git a/src/Data/Morphism/Indexed.idr b/src/Data/Morphism/Indexed.idr
index c271c90..6737275 100644
--- a/src/Data/Morphism/Indexed.idr
+++ b/src/Data/Morphism/Indexed.idr
@@ -11,3 +11,11 @@ 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)
+
+public export
+ifunc : IFunc x y -> IFunction (isetoid x) (isetoid y)
+ifunc f = MkIFunction f (\i => cong (f i))
+
+public export
+compFunc : IFunction b c -> IFunction a b -> IFunction a c
+compFunc f g = MkIFunction (\i => f.func i . g.func i) (\i => f.cong i . g.cong i)
diff --git a/src/Data/Setoid/Indexed.idr b/src/Data/Setoid/Indexed.idr
index 7277932..db5fb07 100644
--- a/src/Data/Setoid/Indexed.idr
+++ b/src/Data/Setoid/Indexed.idr
@@ -40,5 +40,12 @@ public export
(.index) x i = MkSetoid (x.U i) (x.relation i) (x.equivalence i)
public export
+(.reindex) : ISetoid b -> (f : a -> b) -> ISetoid a
+(.reindex) x f = MkISetoid
+ (\i => x.U $ f i)
+ (\i => x.relation $ f i)
+ (\i => x.equivalence $ f i)
+
+public export
isetoid : (a -> Type) -> ISetoid a
isetoid u = MkISetoid u (\_ => Equal) (\_ => equiv)