diff --git a/mihxil-algebra/src/main/java/org/meeuw/math/abstractalgebra/dihedral/DihedralGroup.java b/mihxil-algebra/src/main/java/org/meeuw/math/abstractalgebra/dihedral/DihedralGroup.java index 202c8704..0fcd3ee2 100644 --- a/mihxil-algebra/src/main/java/org/meeuw/math/abstractalgebra/dihedral/DihedralGroup.java +++ b/mihxil-algebra/src/main/java/org/meeuw/math/abstractalgebra/dihedral/DihedralGroup.java @@ -20,11 +20,11 @@ public class DihedralGroup implements Group, Streamable, UnaryOp private final DihedralGroup group; - static DihedralSymmetry r(int k, DihedralGroup diHedralGroup) { - return new DihedralSymmetry(r, k, diHedralGroup); + static DihedralSymmetry r(int k, DihedralGroup dihedralGroup) { + return new DihedralSymmetry(r, k, dihedralGroup); } - static DihedralSymmetry s(int k, DihedralGroup diHedralGroup) { - return new DihedralSymmetry(s, k, diHedralGroup); + + static DihedralSymmetry s(int k, DihedralGroup dihedralGroup) { + return new DihedralSymmetry(s, k, dihedralGroup); } public static DihedralSymmetry r(int k, int n) { @@ -41,17 +42,17 @@ public static DihedralSymmetry s(int k, int n) { } - private DihedralSymmetry(Symmetry symmetry, int k, DihedralGroup diHedralGroup) { + private DihedralSymmetry(Symmetry symmetry, int k, DihedralGroup dihedralGroup) { this.symmetry = symmetry; if (k < 0) { throw new InvalidElementCreationException(symmetry.name() + k + " is impossible"); } this.k = k; - if (k >= diHedralGroup.n) { - throw new InvalidElementCreationException(symmetry.name() + k + " is impossible for " + diHedralGroup); + if (k >= dihedralGroup.n) { + throw new InvalidElementCreationException(symmetry.name() + k + " is impossible for " + dihedralGroup); } - this.group = diHedralGroup; + this.group = dihedralGroup; } private DihedralSymmetry(Symmetry symmetry, int k, int n) { diff --git a/mihxil-math/src/main/java/org/meeuw/math/abstractalgebra/MultiplicativeMonoidElement.java b/mihxil-math/src/main/java/org/meeuw/math/abstractalgebra/MultiplicativeMonoidElement.java index 388595d1..8db00e34 100644 --- a/mihxil-math/src/main/java/org/meeuw/math/abstractalgebra/MultiplicativeMonoidElement.java +++ b/mihxil-math/src/main/java/org/meeuw/math/abstractalgebra/MultiplicativeMonoidElement.java @@ -17,7 +17,7 @@ import jakarta.validation.constraints.Min; -import org.meeuw.math.exceptions.ReciprocalException; +import org.meeuw.math.exceptions.IllegalPowerException; /** * An element of the {@link MultiplicativeMonoid} structure. @@ -39,7 +39,7 @@ public interface MultiplicativeMonoidElement */ -public interface Ring> extends Rng { +public interface Ring> extends Rng, MultiplicativeMonoid { + + + NavigableSet OPERATORS = Rng.OPERATORS; + NavigableSet UNARY_OPERATORS = Rng.UNARY_OPERATORS; - E one(); /** * Given a (square) matrix of elements of this Ring, calculate its determinant. diff --git a/mihxil-math/src/main/java/org/meeuw/math/abstractalgebra/RingElement.java b/mihxil-math/src/main/java/org/meeuw/math/abstractalgebra/RingElement.java index 8ff1fbcf..f28ff391 100644 --- a/mihxil-math/src/main/java/org/meeuw/math/abstractalgebra/RingElement.java +++ b/mihxil-math/src/main/java/org/meeuw/math/abstractalgebra/RingElement.java @@ -20,7 +20,7 @@ * @author Michiel Meeuwissen * @since 0.4 */ -public interface RingElement> extends RngElement { +public interface RingElement> extends RngElement, MultiplicativeMonoidElement { @Override Ring getStructure(); diff --git a/mihxil-theories/src/main/java/org/meeuw/theories/abstractalgebra/DivisionRingTheory.java b/mihxil-theories/src/main/java/org/meeuw/theories/abstractalgebra/DivisionRingTheory.java index 0fcfe011..5eb3db57 100644 --- a/mihxil-theories/src/main/java/org/meeuw/theories/abstractalgebra/DivisionRingTheory.java +++ b/mihxil-theories/src/main/java/org/meeuw/theories/abstractalgebra/DivisionRingTheory.java @@ -31,6 +31,7 @@ * @since 0.4 */ public interface DivisionRingTheory> extends + RingTheory, MultiplicativeGroupTheory, AdditiveGroupTheory { @@ -54,15 +55,4 @@ default void operatorEnums( .isEqualTo((e1.plus(e2).sqr()).negation()); } - @Property - default void distributivity ( - @ForAll(ELEMENTS) E v1, - @ForAll(ELEMENTS) E v2, - @ForAll(ELEMENTS) E v3 - ) { - assertThat(v1.times(v2.plus(v3))) - .usingComparator(eqComparator()) - .isEqualTo(v1.times(v2).plus(v1.times(v3))); - } - } diff --git a/mihxil-theories/src/main/java/org/meeuw/theories/abstractalgebra/RingTheory.java b/mihxil-theories/src/main/java/org/meeuw/theories/abstractalgebra/RingTheory.java index 8f749c0d..3739e249 100644 --- a/mihxil-theories/src/main/java/org/meeuw/theories/abstractalgebra/RingTheory.java +++ b/mihxil-theories/src/main/java/org/meeuw/theories/abstractalgebra/RingTheory.java @@ -21,16 +21,28 @@ import org.meeuw.math.abstractalgebra.RingElement; import static org.assertj.core.api.Assertions.assertThat; +import static org.meeuw.math.abstractalgebra.AlgebraicElement.eqComparator; /** * @author Michiel Meeuwissen * @since 0.4 */ -public interface RingTheory> extends AdditiveGroupTheory, RngTheory { +public interface RingTheory> extends AdditiveGroupTheory, RngTheory , MultiplicativeMonoidTheory { @Property default void one( @ForAll(ELEMENTS) E v) { assertThat(v.times(v.getStructure().one())).isEqualTo(v); } + + @Property + default void distributivity ( + @ForAll(ELEMENTS) E v1, + @ForAll(ELEMENTS) E v2, + @ForAll(ELEMENTS) E v3 + ) { + assertThat(v1.times(v2.plus(v3))) + .usingComparator(eqComparator()) + .isEqualTo(v1.times(v2).plus(v1.times(v3))); + } }