diff options
author | Greg Brown <greg.brown01@ed.ac.uk> | 2023-06-30 20:45:33 +0100 |
---|---|---|
committer | Greg Brown <greg.brown01@ed.ac.uk> | 2023-06-30 20:45:33 +0100 |
commit | 8c529393421843a7ccad041d2f29fa90b46bf6b6 (patch) | |
tree | f7b31388e5ca5831ef84f9c9a6809a4eb77fa66b /src/Data/Term.idr | |
parent | 621f6221048213dc4d359581197988050af99d0d (diff) |
Define zippers and prove no cycles exist.
Diffstat (limited to 'src/Data/Term.idr')
-rw-r--r-- | src/Data/Term.idr | 13 |
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 |