-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathEquality.agda
50 lines (39 loc) · 2.04 KB
/
Equality.agda
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
module Set.Equality where
open import Level
open import Data.Product using (_,_; _×_)
open import Relation.Binary.PropositionalEquality using (_≡_; refl)
open import Data.List.NonEmpty using (List⁺; _∷_; _∷⁺_; toList; [_])
open import Data.List using (List; []; _∷_)
open import Axiom.UniquenessOfIdentityProofs using (UIP)
open import Axiom.Extensionality.Propositional using (Extensionality)
private
variable
ℓ : Level
I O A B C : Set ℓ
open import Set.Automata
open import Set.LimitAutomata
postulate
extensionality : ∀ {ℓ ℓ′} → Extensionality ℓ ℓ′
uip : ∀ {ℓ} {A : Set ℓ} → UIP A
uip refl refl = refl
P∞-≡ : ∀ {A : Set} → (U : P∞carrier A) → (V : P∞carrier A) →
P∞carrier.f U ≡ P∞carrier.f V → U ≡ V
P∞-≡ record { eq = eq₁ } record { eq = eq } refl with extensionality (λ x → uip (eq₁ x) (eq x))
... | refl = refl
Mealy⇒-≡ : ∀ {A B : Set} {M N : Mealy A B} (f g : Mealy⇒ M N) → Mealy⇒.hom f ≡ Mealy⇒.hom g → f ≡ g
Mealy⇒-≡ record { d-eq = d-eq₁ ; s-eq = s-eq₁ } record { d-eq = d-eq ; s-eq = s-eq } refl
with extensionality (λ x → uip (d-eq₁ x) (d-eq x)) | extensionality (λ x → uip (s-eq₁ x) (s-eq x))
... | refl | refl = refl
Moore⇒-≡ : ∀ {A B : Set} {M N : Moore A B} (f g : Moore⇒ M N) → Moore⇒.hom f ≡ Moore⇒.hom g → f ≡ g
Moore⇒-≡ record { d-eq = d-eq₁ ; s-eq = s-eq₁ } record { d-eq = d-eq ; s-eq = s-eq } refl
with extensionality (λ x → uip (d-eq₁ x) (d-eq x)) | extensionality (λ x → uip (s-eq₁ x) (s-eq x))
... | refl | refl = refl
Mealy-ext : ∀ {E I : Set} {s s′ : I × E → O} {d d′ : I × E → E}
→ (d-ext : ∀ i → d i ≡ d′ i)
→ (s-ext : ∀ i → s i ≡ s′ i)
→ (let p : Mealy I O
p = record { E = E ; d = d ; s = s }
q : Mealy I O
q = record { E = E ; d = d′ ; s = s′ } in p ≡ q)
Mealy-ext s-ext d-ext with extensionality s-ext | extensionality d-ext
... | refl | refl = refl