Ideals and coideals
Definition of ideals and coideals
Let R be a ring. At this moment all CRings are commutative and non-trivial. So our ideals are automatically two-sided. As soon as non-commutative rings are represented in CoRN left and right ideals should be defined.Section Ideals.
Variable R : CRing.
Record is_ideal (idP : wd_pred R) : CProp :=
{ idax : forall a x:R, idP a -> idP (a[*]x);
idprpl : forall x y : R, idP x -> idP y -> idP (x[+]y)}.
Record ideal : Type :=
{ idpred :> wd_pred R;
idproof : is_ideal idpred}.
We actually define strongly non-trivival co-ideals.
Record is_coideal (ciP : wd_pred R) : CProp :=
{ ciapzero : forall x:R, ciP x -> x[#]0;
ciplus : forall x y:R, ciP (x[+]y) -> ciP x or ciP y;
cimult : forall x y:R, ciP (x[*]y) -> ciP x and ciP y;
cinontriv : ciP 1}.
Record coideal : Type :=
{ cipred :> wd_pred R;
ciproof : is_coideal cipred}.
End Ideals.
Section Ideal_Axioms.
Variable R : CRing.
Variable I : ideal R.
Variable C : coideal R.
Lemma ideal_is_ideal : is_ideal I.
Lemma coideal_is_coideal : is_coideal C.
Lemma coideal_apzero : forall x:R, C x -> x[#]0.
Lemma coideal_nonzero : ~ (C 0).
Lemma coideal_plus : forall x y:R, C (x[+]y) -> C x or C y.
Lemma coideal_mult : forall x y:R, C (x[*]y) -> C x and C y.
Lemma coideal_nontriv : C 1.
Lemma coideal_wd : forall x y:R, x[=]y -> C x -> C y.
End Ideal_Axioms.