{-# OPTIONS --cubical --safe --no-import-sorts #-} module Cubical.Algebra.CommAlgebra.Morphism where open import Cubical.Foundations.Prelude open import Cubical.Foundations.HLevels open import Cubical.Algebra.CommAlgebra.Base open import Cubical.Algebra.CommRing open import Cubical.Algebra.Algebra using (algebrahom) private variable ℓ : Level CAlgHom : {R : CommRing {ℓ}} → CommAlgebra R → CommAlgebra R → Type ℓ CAlgHom A B = AlgebraHom (CommAlgebra→Algebra A) (CommAlgebra→Algebra B) homEq : {(R , str) : CommRing {ℓ}} (A B : CommAlgebra (R , str)) → (f g : CAlgHom A B) → ((x : CommAlgebra.Carrier A) → (f $a x) ≡ (g $a x)) → f ≡ g homEq {ℓ} {(R , str)} A B f g mapEq i = let open AlgebraHom open CommAlgebra ⦃...⦄ _*_ : R → ⟨ B ⟩a → ⟨ B ⟩a r * a = CommAlgebra._⋆_ B r a isSetB = isSetAlgebra (CommAlgebra→Algebra B) A′ = CommAlgebra.Carrier A instance _ : CommAlgebra (R , str) _ = A _ : CommAlgebra (R , str) _ = B in algebrahom (λ x → mapEq x i) (λ x y j → isOfHLevel→isOfHLevelDep 1 (λ (f : A′ → _) → isSetB (f (x + y)) (f x + f y)) (isHom+ f x y) (isHom+ g x y) (λ i x → mapEq x i) i j) (λ x y j → isOfHLevel→isOfHLevelDep 1 (λ (f : A′ → _) → isSetB (f (x · y)) (f x · f y)) (isHom· f x y) (isHom· g x y) (λ i x → mapEq x i) i j) (λ j → isOfHLevel→isOfHLevelDep 1 (λ (f : A′ → _) → isSetB (f 1a) 1a) (pres1 f) (pres1 g) (λ i x → mapEq x i) i j) (λ r x j → isOfHLevel→isOfHLevelDep 1 (λ (f : A′ → _) → isSetB (f ((A CommAlgebra.⋆ r) x)) (r * f x)) (comm⋆ f r x) (comm⋆ g r x) ((λ i x → mapEq x i)) i j)