diff options
author | Chloe Brown <chloe.brown.00@outlook.com> | 2021-03-29 18:08:09 +0100 |
---|---|---|
committer | Chloe Brown <chloe.brown.00@outlook.com> | 2021-03-29 18:08:09 +0100 |
commit | 13e0839831a528d26478a3a94c7470204460cce4 (patch) | |
tree | b907e2dee7ef170c879d3ec182bcc5b5eff374dd /src/Cfe/Derivation/Base.agda | |
parent | da35892c463cd6b9a492c6aee09726a41031ca93 (diff) |
Introduce < for Languages.
Move around some definitions.
Diffstat (limited to 'src/Cfe/Derivation/Base.agda')
-rw-r--r-- | src/Cfe/Derivation/Base.agda | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/src/Cfe/Derivation/Base.agda b/src/Cfe/Derivation/Base.agda index 1f2bb63..ce368d0 100644 --- a/src/Cfe/Derivation/Base.agda +++ b/src/Cfe/Derivation/Base.agda @@ -1,6 +1,6 @@ {-# OPTIONS --without-K --safe #-} -open import Relation.Binary using (Setoid) +open import Relation.Binary using (REL; Setoid) module Cfe.Derivation.Base {c ℓ} (over : Setoid c ℓ) @@ -14,12 +14,31 @@ open import Data.List open import Data.List.Relation.Binary.Equality.Setoid over open import Level using (_⊔_) -infix 4 _⤇_ +infix 5 _⤇_ +infix 4 _≈_ data _⤇_ : Expression 0 → List C → Set (c ⊔ ℓ) where Eps : ε ⤇ [] - Char : ∀ {c y} → c ∼ y → Char c ⤇ [ y ] + Char : ∀ {c y} → (c∼y : c ∼ y) → Char c ⤇ [ y ] Cat : ∀ {e₁ e₂ l₁ l₂ l} → e₁ ⤇ l₁ → e₂ ⤇ l₂ → l₁ ++ l₂ ≋ l → e₁ ∙ e₂ ⤇ l Veeˡ : ∀ {e₁ e₂ l} → e₁ ⤇ l → e₁ ∨ e₂ ⤇ l Veeʳ : ∀ {e₁ e₂ l} → e₂ ⤇ l → e₁ ∨ e₂ ⤇ l Fix : ∀ {e l} → e [ μ e / zero ] ⤇ l → μ e ⤇ l + +data _≈_ : ∀ {e l l′} → REL (e ⤇ l) (e ⤇ l′) (c ⊔ ℓ) where + Eps : Eps ≈ Eps + Char : ∀ {c y y′} → (c∼y : c ∼ y) → (c∼y′ : c ∼ y′) → Char c∼y ≈ Char c∼y′ + Cat : ∀ {e₁ e₂ l l₁ l₂ l₁′ l₂′ e₁⤇l₁ e₁⤇l₁′ e₂⤇l₂ e₂⤇l₂′} → + (e₁⤇l₁≈e₁⤇l′ : _≈_ {e₁} {l₁} {l₁′} e₁⤇l₁ e₁⤇l₁′) → + (e₂⤇l₂≈e₂⤇l′ : _≈_ {e₂} {l₂} {l₂′} e₂⤇l₂ e₂⤇l₂′) → + (eq : l₁ ++ l₂ ≋ l) → (eq′ : l₁′ ++ l₂′ ≋ l) → + Cat e₁⤇l₁ e₂⤇l₂ eq ≈ Cat e₁⤇l₁′ e₂⤇l₂′ eq′ + Veeˡ : ∀ {e₁ e₂ l l′ e₁⤇l e₁⤇l′} → + (e₁⤇l≈e₁⤇l′ : _≈_ {e₁} {l} {l′} e₁⤇l e₁⤇l′) → + Veeˡ {e₂ = e₂} e₁⤇l ≈ Veeˡ e₁⤇l′ + Veeʳ : ∀ {e₁ e₂ l l′ e₂⤇l e₂⤇l′} → + (e₂⤇l≈e₂⤇l′ : _≈_ {e₂} {l} {l′} e₂⤇l e₂⤇l′) → + Veeʳ {e₁} e₂⤇l ≈ Veeʳ e₂⤇l′ + Fix : ∀ {e l l′ e[μe/0]⤇l e[μe/0]⤇l′} → + (e[μe/0]⤇l≈e[μe/0]⤇l′ : _≈_ {e [ μ e / zero ]} {l} {l′} e[μe/0]⤇l e[μe/0]⤇l′) → + Fix {e} e[μe/0]⤇l ≈ Fix e[μe/0]⤇l′ |