summaryrefslogtreecommitdiff
path: root/src/Obs/Abstract.idr
diff options
context:
space:
mode:
authorGreg Brown <greg.brown01@ed.ac.uk>2022-12-21 20:32:56 +0000
committerGreg Brown <greg.brown01@ed.ac.uk>2022-12-21 20:32:56 +0000
commita8a4ef9933a1a07b6fbf2d257df2a5fb40b1e87d (patch)
tree5eeaa04614d2a1ad5d3e98bc9e9bd5af2f9bdbd5 /src/Obs/Abstract.idr
parent4bad0e68e4b984db004d75ab87ca5a181d223190 (diff)
Add sum types.
Diffstat (limited to 'src/Obs/Abstract.idr')
-rw-r--r--src/Obs/Abstract.idr17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/Obs/Abstract.idr b/src/Obs/Abstract.idr
index b8fca7b..03367dc 100644
--- a/src/Obs/Abstract.idr
+++ b/src/Obs/Abstract.idr
@@ -51,6 +51,23 @@ abstractSyntax ctx (Fst t) = do
abstractSyntax ctx (Snd t) = do
t <- abstractSyntaxBounds ctx t
pure (Snd t)
+abstractSyntax ctx (Sum a b) = do
+ a <- abstractSyntaxBounds ctx a
+ b <- abstractSyntaxBounds ctx b
+ pure (Sum a b)
+abstractSyntax ctx (Left t) = do
+ t <- abstractSyntaxBounds ctx t
+ pure (Left t)
+abstractSyntax ctx (Right t) = do
+ t <- abstractSyntaxBounds ctx t
+ pure (Right t)
+abstractSyntax ctx (Case t s b f g) = do
+ t <- abstractSyntaxBounds ctx t
+ s <- abstractSyntaxBounds ctx s
+ b <- abstractSyntaxBounds ctx b
+ f <- abstractSyntaxBounds ctx f
+ g <- abstractSyntaxBounds ctx g
+ pure (Case t s b f g)
abstractSyntax ctx Top = pure Top
abstractSyntax ctx Point = pure Point
abstractSyntax ctx Bottom = pure Bottom