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:

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 endTest 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.