summaryrefslogtreecommitdiff
path: root/src/Data/Term.idr
diff options
context:
space:
mode:
authorGreg Brown <greg.brown01@ed.ac.uk>2023-06-30 20:45:33 +0100
committerGreg Brown <greg.brown01@ed.ac.uk>2023-06-30 20:45:33 +0100
commit8c529393421843a7ccad041d2f29fa90b46bf6b6 (patch)
treef7b31388e5ca5831ef84f9c9a6809a4eb77fa66b /src/Data/Term.idr
parent621f6221048213dc4d359581197988050af99d0d (diff)
Define zippers and prove no cycles exist.
Diffstat (limited to 'src/Data/Term.idr')
-rw-r--r--src/Data/Term.idr13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/Data/Term.idr b/src/Data/Term.idr
index 95fd9f8..2afc774 100644
--- a/src/Data/Term.idr
+++ b/src/Data/Term.idr
@@ -72,3 +72,16 @@ subComp :
(r : Fin j -> Fin k) ->
f . pure r .=. f . r
subComp f r i = Refl
+
+-- Injectivity -----------------------------------------------------------------
+
+export
+opInjectiveLen : (prf : Op {k} op ts = Op {k = n} op' us) -> k = n
+opInjectiveLen Refl = Refl
+
+export
+opInjectiveTs :
+ {0 ts : Vect k (Term sig n)} ->
+ {0 us : Vect j (Term sig n)} ->
+ (prf : Op op ts = Op op' us) -> ts = (rewrite opInjectiveLen prf in us)
+opInjectiveTs Refl = Refl