{-# OPTIONS --safe #-} open import Cubical.Foundations.Powerset open import Cubical.Foundations.Prelude open import Cubical.Foundations.Structure open import Cubical.Algebra.Algebra open import Cubical.Algebra.CommAlgebra open import Cubical.Algebra.CommRing module Cubical.Algebra.CommAlgebra.Subalgebra {ℓ ℓ' : Level} (R : CommRing ℓ) (A : CommAlgebra R ℓ') where open import Cubical.Algebra.Algebra.Subalgebra (CommRing→Ring R) (CommAlgebra→Algebra A) public module _ (S : Subalgebra) where Subalgebra→CommAlgebra≡ = Subalgebra→Algebra≡ S Subalgebra→CommAlgebra : CommAlgebra R ℓ' Subalgebra→CommAlgebra = Subalgebra→Algebra S .fst , record { AlgebraStr (Subalgebra→Algebra S .snd) ; isCommAlgebra = iscommalgebra (Subalgebra→Algebra S .snd .AlgebraStr.isAlgebra) (λ x y → Subalgebra→CommAlgebra≡ (CommAlgebraStr.·Comm (snd A) (fst x) (fst y)))} Subalgebra→CommAlgebraHom : CommAlgebraHom Subalgebra→CommAlgebra A Subalgebra→CommAlgebraHom = Subalgebra→AlgebraHom S SubalgebraHom : (B : CommAlgebra R ℓ') (f : CommAlgebraHom B A) → ((b : ⟨ B ⟩) → fst f b ∈ fst S) → CommAlgebraHom B Subalgebra→CommAlgebra SubalgebraHom _ f fb∈S = let open IsAlgebraHom (f .snd) in (λ b → (f .fst b) , fb∈S b) , makeIsAlgebraHom (Subalgebra→CommAlgebra≡ pres1) (λ x y → Subalgebra→CommAlgebra≡ (pres+ x y)) (λ x y → Subalgebra→CommAlgebra≡ (pres· x y)) (λ x y → Subalgebra→CommAlgebra≡ (pres⋆ x y))