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/Language/Indexed/Construct/Iterate.agda | |
parent | 26925a4f41ed14881846648bf43448d07f1873d7 (diff) |
Change Language definition to respects instead of custom congruence.
Diffstat (limited to 'src/Cfe/Language/Indexed/Construct/Iterate.agda')
-rw-r--r-- | src/Cfe/Language/Indexed/Construct/Iterate.agda | 52 |
1 files changed, 12 insertions, 40 deletions
diff --git a/src/Cfe/Language/Indexed/Construct/Iterate.agda b/src/Cfe/Language/Indexed/Construct/Iterate.agda index 3a78bd8..5ed031b 100644 --- a/src/Cfe/Language/Indexed/Construct/Iterate.agda +++ b/src/Cfe/Language/Indexed/Construct/Iterate.agda @@ -49,60 +49,32 @@ module _ f≤g⇒fn≤gn f≤g (suc n) x = f≤g (f≤g⇒fn≤gn f≤g n x) module _ - {a aℓ} + {a} where - Iterate : (Language a aℓ → Language a aℓ) → IndexedLanguage 0ℓ 0ℓ a aℓ + Iterate : (Language a → Language a) → IndexedLanguage 0ℓ 0ℓ a Iterate f = record { Carrierᵢ = ℕ ; _≈ᵢ_ = ≡._≡_ ; isEquivalenceᵢ = ≡.isEquivalence - ; F = λ n → iter f n (Lift a aℓ ∅) + ; F = λ n → iter f n (Lift a ∅) ; cong = λ {≡.refl → ≈-refl} } - ≈ᵗ-refl : (g : Language a aℓ → Language a aℓ) → - Reflexive (Tagged (Iterate g)) (_≈ᵗ_ (Iterate g)) - ≈ᵗ-refl g {_} {n , _} = refl , (≈ᴸ-refl (Iter.F n)) - where - module Iter = IndexedLanguage (Iterate g) - - ≈ᵗ-sym : (g : Language a aℓ → Language a aℓ) → - Symmetric (Tagged (Iterate g)) (_≈ᵗ_ (Iterate g)) - ≈ᵗ-sym g {_} {_} {n , _} (refl , x∈Fn≈y∈Fn) = - refl , (≈ᴸ-sym (Iter.F n) x∈Fn≈y∈Fn) - where - module Iter = IndexedLanguage (Iterate g) - - ≈ᵗ-trans : (g : Language a aℓ → Language a aℓ) → - Transitive (Tagged (Iterate g)) (_≈ᵗ_ (Iterate g)) - ≈ᵗ-trans g {_} {_} {_} {n , _} (refl , x∈Fn≈y∈Fn) (refl , y∈Fn≈z∈Fn) = - refl , (≈ᴸ-trans (Iter.F n) x∈Fn≈y∈Fn y∈Fn≈z∈Fn) - where - module Iter = IndexedLanguage (Iterate g) - - ⋃ : (Language a aℓ → Language a aℓ) → Language a aℓ + ⋃ : (Language a → Language a) → Language a ⋃ f = record - { Carrier = Iter.Tagged - ; _≈_ = Iter._≈ᵗ_ - ; isEquivalence = record - { refl = ≈ᵗ-refl f - ; sym = ≈ᵗ-sym f - ; trans = ≈ᵗ-trans f - } + { 𝕃 = Iter.Tagged + ; ∈-resp-≋ = λ { l₁≋l₂ (i , l₁∈fi) → i , Language.∈-resp-≋ (Iter.F i) l₁≋l₂ l₁∈fi } } where module Iter = IndexedLanguage (Iterate f) - ⋃-cong : ∀ {f g : Language a aℓ → Language a aℓ} → (∀ {x y} → x ≈ y → f x ≈ g y) → ⋃ f ≈ ⋃ g + ⋃-cong : ∀ {f g} → (∀ {x y} → x ≈ y → f x ≈ g y) → ⋃ f ≈ ⋃ g ⋃-cong f≈g = record - { f = λ { (n , l∈fn) → n , _≈_.f (f≈g⇒fn≈gn (L.setoid a aℓ) f≈g n (Lift a aℓ ∅)) l∈fn} - ; f⁻¹ = λ { (n , l∈gn) → n , _≈_.f⁻¹ (f≈g⇒fn≈gn (L.setoid a aℓ) f≈g n (Lift a aℓ ∅)) l∈gn} - ; cong₁ = λ {_} {_} {(i , _)} → λ { (refl , l₁≈l₂) → refl , _≈_.cong₁ (f≈g⇒fn≈gn (L.setoid a aℓ) f≈g i (Lift a aℓ ∅)) l₁≈l₂} - ; cong₂ = λ {_} {_} {(i , _)} → λ { (refl , l₁≈l₂) → refl , _≈_.cong₂ (f≈g⇒fn≈gn (L.setoid a aℓ) f≈g i (Lift a aℓ ∅)) l₁≈l₂} + { f = λ { (n , l∈fn) → n , _≈_.f (f≈g⇒fn≈gn (L.setoid a) f≈g n (Lift a ∅)) l∈fn} + ; f⁻¹ = λ { (n , l∈gn) → n , _≈_.f⁻¹ (f≈g⇒fn≈gn (L.setoid a) f≈g n (Lift a ∅)) l∈gn} } - ⋃-monotone : ∀ {f g : Language a aℓ → Language a aℓ} → (∀ {x y} → x ≤ y → f x ≤ g y) → ⋃ f ≤ ⋃ g - ⋃-monotone f≤g = record - { f = λ { (n , l∈fn) → n , _≤_.f (f≤g⇒fn≤gn (poset a aℓ) f≤g n (Lift a aℓ ∅)) l∈fn } - ; cong = λ {_} {_} {(i , _)} → λ { (refl , l₁≈l₂) → refl , _≤_.cong (f≤g⇒fn≤gn (poset a aℓ) f≤g i (Lift a aℓ ∅)) l₁≈l₂ } + ⋃-mono : ∀ {f g} → (∀ {x y} → x ≤ y → f x ≤ g y) → ⋃ f ≤ ⋃ g + ⋃-mono f≤g = record + { f = λ { (n , l∈fn) → n , _≤_.f (f≤g⇒fn≤gn (poset a) f≤g n (Lift a ∅)) l∈fn } } |