GroupsCore

The aim of this package is to standardize the common assumptions and functions on group i.e. to create Group interface.

The protocol consists of two parts:

This is due to the fact that hardly any information can be encoded in Type, we rely on parent objects that represent groups, as well as ordinary group elements. It is assumed that all elements of a group 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_GroupElement_interface (generic function with 1 method)

julia> include(joinpath(pathof(GroupsCore), "..", "..", "test", "cyclic.jl"))

julia> let C = CyclicGroup(15)
           test_Group_interface(C)
           test_GroupElement_interface(rand(C, 2)...)
           nothing
       end
Test Summary:   | Pass  Total  Time
Group interface |   21     21  0.0s
Test Summary:          | Pass  Total  Time
GroupElement interface |   91     91  0.0s

Users

The Oscar.jl project no longer supports GroupsCore.jl interface at version 0.5. See these comments.