{-# OPTIONS --safe #-}
module Cubical.Algebra.CommAlgebra.Ideal where
open import Cubical.Foundations.Prelude
open import Cubical.Foundations.HLevels
open import Cubical.Foundations.Powerset

open import Cubical.Algebra.CommRing
import Cubical.Algebra.CommRing.Ideal as CommRing
import Cubical.Algebra.CommRing.Ideal.Base


open import Cubical.Algebra.CommAlgebra.Base

open import Cubical.Data.Unit

private
  variable
     ℓ' : Level

module _ (R : CommRing ) (A : CommAlgebra R ℓ') where
  IdealsIn : Type _
  IdealsIn = CommRing.IdealsIn (fst A)

  open CommRingStr (A .fst .snd)

  makeIdeal : (I : A .fst .fst  hProp ℓ')
               (+-closed : {x y : A .fst .fst}  x  I  y  I  (x + y)  I)
               (0-closed : 0r  I)
               (·-closedLeft : {x : A .fst .fst}  (r : A .fst .fst)  x  I  r · x  I)
               IdealsIn
  makeIdeal = CommRing.makeIdeal {R = fst A}

  0Ideal : IdealsIn
  0Ideal = CommRing.CommIdeal.0Ideal (fst A)

  1Ideal : IdealsIn
  1Ideal = CommRing.CommIdeal.1Ideal (fst A)

open Cubical.Algebra.CommRing.Ideal.Base.CommIdeal using (isPropIsCommIdeal) public