mirror of
https://github.com/Smaug123/agdaproofs
synced 2025-10-16 08:58:39 +00:00
More rings stuff (#83)
This commit is contained in:
@@ -2,8 +2,10 @@
|
||||
|
||||
open import LogicalFormulae
|
||||
open import Groups.Groups
|
||||
open import Groups.Lemmas
|
||||
open import Groups.Homomorphisms.Definition
|
||||
open import Groups.Definition
|
||||
open import Groups.Subgroups.Definition
|
||||
open import Numbers.Naturals.Naturals
|
||||
open import Setoids.Orders
|
||||
open import Setoids.Setoids
|
||||
@@ -17,13 +19,29 @@ open import Agda.Primitive using (Level; lzero; lsuc; _⊔_)
|
||||
|
||||
module Rings.Ideals.Definition {a b : _} {A : Set a} {S : Setoid {a} {b} A} {_+_ _*_ : A → A → A} (R : Ring S _+_ _*_) where
|
||||
|
||||
open import Groups.Subgroups.Definition (Ring.additiveGroup R)
|
||||
open Ring R
|
||||
open Setoid S
|
||||
open Equivalence eq
|
||||
open Group additiveGroup
|
||||
|
||||
open import Rings.Lemmas R
|
||||
|
||||
record Ideal {c : _} (pred : A → Set c) : Set (a ⊔ b ⊔ c) where
|
||||
field
|
||||
isSubgroup : Subgroup pred
|
||||
isSubgroup : Subgroup additiveGroup pred
|
||||
accumulatesTimes : {x : A} → {y : A} → pred x → pred (x * y)
|
||||
closedUnderPlus = Subgroup.closedUnderPlus isSubgroup
|
||||
closedUnderInverse = Subgroup.closedUnderInverse isSubgroup
|
||||
containsIdentity = Subgroup.containsIdentity isSubgroup
|
||||
isSubset = Subgroup.isSubset isSubgroup
|
||||
predicate = pred
|
||||
|
||||
generatedIdealPred : A → A → Set (a ⊔ b)
|
||||
generatedIdealPred a b = Sg A (λ c → Setoid._∼_ S (a * c) b)
|
||||
|
||||
generatedIdeal : (a : A) → Ideal (generatedIdealPred a)
|
||||
Subgroup.isSubset (Ideal.isSubgroup (generatedIdeal a)) {x} {y} x=y (c , prC) = c , transitive prC x=y
|
||||
Subgroup.closedUnderPlus (Ideal.isSubgroup (generatedIdeal a)) {g} {h} (c , prC) (d , prD) = (c + d) , transitive *DistributesOver+ (+WellDefined prC prD)
|
||||
Subgroup.containsIdentity (Ideal.isSubgroup (generatedIdeal a)) = 0G , timesZero
|
||||
Subgroup.closedUnderInverse (Ideal.isSubgroup (generatedIdeal a)) {g} (c , prC) = inverse c , transitive ringMinusExtracts (inverseWellDefined additiveGroup prC)
|
||||
Ideal.accumulatesTimes (generatedIdeal a) {x} {y} (c , prC) = (c * y) , transitive *Associative (*WellDefined prC reflexive)
|
||||
|
Reference in New Issue
Block a user