GroupsCore
The aim of this package is to standardize the common assumptions and functions on group i.e. to create Group/Monoid interface.
Due to the fact that hardly any information can be encoded in Type
, the interface consists of two parts:
Group
orMonoid
(parent object) methods,GroupElement
orMonoidElement
methods.
We rely on parent objects that represent groups/monoids, and separate types for elements. It is assumed that all elements of a group or monoid have identical parent (i.e. ===
) so that parent objects behave locally as singletons.
Examples and Conformance testing
For an implemented interface please have a look at /test
folder, where several example implementations are tested against the conformance test suite:
To test the conformance of e.g. CyclicGroup
defined above one can run
julia> using GroupsCore
julia> include(joinpath(pathof(GroupsCore), "..", "..", "test", "conformance_test.jl"))
test_GroupsCore_interface (generic function with 2 methods)
julia> include(joinpath(pathof(GroupsCore), "..", "..", "test", "cyclic.jl"))
julia> let C = CyclicGroup(15) test_GroupsCore_interface(C) # optionally if particular two group elements are to be tested: # g, h = rand(C, 2) # test_GroupsCore_interface(g, h) nothing end
Test Summary: | Pass Total Time Monoid interface | 117 117 2.7s
Users
The Oscar.jl
project no longer supports GroupsCore.jl
interface at version 0.5
. See these comments.