Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
3decfe8
First pass at adding code snippet tests to abstract groups
rvisser7 Mar 15, 2026
5792383
Add Oscar to sidebar code languages for abstract groups
rvisser7 Mar 16, 2026
6e9c06c
Add Oscar abstract group code snippets and refactor top code snippet …
rvisser7 Mar 17, 2026
f00304f
Further fixes to abstract group code snippets
rvisser7 Mar 17, 2026
afb06b1
Add more support for sage commands using the gap interface
rvisser7 Mar 17, 2026
8ca508b
Add abstract group code snippet tests for sage and oscar
rvisser7 Mar 18, 2026
14a5d28
Small updates and corrections to groups code snippets
rvisser7 Mar 18, 2026
3f6360c
Update sage and oscar code snippet abstract group tests
rvisser7 Mar 18, 2026
3307e42
More improved group code snippets
rvisser7 Mar 18, 2026
8264e61
Add GAP snippet test command
havarddj Mar 18, 2026
d6e728b
Refactor construction of Lie snippet code, and add more Oscar and sag…
rvisser7 Mar 19, 2026
f64f7d6
Add code snippets for transitive groups, and various refactoring
rvisser7 Mar 20, 2026
e91f604
Bug fixes for transitive group code snippets
rvisser7 Mar 20, 2026
b133c2c
Add Gap code snippets for Galois groups, and small bug fix to Chevall…
rvisser7 Mar 20, 2026
ac794e8
Add new log snippet test files for abstract groups
rvisser7 Mar 20, 2026
a847735
Various bug fixes, fixed Oscar matrix code and Lie rep code
rvisser7 Mar 21, 2026
562d7b2
Various further bug fixes and updates to groups code snippets
rvisser7 Mar 21, 2026
fe0dbd4
Some final bug fixes and cleanup
rvisser7 Mar 21, 2026
f5c6028
Merge branch 'main' into abstract_groups
rvisser7 Mar 21, 2026
b7f2bb1
Add some more Lie type supported families for Oscar and Sage
rvisser7 Mar 21, 2026
9492e88
Merge branch 'main' into abstract_groups
rvisser7 Mar 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions lmfdb/galois_groups/code.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@ prompt:
magma: 'magma'
sage: 'sage'
oscar: 'oscar'
gap: 'gap'

logo:
magma: <img src = "https://i.stack.imgur.com/0468s.png" width="50px">
sage: <img src ="https://www.sagemath.org/pix/sage_logo_new.png" width = "50px">
oscar: <img src = "https://oscar-system.github.io/Oscar.jl/stable/assets/logo.png" width="50px">
gap: <img src = "https://gap.math.u-bordeaux.fr/logo/Logo%20Couleurs/Logo_GAP-GP_Couleurs_L150px.png" width="50px">

comment:
sage: |
Expand All @@ -15,6 +17,8 @@ comment:
//
oscar: |
#
gap: |
#

not-implemented:
sage: |
Expand All @@ -23,6 +27,9 @@ not-implemented:
// (not yet implemented)
oscar: |
# (not yet implemented)
gap: |
# (not yet implemented)


frontmatter:
all: |
Expand All @@ -33,89 +40,105 @@ gg:
magma: G := TransitiveGroup({n}, {t});
sage: G = TransitiveGroup({n}, {t})
oscar: G = transitive_group({n}, {t})
gap: G := TransitiveGroup({n}, {t});

n:
comment: Degree
magma: t, n := TransitiveGroupIdentification(G); n;
sage: G.degree()
oscar: degree(G)
gap: NrMovedPoints(G);

t:
comment: Transitive number
magma: t, n := TransitiveGroupIdentification(G); t;
sage: G.transitive_number()
oscar: transitive_group_identification(G)[2]
gap: TransitiveIdentification(G);

primitive:
comment: Determine if group is primitive
magma: IsPrimitive(G);
sage: G.is_primitive()
oscar: is_primitive(G)
gap: IsPrimitive(G);

even:
comment: Parity
magma: IsEven(G);
sage: all(g.SignPerm() == 1 for g in libgap(G).GeneratorsOfGroup())
oscar: is_even(G)
gap: ForAll(GeneratorsOfGroup(G), g -> SignPerm(g) = 1);

nilpotent:
comment: Nilpotency class
magma: NilpotencyClass(G);
sage: libgap(G).NilpotencyClassOfGroup() if G.is_nilpotent() else -1
oscar: if is_nilpotent(G) nilpotency_class(G) end
gap: if IsNilpotentGroup(G) then NilpotencyClassOfGroup(G); fi;

auts:
comment: Order of the centralizer of G in S_n
magma: Order(Centralizer(SymmetricGroup(n), G));
sage: SymmetricGroup({n}).centralizer(G).order()
oscar: order(centralizer(symmetric_group({n}), G)[1])
gap: Order(Centralizer(SymmetricGroup({n}), G));

gens:
comment: Generators
magma: Generators(G);
sage: G.gens()
oscar: gens(G)
gap: GeneratorsOfGroup(G);

ccs:
comment: Conjugacy classes
magma: ConjugacyClasses(G);
sage: G.conjugacy_classes()
oscar: conjugacy_classes(G)
gap: ConjugacyClasses(G);

order:
comment: Order
magma: Order(G);
sage: G.order()
oscar: order(G)
gap: Order(G);

cyclic:
comment: Determine if group is cyclic
magma: IsCyclic(G);
sage: G.is_cyclic()
oscar: is_cyclic(G)
gap: IsCyclic(G);

abelian:
comment: Determine if group is abelian
magma: IsAbelian(G);
sage: G.is_abelian()
oscar: is_abelian(G)
gap: IsAbelian(G);

solvable:
comment: Determine if group is solvable
magma: IsSolvable(G);
sage: G.is_solvable()
oscar: is_solvable(G)
gap: IsSolvable(G);

id:
comment: Abstract group ID
magma: IdentifyGroup(G);
sage: G.id()
oscar: small_group_identification(G)
gap: IdGroup(G);

char_table:
comment: Character table
magma: CharacterTable(G);
sage: G.character_table()
oscar: character_table(G)
gap: CharacterTable(G);


# specify which code snippets to test
Expand Down
2 changes: 1 addition & 1 deletion lmfdb/galois_groups/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,7 @@ def render_group_webpage(args):
data['dispv'] = sparse_cyclotomic_to_mathml
data['malle_a'] = wgg.malle_a
downloads = []
for lang in [("Magma", "magma"), ("Oscar", "oscar"), ("SageMath", "sage")]:
for lang in [("Gap", "gap"), ("Magma", "magma"), ("Oscar", "oscar"), ("SageMath", "sage")]:
downloads.append(('{} commands'.format(lang[0]), url_for(".gg_code_download", label=label, download_type=lang[1])))
downloads.append(('Underlying data', url_for(".gg_data", label=label)))
# split the label so that breadcrumbs point to a search for this object's degree
Expand Down
Loading
Loading