@@ -9,10 +9,12 @@ open import Cubical.Foundations.Structure using (⟨_⟩)
99open import Cubical.Foundations.HLevels
1010open import Cubical.Foundations.Univalence
1111open import Cubical.Foundations.Transport
12+ open import Cubical.Foundations.Path
1213
1314open import Cubical.Data.Sigma
1415
1516open import Cubical.Algebra.CommRing
17+ open import Cubical.Algebra.CommRing.Univalence
1618open import Cubical.Algebra.Ring
1719
1820private
@@ -75,23 +77,50 @@ module _ {R : CommRing ℓ} where
7577
7678 CommAlgebra≡ :
7779 {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 =
8694 (fst (subst (CommRingHom R) p (A .snd))
8795 ≡⟨ sym (substCommSlice (CommRingHom R) (λ X → ⟨ R ⟩ → ⟨ X ⟩) (λ _ → fst) p (A .snd)) ⟩
8896 subst (λ X → ⟨ R ⟩ → ⟨ X ⟩) p (A .snd .fst)
8997 ≡⟨ fromPathP (funTypeTransp (λ _ → ⟨ R ⟩) ⟨_⟩ p (A .snd .fst)) ⟩
9098 subst ⟨_⟩ p ∘ A .snd .fst ∘ subst (λ _ → ⟨ R ⟩) (sym p)
9199 ≡⟨ 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 ∎
95124
96125 CommAlgebraEquiv : (A : CommAlgebra R ℓ') (B : CommAlgebra R ℓ'') → Type _
97126 CommAlgebraEquiv A B = Σ[ f ∈ CommRingEquiv (A .fst) (B .fst) ] (f .fst .fst , f .snd) ∘cr A .snd ≡ B .snd
0 commit comments