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:
GrouporMonoid(parent object) methods,GroupElementorMonoidElementmethods.
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 GroupsCorejulia> 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.