diff options
author | Chloe Brown <chloe.brown.00@outlook.com> | 2021-03-16 18:45:27 +0000 |
---|---|---|
committer | Chloe Brown <chloe.brown.00@outlook.com> | 2021-03-16 18:45:27 +0000 |
commit | 02a0f87be944b1d43fda265058b891f419d25b65 (patch) | |
tree | a6b289f1055dfa26efe276c503851db785d47f98 /src/Cfe/Expression/Base.agda | |
parent | 26925a4f41ed14881846648bf43448d07f1873d7 (diff) |
Change Language definition to respects instead of custom congruence.
Diffstat (limited to 'src/Cfe/Expression/Base.agda')
-rw-r--r-- | src/Cfe/Expression/Base.agda | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/Cfe/Expression/Base.agda b/src/Cfe/Expression/Base.agda index f4a8dc0..2023a71 100644 --- a/src/Cfe/Expression/Base.agda +++ b/src/Cfe/Expression/Base.agda @@ -66,10 +66,21 @@ Var j [ e′ / i ] with i F.≟ j ... | no i≢j = Var (punchOut i≢j) μ e [ e′ / i ] = μ (e [ wkn e′ F.zero / suc i ]) -⟦_⟧ : ∀ {n : ℕ} → Expression n → Vec (Language (c ⊔ ℓ) (c ⊔ ℓ)) n → Language (c ⊔ ℓ) (c ⊔ ℓ) -⟦ ⊥ ⟧ _ = Lift (c ⊔ ℓ) (c ⊔ ℓ) ∅ -⟦ ε ⟧ _ = Lift ℓ (c ⊔ ℓ) {ε} -⟦ Char x ⟧ _ = Lift ℓ (c ⊔ ℓ) { x } +shift : ∀ {n} → Expression n → (i j : Fin n) → .(_ : i F.≤ j) → Expression n +shift ⊥ _ _ _ = ⊥ +shift ε _ _ _ = ε +shift (Char x) _ _ _ = Char x +shift (e₁ ∨ e₂) i j i≤j = shift e₁ i j i≤j ∨ shift e₂ i j i≤j +shift (e₁ ∙ e₂) i j i≤j = shift e₁ i j i≤j ∙ shift e₂ i j i≤j +shift {suc n} (Var k) i j _ with i F.≟ k +... | yes i≡k = Var j +... | no i≢k = Var (punchIn j (punchOut i≢k)) +shift (μ e) i j i≤j = μ (shift e (suc i) (suc j) (s≤s i≤j)) + +⟦_⟧ : ∀ {n : ℕ} → Expression n → Vec (Language (c ⊔ ℓ)) n → Language (c ⊔ ℓ) +⟦ ⊥ ⟧ _ = Lift (c ⊔ ℓ) ∅ +⟦ ε ⟧ _ = Lift ℓ {ε} +⟦ Char x ⟧ _ = Lift ℓ { x } ⟦ e₁ ∨ e₂ ⟧ γ = ⟦ e₁ ⟧ γ ∪ ⟦ e₂ ⟧ γ ⟦ e₁ ∙ e₂ ⟧ γ = ⟦ e₁ ⟧ γ ∙ₗ ⟦ e₂ ⟧ γ ⟦ Var n ⟧ γ = lookup γ n |