module Cubical.Algebra.CommRing.Polynomials.Typevariate.Properties where
open import Cubical.Foundations.Prelude
open import Cubical.Foundations.Equiv
open import Cubical.Foundations.Isomorphism
open import Cubical.Foundations.HLevels
open import Cubical.Foundations.Structure
open import Cubical.Foundations.Function
open import Cubical.Foundations.Isomorphism
open import Cubical.Data.Sigma.Properties using (Σ≡Prop)
open import Cubical.HITs.SetTruncation
open import Cubical.Algebra.CommRing
open import Cubical.Algebra.CommRing.Polynomials.Typevariate.Base
open import Cubical.Algebra.CommRing.Polynomials.Typevariate.UniversalProperty
open import Cubical.Data.Empty as ⊥
open import Cubical.Data.Sigma
open import Cubical.Tactics.CommRingSolver
private
variable
ℓ ℓ' ℓ'' : Level
module _ {R : CommRing ℓ} where
open CommRingStr ⦃...⦄
private instance
_ = snd R
polynomialsOn⊥ : CommRingEquiv (R [ ⊥ ]) R
polynomialsOn⊥ =
isoToEquiv
(iso (to .fst) (from .fst)
(λ x → cong (λ f → f .fst x) to∘from)
(λ x → cong (λ f → f .fst x) from∘to)) ,
isHom
where to : CommRingHom (R [ ⊥ ]) R
to = inducedHom R (idCommRingHom R) ⊥.rec
from : CommRingHom R (R [ ⊥ ])
from = constPolynomial R ⊥
to∘from : to ∘cr from ≡ idCommRingHom R
to∘from = CommRingHom≡ refl
from∘to : from ∘cr to ≡ idCommRingHom (R [ ⊥ ])
from∘to = idByIdOnVars (from ∘cr to) refl (funExt ⊥.elim)
abstract
isHom : IsCommRingHom ((R [ ⊥ ]) .snd) (to .fst) (R .snd)
isHom = to .snd