summaryrefslogtreecommitdiff
path: root/src/Cfe/Expression/Base.agda
diff options
context:
space:
mode:
authorChloe Brown <chloe.brown.00@outlook.com>2021-03-13 20:06:22 +0000
committerChloe Brown <chloe.brown.00@outlook.com>2021-03-13 20:06:22 +0000
commit0dc59b43f78654a746ef5baaeabcc767c64ee0df (patch)
treefc592a8964038d2c863f140c3a952d27926a7596 /src/Cfe/Expression/Base.agda
parentb82ce567e284582f28e171c12a733ddcdcbe980e (diff)
Add weakening proofs for type judgements.
Diffstat (limited to 'src/Cfe/Expression/Base.agda')
-rw-r--r--src/Cfe/Expression/Base.agda12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/Cfe/Expression/Base.agda b/src/Cfe/Expression/Base.agda
index c4940b6..f4a8dc0 100644
--- a/src/Cfe/Expression/Base.agda
+++ b/src/Cfe/Expression/Base.agda
@@ -15,11 +15,12 @@ open import Cfe.Language.Construct.Concatenate over renaming (_∙_ to _∙ₗ_)
open import Cfe.Language.Construct.Single over
open import Cfe.Language.Construct.Union over
open import Cfe.Language.Indexed.Construct.Iterate over
-open import Data.Fin as F hiding (_≤_)
+open import Data.Fin as F hiding (_≤_; cast)
open import Data.Nat as ℕ hiding (_≤_; _⊔_)
open import Data.Product
open import Data.Vec
open import Level renaming (suc to lsuc) hiding (Lift)
+open import Relation.Binary.PropositionalEquality
open import Relation.Nullary
infix 10 _[_/_]
@@ -36,6 +37,15 @@ data Expression : ℕ → Set c where
Var : ∀ {n} → Fin n → Expression n
μ : ∀ {n} → Expression (suc n) → Expression n
+cast : ∀ {m n} → .(_ : m ≡ n) → Expression m → Expression n
+cast eq ⊥ = ⊥
+cast eq ε = ε
+cast eq (Char x) = Char x
+cast eq (e₁ ∨ e₂) = cast eq e₁ ∨ cast eq e₂
+cast eq (e₁ ∙ e₂) = cast eq e₁ ∙ cast eq e₂
+cast eq (Var i) = Var (F.cast eq i)
+cast eq (μ e) = μ (cast (cong suc eq) e)
+
wkn : ∀ {n} → Expression n → Fin (suc n) → Expression (suc n)
wkn ⊥ i = ⊥
wkn ε i = ε