summaryrefslogtreecommitdiff
path: root/src/SOAS/Structure.idr
diff options
context:
space:
mode:
authorGreg Brown <greg.brown01@ed.ac.uk>2024-02-01 19:25:13 +0000
committerGreg Brown <greg.brown01@ed.ac.uk>2024-02-02 13:33:09 +0000
commit4b9b6b0211f6fb5691d67ca77ac09be888e569b7 (patch)
tree33451a63c169a06d0fee67393d0bf081f7e0b1e3 /src/SOAS/Structure.idr
parentfa4de437fa3861189b506538f6ca4a39771ecbbb (diff)
Define generic syntax construction.main
Whilst it works (see `Example`), a generated data type would probably work better.
Diffstat (limited to 'src/SOAS/Structure.idr')
-rw-r--r--src/SOAS/Structure.idr14
1 files changed, 10 insertions, 4 deletions
diff --git a/src/SOAS/Structure.idr b/src/SOAS/Structure.idr
index 5f9e1c9..8c5bb5d 100644
--- a/src/SOAS/Structure.idr
+++ b/src/SOAS/Structure.idr
@@ -34,14 +34,20 @@ record (.MonStruct) (type : Type) (m : type.SortedFamily) where
mult : m -|> (m ^ m)
export
+(.wkn) :
+ (0 m : type.SortedFamily) -> (mon : type.PointedCoalgStruct m) =>
+ m sy ctx -> m sy (ctx :< (n :- ty))
+m.wkn t = mon.ren t (weakl {length = S Z})
+
+export
(.sub) :
- (mon : type.MonStruct m) ->
+ (0 m : type.SortedFamily) -> (mon : type.MonStruct m) =>
m sy (ctx :< (n :- ty)) -> m ty ctx -> m sy ctx
-mon.sub t s = mon.mult t (m.extend s mon.var)
+m.sub t s = mon.mult t (m.extend s mon.var)
export
(.sub2) :
- (mon : type.MonStruct m) ->
+ (0 m : type.SortedFamily) -> (mon : type.MonStruct m) =>
m sy (ctx :< (x :- ty1) :< (x :- ty2)) ->
m ty1 ctx -> m ty2 ctx -> m sy ctx
-mon.sub2 t s1 s2 = mon.mult t (m.extend s2 (m.extend s1 mon.var))
+m.sub2 t s1 s2 = mon.mult t (m.extend s2 (m.extend s1 mon.var))