algebra

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 16, 2026 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Overview

Package algebra provides algebraic interfaces and generic helpers for groups, rings, fields, modules, and related algebraic structures.

Index

Constants

View Source
const (
	TypeI   = crtp.TypeI
	TypeII  = crtp.TypeII
	TypeIII = crtp.TypeIII
)

Variables

View Source
var (
	ErrInvalidType = errs.New("invalid type")
)

Functions

func Addition

func Addition[E Summand[E]](a, b E) E

func And

func And[E Conjunct[E]](a, b E) E

func Compare

func Compare[E base.WithInternalCompareMethod[E]](lhs, rhs E) base.Ordering

func Division

func Division[E Dividend[E]](a, b E) E

func DualOperator

func DualOperator[E DualOperand[E]](a, b E) E

func Equal

func Equal[E base.Equatable[E]](a, b E) bool

func Exponentiate

func Exponentiate[A ExponentiationBase[A, E], E Element[E]](b A, exponent E) A

func FixedCapacityAddition

func FixedCapacityAddition[E FixedCapacitySummand[E]](a, b E, capacity int) E

func FixedCapacityDivision

func FixedCapacityDivision[E FixedCapacityDividend[E]](a, b E, capacity int) E

func FixedCapacityDualOperator

func FixedCapacityDualOperator[E FixedCapacityDualOperand[E]](a, b E, capacity int) E

func FixedCapacityExponentiate

func FixedCapacityExponentiate[A FixedCapacityExponentiationBase[A, E], E Element[E]](b A, exponent E, capacity int) A

func FixedCapacityMultiplication

func FixedCapacityMultiplication[E FixedCapacityMultiplicand[E]](a, b E, capacity int) E

func FixedCapacityOperator

func FixedCapacityOperator[E FixedCapacityOperand[E]](a, b E, capacity int) E

func FixedCapacitySubtraction

func FixedCapacitySubtraction[E FixedCapacityMinuend[E]](a, b E, capacity int) E

func FixedLengthLeftBitwiseShift

func FixedLengthLeftBitwiseShift[E FixedLengthLeftBitwiseShiftable[E]](a E, shift uint, capacity int) E

func FixedLengthRightBitwiseShift

func FixedLengthRightBitwiseShift[E FixedLengthRightBitwiseShiftable[E]](a E, shift uint, capacity int) E

func Invert

func Invert[E Inversand[E]](a E) E

func IsLessThanOrEqual

func IsLessThanOrEqual[E base.Comparable[E]](lhs, rhs E) bool

func LeftBitwiseShift

func LeftBitwiseShift[E LeftBitwiseShiftable[E]](a E, shift uint) E

func MaybeAddition

func MaybeAddition[E MaybeSummand[E]](a, b E) (E, error)

func MaybeAnd

func MaybeAnd[E MaybeConjunct[E]](a, b E) (E, error)

func MaybeDivision

func MaybeDivision[E MaybeDividend[E]](a, b E) (E, error)

func MaybeExponentiate

func MaybeExponentiate[A MaybeExponentiationBase[A, E], E Element[E]](b A, exponent E) (A, error)

func MaybeFixedCapacityAddition

func MaybeFixedCapacityAddition[E MaybeFixedCapacitySummand[E]](a, b E, capacity int) (E, error)

func MaybeFixedCapacityDivision

func MaybeFixedCapacityDivision[E MaybeFixedCapacityDividend[E]](a, b E, capacity int) (E, error)

func MaybeFixedCapacityExponentiate

func MaybeFixedCapacityExponentiate[A MaybeFixedCapacityExponentiationBase[A, E], E Element[E]](b A, exponent E, capacity int) (A, error)

func MaybeFixedCapacityMultiplication

func MaybeFixedCapacityMultiplication[E MaybeFixedCapacityMultiplicand[E]](a, b E, capacity int) (E, error)

func MaybeFixedCapacitySubtraction

func MaybeFixedCapacitySubtraction[E MaybeFixedCapacityMinuend[E]](a, b E, capacity int) (E, error)

func MaybeInvert

func MaybeInvert[E MaybeInversand[E]](a E) (E, error)

func MaybeMultiplication

func MaybeMultiplication[E MaybeMultiplicand[E]](a, b E) (E, error)

func MaybeNegate

func MaybeNegate[E MaybeArithmeticNegand[E]](a E) (E, error)

func MaybeNot

func MaybeNot[E MaybeBooleanNegand[E]](a E) (E, error)

func MaybeOr

func MaybeOr[E MaybeDisjunct[E]](a, b E) (E, error)

func MaybeShift

func MaybeShift[E MaybeShiftable[E, S], S any](a E, shift S) (E, error)

func MaybeSubtraction

func MaybeSubtraction[E MaybeMinuend[E]](a, b E) (E, error)

func MaybeXor

func MaybeXor[E MaybeExclusiveDisjunct[E]](a, b E) (E, error)

func Modulo

func Modulo[E Residuand[M, Q], M Element[M], Q Residue[Q, M]](x E, m M) (Q, error)

func Multiplication

func Multiplication[E Multiplicand[E]](a, b E) E

func Negate

func Negate[E ArithmeticNegand[E]](a E) E

func Not

func Not[E BooleanNegand[E]](a E) E

func Operator

func Operator[E Operand[E]](a, b E) E

func Or

func Or[E Disjunct[E]](a, b E) E

func PartialCompare

func PartialCompare[E base.WithInternalPartialCompareMethod[E]](lhs, rhs E) base.PartialOrdering

func Resize

func Resize[E Resizable[E, C], C any](a E, capacity C) E

func ResizeCapacity

func ResizeCapacity[E ResizableCapacity[E]](a E, capacity int) E

func RightBitwiseShift

func RightBitwiseShift[E RightBitwiseShiftable[E]](a E, shift uint) E

func ScalarExponentiate

func ScalarExponentiate[E MultiplicativelyActable[E, S], S Element[S]](sc S, a E) E

func ScalarMultiply

func ScalarMultiply[E AdditivelyActable[E, S], S Element[S]](sc S, a E) E

func ScalarOp

func ScalarOp[E Actable[E, S], S Element[S]](sc S, a E) E

func Shift

func Shift[E Shiftable[E, S], S any](a E, shift S) E

func StructureAs

func StructureAs[S crtp.Structure[E], E any](s Structure[E]) (S, error)

func StructureIs

func StructureIs[S crtp.Structure[E], E any](s Structure[E]) bool

func StructureMustBeAs

func StructureMustBeAs[S crtp.Structure[E], E any](s Structure[E]) S

func Subtraction

func Subtraction[E Minuend[E]](a, b E) E

func Xor

func Xor[E ExclusiveDisjunct[E]](a, b E) E

Types

type AbelianGroup

type AbelianGroup[E crtp.AbelianGroupElement[E, S], S crtp.RingElement[S]] = crtp.AbelianGroup[E, S]

Ab ~= Mod_Z, however due to type system constraints we cannot express this directly without breaking some things (e.g. ZMod would have to be considered as a euclidean domain) So we leave it under-constrained as a RingElement, just to satisfy properties of a module.

type AbelianGroupElement

type AbelianGroupElement[E crtp.AbelianGroupElement[E, S], S crtp.RingElement[S]] = crtp.AbelianGroupElement[E, S]

type Actable

type Actable[E, S any] crtp.Actable[E, S]

type Action

type Action[S, E any] func(actor S, element E) E

type AdditiveGroup

type AdditiveGroup[E crtp.AdditiveGroupElement[E]] = crtp.AdditiveGroup[E]

type AdditiveGroupElement

type AdditiveGroupElement[E crtp.AdditiveGroupElement[E]] = crtp.AdditiveGroupElement[E]

type AdditiveModule

type AdditiveModule[ME crtp.AdditiveModuleElement[ME, S], S crtp.RingElement[S]] crtp.AdditiveModule[ME, S]

type AdditiveModuleElement

type AdditiveModuleElement[ME crtp.AdditiveModuleElement[ME, S], S crtp.RingElement[S]] crtp.AdditiveModuleElement[ME, S]

type AdditiveMonoid

type AdditiveMonoid[ME crtp.AdditiveMonoidElement[ME]] = crtp.AdditiveMonoid[ME]

type AdditiveMonoidElement

type AdditiveMonoidElement[ME crtp.AdditiveMonoidElement[ME]] = crtp.AdditiveMonoidElement[ME]

type AdditiveSemiGroup

type AdditiveSemiGroup[E crtp.AdditiveSemiGroupElement[E]] = crtp.AdditiveSemiGroup[E]

type AdditiveSemiModule

type AdditiveSemiModule[ME crtp.AdditiveSemiModuleElement[ME, S], S crtp.SemiRingElement[S]] crtp.AdditiveSemiModule[ME, S]

type AdditivelyActable

type AdditivelyActable[E, S any] crtp.AdditivelyActable[E, S]

type AdditivelyHomomorphicLike

type AdditivelyHomomorphicLike[T HomomorphicLike[T, TV], TV AdditiveSemiGroupElement[TV]] interface {
	HomomorphicLike[T, TV]
	crtp.Summand[T]
}

type AdditivelyHomomorphicLikeInCoDomain

type AdditivelyHomomorphicLikeInCoDomain[T HomomorphicLike[T, TV], TV GroupElement[TV]] interface {
	HomomorphicLike[T, TV]
	HomomorphicSummand[T]
}

type AffineCurve

type AffineCurve[P crtp.AffinePoint[P, C], C crtp.RingElement[C]] crtp.AffineCurve[P, C]

type AffinePoint

type AffinePoint[P crtp.AffinePoint[P, C], C crtp.RingElement[C]] crtp.AffinePoint[P, C]

type Algebra

type Algebra[AE crtp.AlgebraElement[AE, S], S crtp.RingElement[S]] crtp.Algebra[AE, S]

type AlgebraElement

type AlgebraElement[AE crtp.AlgebraElement[AE, S], S crtp.RingElement[S]] crtp.AlgebraElement[AE, S] //nolint:revive // algebra.AlgebraElement is meaningful because they relate to two different meaning of algebra.

type AlgebraicCurve

type AlgebraicCurve[P crtp.AlgebraicPoint[P, C], C crtp.RingElement[C]] crtp.AlgebraicCurve[P, C]

type AlgebraicPoint

type AlgebraicPoint[P crtp.AlgebraicPoint[P, C], C crtp.RingElement[C]] crtp.AlgebraicPoint[P, C]

type ArithmeticNegand

type ArithmeticNegand[E any] crtp.ArithmeticNegand[E]

type BooleanNegand

type BooleanNegand[E any] crtp.BooleanNegand[E]

type Cardinal

type Cardinal = crtp.Cardinal

type CoProduct

type CoProduct[P, C any] = crtp.CoProduct[P, C]

type Conjunct

type Conjunct[E any] crtp.Conjunct[E]

type CyclicGroup

type CyclicGroup[E crtp.CyclicGroupElement[E]] = crtp.CyclicGroup[E]

type CyclicGroupElement

type CyclicGroupElement[E crtp.CyclicGroupElement[E]] = crtp.CyclicGroupElement[E]

type CyclicMonoid

type CyclicMonoid[ME crtp.CyclicMonoidElement[ME]] = crtp.CyclicMonoid[ME]

type CyclicMonoidElement

type CyclicMonoidElement[ME crtp.CyclicMonoidElement[ME]] = crtp.CyclicMonoidElement[ME]

type CyclicSemiGroup

type CyclicSemiGroup[E crtp.CyclicSemiGroupElement[E]] = crtp.CyclicSemiGroup[E]

type CyclicSemiGroupElement

type CyclicSemiGroupElement[E crtp.CyclicSemiGroupElement[E]] = crtp.CyclicSemiGroupElement[E]

type Disjunct

type Disjunct[E any] crtp.Disjunct[E]

type Dividend

type Dividend[E any] crtp.Dividend[E]

type DoubleMagma

type DoubleMagma[E crtp.DoubleMagmaElement[E]] crtp.DoubleMagma[E]

type DoubleMagmaElement

type DoubleMagmaElement[E crtp.DoubleMagmaElement[E]] crtp.DoubleMagmaElement[E]

type DualOperand

type DualOperand[E any] crtp.DualOperand[E]

type Element

type Element[E any] = crtp.Element[E]

type EllipticCurve

type EllipticCurve[P crtp.EllipticCurvePoint[P, B, S], B crtp.FieldElement[B], S crtp.UintLike[S]] crtp.EllipticCurve[P, B, S]

type EllipticCurvePoint

type EllipticCurvePoint[P crtp.EllipticCurvePoint[P, B, S], B crtp.FieldElement[B], S crtp.UintLike[S]] crtp.EllipticCurvePoint[P, B, S]

type EuclideanDomain

type EuclideanDomain[RE crtp.EuclideanDomainElement[RE]] crtp.EuclideanDomain[RE]

type EuclideanDomainElement

type EuclideanDomainElement[RE crtp.EuclideanDomainElement[RE]] crtp.EuclideanDomainElement[RE]

type ExclusiveDisjunct

type ExclusiveDisjunct[E any] crtp.ExclusiveDisjunct[E]

type ExponentiationBase

type ExponentiationBase[B, E any] crtp.ExponentiationBase[B, E]

type Field

type Field[FE crtp.FieldElement[FE]] = crtp.Field[FE]

type FieldElement

type FieldElement[FE crtp.FieldElement[FE]] = crtp.FieldElement[FE]

type FieldExtension

type FieldExtension[FE crtp.FieldExtensionElement[FE]] = crtp.FieldExtension[FE]

type FieldExtensionElement

type FieldExtensionElement[FE crtp.FieldExtensionElement[FE]] = crtp.FieldExtensionElement[FE]

type FiniteField

type FiniteField[FE crtp.FiniteFieldElement[FE]] = crtp.FiniteField[FE]

type FiniteFieldElement

type FiniteFieldElement[FE crtp.FiniteFieldElement[FE]] = crtp.FiniteFieldElement[FE]

type FiniteGroup

type FiniteGroup[GE crtp.GroupElement[GE]] = crtp.FiniteGroup[GE]

type FiniteModule

type FiniteModule[ME crtp.ModuleElement[ME, S], S crtp.RingElement[S]] = crtp.FiniteModule[ME, S]

type FiniteRing

type FiniteRing[RE crtp.RingElement[RE]] = crtp.FiniteRing[RE]

type FiniteStructure

type FiniteStructure[E any] = crtp.FiniteStructure[E]

type FixedCapacityDividend

type FixedCapacityDividend[E any] crtp.FixedCapacityDividend[E]

type FixedCapacityDualOperand

type FixedCapacityDualOperand[E any] crtp.FixedCapacityDualOperand[E]

type FixedCapacityExponentiationBase

type FixedCapacityExponentiationBase[B, E any] crtp.FixedCapacityExponentiationBase[B, E]

type FixedCapacityIntegerExponentiationBase

type FixedCapacityIntegerExponentiationBase[B, I any] crtp.FixedCapacityIntegerExponentiationBase[B, I]

type FixedCapacityMinuend

type FixedCapacityMinuend[E any] crtp.FixedCapacityMinuend[E]

type FixedCapacityMultiplicand

type FixedCapacityMultiplicand[E any] crtp.FixedCapacityMultiplicand[E]

type FixedCapacityOperand

type FixedCapacityOperand[E any] crtp.FixedCapacityOperand[E]

type FixedCapacitySummand

type FixedCapacitySummand[E any] crtp.FixedCapacitySummand[E]

type FixedLengthLeftBitwiseShiftable

type FixedLengthLeftBitwiseShiftable[E any] crtp.FixedLengthLeftBitwiseShiftable[E]

type FixedLengthRightBitwiseShiftable

type FixedLengthRightBitwiseShiftable[E any] crtp.FixedLengthRightBitwiseShiftable[E]

type Group

type Group[E crtp.GroupElement[E]] = crtp.Group[E]

type GroupElement

type GroupElement[E crtp.GroupElement[E]] = crtp.GroupElement[E]

type HemiRing

type HemiRing[E crtp.HemiRingElement[E]] crtp.HemiRing[E]

type HemiRingElement

type HemiRingElement[E crtp.HemiRingElement[E]] crtp.HemiRingElement[E]

type HomomorphicLike

type HomomorphicLike[T any, TV SemiGroupElement[TV]] interface {
	base.Transparent[TV]
	crtp.Operand[T]
	base.Equatable[T]
}

type HomomorphicMinued

type HomomorphicMinued[T any] interface {
	HomSub(T) T
}

type HomomorphicNegand

type HomomorphicNegand[T any] interface {
	HomNeg() T
}

type HomomorphicSummand

type HomomorphicSummand[T any] interface {
	HomAdd(T) T
}

type Homomorphism

type Homomorphism[E2 SemiGroupElement[E2], E1 SemiGroupElement[E1]] func(E1) E2

type IntLike

type IntLike[E crtp.IntLike[E]] crtp.IntLike[E]

type IntegerExponentiationBase

type IntegerExponentiationBase[B, I any] crtp.IntegerExponentiationBase[B, I]

type Inversand

type Inversand[E any] crtp.Inversand[E]

type LeftBitwiseShiftable

type LeftBitwiseShiftable[E any] crtp.LeftBitwiseShiftable[E]

type Magma

type Magma[E crtp.MagmaElement[E]] = crtp.Magma[E]

type MagmaElement

type MagmaElement[E crtp.MagmaElement[E]] = crtp.MagmaElement[E]

type Mapping

type Mapping[F, C any] = crtp.Mapping[F, C]

type MaybeArithmeticNegand

type MaybeArithmeticNegand[E any] crtp.MaybeArithmeticNegand[E]

type MaybeBooleanNegand

type MaybeBooleanNegand[E any] crtp.MaybeBooleanNegand[E]

type MaybeConjunct

type MaybeConjunct[E any] crtp.MaybeConjunct[E]

type MaybeDisjunct

type MaybeDisjunct[E any] crtp.MaybeDisjunct[E]

type MaybeDividend

type MaybeDividend[E any] crtp.MaybeDividend[E]

type MaybeExclusiveDisjunct

type MaybeExclusiveDisjunct[E any] crtp.MaybeExclusiveDisjunct[E]

type MaybeExponentiationBase

type MaybeExponentiationBase[B, E any] crtp.MaybeExponentiationBase[B, E]

type MaybeFixedCapacityDividend

type MaybeFixedCapacityDividend[E any] crtp.MaybeFixedCapacityDividend[E]

type MaybeFixedCapacityExponentiationBase

type MaybeFixedCapacityExponentiationBase[B, E any] crtp.MaybeFixedCapacityExponentiationBase[B, E]

type MaybeFixedCapacityIntegerExponentiationBase

type MaybeFixedCapacityIntegerExponentiationBase[B, I any] crtp.MaybeFixedCapacityIntegerExponentiationBase[B, I]

type MaybeFixedCapacityMinuend

type MaybeFixedCapacityMinuend[E any] crtp.MaybeFixedCapacityMinuend[E]

type MaybeFixedCapacityMultiplicand

type MaybeFixedCapacityMultiplicand[E any] crtp.MaybeFixedCapacityMultiplicand[E]

type MaybeFixedCapacitySummand

type MaybeFixedCapacitySummand[E any] crtp.MaybeFixedCapacitySummand[E]

type MaybeIntegerExponentiationBase

type MaybeIntegerExponentiationBase[B, I any] crtp.MaybeIntegerExponentiationBase[B, I]

type MaybeInversand

type MaybeInversand[E any] crtp.MaybeInversand[E]

type MaybeMinuend

type MaybeMinuend[E any] crtp.MaybeMinuend[E]

type MaybeMultiplicand

type MaybeMultiplicand[E any] crtp.MaybeMultiplicand[E]

type MaybeShiftable

type MaybeShiftable[E, S any] crtp.MaybeShiftable[E, S]

type MaybeSummand

type MaybeSummand[E any] crtp.MaybeSummand[E]

type Minuend

type Minuend[E any] crtp.Minuend[E]

type Module

type Module[ME crtp.ModuleElement[ME, S], S crtp.RingElement[S]] = crtp.Module[ME, S]

type ModuleElement

type ModuleElement[ME crtp.ModuleElement[ME, S], S crtp.RingElement[S]] = crtp.ModuleElement[ME, S]

type ModuleValuedPolynomial

type ModuleValuedPolynomial[
	MP crtp.ModuleValuedPolynomial[MP, P, C, S],
	P crtp.Polynomial[P, S],
	C crtp.ModuleElement[C, S],
	S crtp.RingElement[S],
] = crtp.ModuleValuedPolynomial[MP, P, C, S]

type Monoid

type Monoid[ME crtp.MonoidElement[ME]] = crtp.Monoid[ME]

type MonoidElement

type MonoidElement[ME crtp.MonoidElement[ME]] = crtp.MonoidElement[ME]

type MultiVariatePolynomialRing

type MultiVariatePolynomialRing[
	PP crtp.MultivariatePolynomial[PP, P, S],
	P crtp.Polynomial[P, S],
	S crtp.RingElement[S],
] = crtp.MultivariatePolynomialRing[PP, P, S]

type Multiplicand

type Multiplicand[E any] crtp.Multiplicand[E]

type MultiplicativeModule

type MultiplicativeModule[ME crtp.MultiplicativeModuleElement[ME, S], S crtp.RingElement[S]] crtp.MultiplicativeModule[ME, S]

type MultiplicativeModuleElement

type MultiplicativeModuleElement[ME crtp.MultiplicativeModuleElement[ME, S], S crtp.RingElement[S]] crtp.MultiplicativeModuleElement[ME, S]

type MultiplicativeMonoid

type MultiplicativeMonoid[ME crtp.MultiplicativeMonoidElement[ME]] = crtp.MultiplicativeMonoid[ME]

type MultiplicativelyActable

type MultiplicativelyActable[E, S any] crtp.MultiplicativelyActable[E, S]

type MultiplicativelyHomomorphicLike

type MultiplicativelyHomomorphicLike[T HomomorphicLike[T, TV], TV MultiplicativeSemiGroupElement[TV]] interface {
	HomomorphicLike[T, TV]
	crtp.Multiplicand[T]
}

type MultivariatePolynomial

type MultivariatePolynomial[
	MP crtp.MultivariatePolynomial[MP, P, S],
	P crtp.Polynomial[P, S],
	S crtp.RingElement[S],
] = crtp.MultivariatePolynomial[MP, P, S]

type NAry

type NAry[C any] = crtp.NAry[C]

type NLike

type NLike[E NatLike[E]] crtp.NLike[E]

type NPlusLike

type NPlusLike[E NatPlusLike[E]] crtp.NPlusLike[E]

type NatLike

type NatLike[E crtp.NatLike[E]] crtp.NatLike[E]

type NatPlusLike

type NatPlusLike[E crtp.NatPlusLike[E]] crtp.NatPlusLike[E]

type Numeric

type Numeric = crtp.Numeric

type NumericStructure

type NumericStructure[E Numeric] = crtp.NumericStructure[E]

type Operand

type Operand[E any] crtp.Operand[E]

type PairingFriendlyCurve

type PairingFriendlyCurve[
	P1 PairingFriendlyPoint[P1, B1, P2, B2, E, S], B1 crtp.FieldElement[B1],
	P2 PairingFriendlyPoint[P2, B2, P1, B1, E, S], B2 crtp.FieldElement[B2],
	E crtp.MultiplicativeGroupElement[E], S crtp.PrimeFieldElement[S], DualStructureType any,
] interface {
	crtp.PairingFriendlyCurve[P1, B1, P2, E, S, DualStructureType]
	PrimeOrderEllipticCurve[P1, B1, S]
}

type PairingFriendlyPoint

type PairingFriendlyPoint[
	P1 crtp.PairingFriendlyPoint[P1, B1, P2, E, S], B1 crtp.FieldElement[B1],
	P2 crtp.PairingFriendlyPoint[P2, B2, P1, E, S], B2 crtp.FieldElement[B2],
	E crtp.MultiplicativeGroupElement[E], S crtp.PrimeFieldElement[S],
] interface {
	crtp.PairingFriendlyPoint[P1, B1, P2, E, S]
	PrimeOrderEllipticCurvePoint[P1, B1, S]
}

type PairingName

type PairingName = crtp.PairingAlgorithm

type PairingProductEvaluator

type PairingProductEvaluator[
	P1 PairingFriendlyPoint[P1, B1, P2, B2, E, S], B1 crtp.FieldElement[B1],
	P2 PairingFriendlyPoint[P2, B2, P1, B1, E, S], B2 crtp.FieldElement[B2],
	E crtp.MultiplicativeGroupElement[E], S crtp.PrimeFieldElement[S],
] = crtp.PairingProductEvaluator[P1, P2, E]

type PairingType

type PairingType = crtp.PairingType

type Polynomial

type Polynomial[
	P crtp.Polynomial[P, S],
	S crtp.RingElement[S],
] = crtp.Polynomial[P, S]

type PolynomialLike

type PolynomialLike[
	P crtp.PolynomialLike[P, S, C],
	S crtp.RingElement[S],
	C crtp.GroupElement[C],
] = crtp.PolynomialLike[P, S, C]

type PolynomialLikeStructure

type PolynomialLikeStructure[
	P crtp.PolynomialLike[P, S, C],
	S crtp.RingElement[S],
	C crtp.GroupElement[C],
] = crtp.PolynomialLikeStructure[P, S, C]

type PolynomialModule

type PolynomialModule[
	MP crtp.ModuleValuedPolynomial[MP, P, C, S],
	P crtp.Polynomial[P, S],
	C crtp.ModuleElement[C, S],
	S crtp.RingElement[S],
] = crtp.PolynomialModule[MP, P, C, S]

type PolynomialRing

type PolynomialRing[
	P crtp.Polynomial[P, S],
	S crtp.RingElement[S],
] = crtp.PolynomialRing[P, S]

type Power

type Power[P, C any] = crtp.Power[P, C]

type PrimeField

type PrimeField[E PrimeFieldElement[E]] crtp.PrimeField[E]

type PrimeFieldElement

type PrimeFieldElement[E crtp.PrimeFieldElement[E]] crtp.PrimeFieldElement[E]

type PrimeGroup

type PrimeGroup[E crtp.PrimeGroupElement[E, S], S crtp.PrimeFieldElement[S]] = crtp.PrimeGroup[E, S]

type PrimeGroupElement

type PrimeGroupElement[E crtp.PrimeGroupElement[E, S], S crtp.PrimeFieldElement[S]] = crtp.PrimeGroupElement[E, S]

type PrimeOrderEllipticCurve

type PrimeOrderEllipticCurve[P crtp.EllipticCurvePoint[P, B, S], B crtp.FieldElement[B], S crtp.PrimeFieldElement[S]] interface {
	crtp.EllipticCurve[P, B, S]
	crtp.AdditivePrimeGroup[P, S]
}

type PrimeOrderEllipticCurvePoint

type PrimeOrderEllipticCurvePoint[P crtp.EllipticCurvePoint[P, B, S], B crtp.FieldElement[B], S crtp.PrimeFieldElement[S]] interface {
	crtp.EllipticCurvePoint[P, B, S]
	crtp.AdditivePrimeGroupElement[P, S]
}

type Product

type Product[P, C any] = crtp.Product[P, C]

type Quotient

type Quotient[E, M, A any] = crtp.Quotient[E, M, A]

type RationalPoint

type RationalPoint[E crtp.RationalPoint[E, C], C crtp.RingElement[C]] crtp.RationalPoint[E, C]

type Residuand

type Residuand[M, Q any] crtp.Residuand[M, Q]

type Residue

type Residue[E, M any] = crtp.Residue[E, M]

type Resizable

type Resizable[E, C any] crtp.Resizable[E, C]

type ResizableCapacity

type ResizableCapacity[E any] crtp.ResizableCapacity[E]

type Rig

type Rig[RE crtp.RigElement[RE]] crtp.Rig[RE]

type RigElement

type RigElement[RE crtp.RigElement[RE]] crtp.RigElement[RE]

type RightBitwiseShiftable

type RightBitwiseShiftable[E any] crtp.RightBitwiseShiftable[E]

type Ring

type Ring[RE crtp.RingElement[RE]] = crtp.Ring[RE]

type RingElement

type RingElement[RE crtp.RingElement[RE]] = crtp.RingElement[RE]

type Rng

type Rng[RE crtp.RngElement[RE]] crtp.Rng[RE]

type RngElement

type RngElement[RE crtp.RngElement[RE]] crtp.RngElement[RE]

type SemiGroup

type SemiGroup[E crtp.SemiGroupElement[E]] = crtp.SemiGroup[E]

type SemiGroupElement

type SemiGroupElement[E crtp.SemiGroupElement[E]] = crtp.SemiGroupElement[E]

type SemiModule

type SemiModule[ME crtp.SemiModuleElement[ME, S], S crtp.SemiRingElement[S]] = crtp.SemiModule[ME, S]

type SemiModuleElement

type SemiModuleElement[ME crtp.SemiModuleElement[ME, S], S crtp.SemiRingElement[S]] = crtp.SemiModuleElement[ME, S]

type SemiRing

type SemiRing[RE crtp.SemiRingElement[RE]] crtp.SemiRing[RE]

type SemiRingElement

type SemiRingElement[RE crtp.SemiRingElement[RE]] crtp.SemiRingElement[RE]

type Shiftable

type Shiftable[E, S any] crtp.Shiftable[E, S]

type Structure

type Structure[E any] = crtp.Structure[E]

type Summand

type Summand[E any] crtp.Summand[E]

type Tensor

type Tensor[E, S any] = crtp.Tensor[E, S]

type TensorProduct

type TensorProduct[E, C, S any] = crtp.TensorProduct[E, C, S]

type UintLike

type UintLike[E crtp.UintLike[E]] crtp.UintLike[E]

type UnivariatePolynomialLike

type UnivariatePolynomialLike[
	P crtp.UnivariatePolynomialLike[P, S, C, SS, CS],
	S crtp.RingElement[S],
	C crtp.GroupElement[C],
	SS crtp.Structure[S],
	CS crtp.Structure[C],
] = crtp.UnivariatePolynomialLike[P, S, C, SS, CS]

type UnivariatePolynomialLikeStructure

type UnivariatePolynomialLikeStructure[
	P crtp.UnivariatePolynomialLike[P, S, C, SS, CS],
	S crtp.RingElement[S],
	C crtp.GroupElement[C],
	SS crtp.Structure[S],
	CS crtp.Structure[C],
] = crtp.UnivariatePolynomialLikeStructure[P, S, C]

type Variety

type Variety[E crtp.RationalPoint[E, C], C crtp.RingElement[C]] crtp.Variety[E, C]

type Vector

type Vector[V crtp.Vector[V, S], S crtp.FieldElement[S]] crtp.Vector[V, S]

type VectorSpace

type VectorSpace[V crtp.Vector[V, S], S crtp.FieldElement[S]] crtp.VectorSpace[V, S]

type ZLike

type ZLike[E IntLike[E]] crtp.ZLike[E]

type ZModLike

type ZModLike[E UintLike[E]] crtp.ZModLike[E]

Directories

Path Synopsis
fields
Package fields provides low-level field element traits used by generated finite field implementations.
Package fields provides low-level field element traits used by generated finite field implementations.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL