@@ -9,10 +9,12 @@ open import Cubical.Foundations.Structure using (⟨_⟩)
9
9
open import Cubical.Foundations.HLevels
10
10
open import Cubical.Foundations.Univalence
11
11
open import Cubical.Foundations.Transport
12
+ open import Cubical.Foundations.Path
12
13
13
14
open import Cubical.Data.Sigma
14
15
15
16
open import Cubical.Algebra.CommRing
17
+ open import Cubical.Algebra.CommRing.Univalence
16
18
open import Cubical.Algebra.Ring
17
19
18
20
private
@@ -75,23 +77,50 @@ module _ {R : CommRing ℓ} where
75
77
76
78
CommAlgebra≡ :
77
79
{A B : CommAlgebra R ℓ'}
78
- → (p : (A .fst) ≡ (B .fst))
79
- → (pathToEquiv $ cong fst p) .fst ∘ (A .snd) .fst ≡ (B .snd) .fst
80
- → A ≡ B
81
- CommAlgebra≡ {A = A} {B = B} p q = ΣPathTransport→PathΣ A B (p , pComm)
82
- where
83
- pComm : subst (CommRingHom R) p (A .snd) ≡ B .snd
84
- pComm =
85
- CommRingHom≡
80
+ → (Σ[ p ∈ ((A .fst) ≡ (B .fst)) ]
81
+ ((pathToEquiv $ cong fst p) .fst ∘ (A .snd) .fst ≡ (B .snd) .fst))
82
+ ≃ (A ≡ B)
83
+ CommAlgebra≡ {A = A} {B = B} =
84
+ invEquiv
85
+ (Σ-cong-equiv-prop
86
+ (idEquiv ((A .fst) ≡ (B .fst)))
87
+ (λ _ → isSetCommRingHom _ _ _ _) (λ _ → isSet→ is-set _ _)
88
+ (λ p q → sym (pComm p) ∙ cong fst q) (λ p q → CommRingHom≡ (pComm p ∙ q)))
89
+ ∙ₑ ΣPathTransport≃PathΣ A B
90
+ where open CommRingStr (B .fst .snd) using (is-set)
91
+ pComm : (p : A .fst ≡ B .fst)
92
+ → subst (CommRingHom R) p (A .snd) .fst ≡ (pathToEquiv $ cong (λ r → fst r) p) .fst ∘ A .snd .fst
93
+ pComm p =
86
94
(fst (subst (CommRingHom R) p (A .snd))
87
95
≡⟨ sym (substCommSlice (CommRingHom R) (λ X → ⟨ R ⟩ → ⟨ X ⟩) (λ _ → fst) p (A .snd)) ⟩
88
96
subst (λ X → ⟨ R ⟩ → ⟨ X ⟩) p (A .snd .fst)
89
97
≡⟨ fromPathP (funTypeTransp (λ _ → ⟨ R ⟩) ⟨_⟩ p (A .snd .fst)) ⟩
90
98
subst ⟨_⟩ p ∘ A .snd .fst ∘ subst (λ _ → ⟨ R ⟩) (sym p)
91
99
≡⟨ cong ((subst ⟨_⟩ p ∘ A .snd .fst) ∘_) (funExt (λ _ → transportRefl _)) ⟩
92
- (pathToEquiv $ cong (λ r → fst r) p) .fst ∘ A .snd .fst
93
- ≡⟨ q ⟩
94
- fst (B .snd) ∎)
100
+ (pathToEquiv $ cong (λ r → fst r) p) .fst ∘ A .snd .fst ∎)
101
+
102
+ CommAlgebraPath :
103
+ {A B : CommAlgebra R ℓ'}
104
+ → (Σ[ f ∈ CommRingEquiv (A .fst) (B .fst) ] (f .fst .fst , f .snd) ∘cr A .snd ≡ B .snd)
105
+ ≃ (A ≡ B)
106
+ CommAlgebraPath {A = A} {B = B} =
107
+ (Σ-cong-equiv
108
+ (CommRingPath _ _)
109
+ (λ e → compPathlEquiv (computeSubst e)))
110
+ ∙ₑ ΣPathTransport≃PathΣ A B
111
+ where computeSubst : (e : CommRingEquiv (fst A) (fst B))
112
+ → subst (CommRingHom R) (uaCommRing e) (A .snd)
113
+ ≡ (CommRingEquiv→CommRingHom e) ∘cr A .snd
114
+ computeSubst e = CommRingHom≡ $
115
+ (subst (CommRingHom R) (uaCommRing e) (A .snd)) .fst
116
+ ≡⟨ sym (substCommSlice (CommRingHom R) (λ X → ⟨ R ⟩ → ⟨ X ⟩) (λ _ → fst) (uaCommRing e) (A .snd)) ⟩
117
+ subst (λ X → ⟨ R ⟩ → ⟨ X ⟩) (uaCommRing e) (A .snd .fst)
118
+ ≡⟨ fromPathP (funTypeTransp (λ _ → ⟨ R ⟩) ⟨_⟩ (uaCommRing e) (A .snd .fst)) ⟩
119
+ subst ⟨_⟩ (uaCommRing e) ∘ A .snd .fst ∘ subst (λ _ → ⟨ R ⟩) (sym (uaCommRing e))
120
+ ≡⟨ cong ((subst ⟨_⟩ (uaCommRing e) ∘ A .snd .fst) ∘_) (funExt (λ _ → transportRefl _)) ⟩
121
+ (subst ⟨_⟩ (uaCommRing e) ∘ (A .snd .fst))
122
+ ≡⟨ funExt (λ _ → uaβ (e .fst) _) ⟩
123
+ (CommRingEquiv→CommRingHom e ∘cr A .snd) .fst ∎
95
124
96
125
CommAlgebraEquiv : (A : CommAlgebra R ℓ') (B : CommAlgebra R ℓ'') → Type _
97
126
CommAlgebraEquiv A B = Σ[ f ∈ CommRingEquiv (A .fst) (B .fst) ] (f .fst .fst , f .snd) ∘cr A .snd ≡ B .snd
0 commit comments