1
0
mirror of https://github.com/kalmarek/SmallHyperbolic synced 2024-07-27 13:05:31 +02:00

format groupparse

This commit is contained in:
Marek Kaluba 2022-01-18 02:20:23 +01:00
parent 6a112e15fd
commit 8339cbd5cf
No known key found for this signature in database
GPG Key ID: 8BF1A3855328FC15

View File

@ -4,7 +4,8 @@ comm(a,b,args...) = comm(comm(a,b), args...)
const MAGMA_PRESENTATION_regex = r"Group<\s?(?<gens>.*)\s?\|\s?(?<rels>.*)\s?>" const MAGMA_PRESENTATION_regex = r"Group<\s?(?<gens>.*)\s?\|\s?(?<rels>.*)\s?>"
const COMMUTATOR_regex = r"\((?<comm>[\w](\s?,\s?[\w]){1+})\)" const COMMUTATOR_regex = r"\((?<comm>[\w](\s?,\s?[\w]){1+})\)"
iscomment(line) = startswith(line, "//") iscomment(line) = startswith(line, "//")
ismagma_presentation(line) = (m = match(MAGMA_PRESENTATION_regex, line); return !isnothing(m), m) ismagma_presentation(line) =
(m = match(MAGMA_PRESENTATION_regex, line); return !isnothing(m), m)
@ -42,7 +43,10 @@ function parse_magma_fpgroup(str::AbstractString)
return parse_magma_fpgroup(gens_str, rels_strs) return parse_magma_fpgroup(gens_str, rels_strs)
end end
function parse_magma_fpgroup(gens_str::AbstractVector{<:AbstractString}, rels_str::AbstractVector{<:AbstractString}) function parse_magma_fpgroup(
gens_str::AbstractVector{<:AbstractString},
rels_str::AbstractVector{<:AbstractString},
)
gens_arr = Symbol.(gens_str) gens_arr = Symbol.(gens_str)
gens_expr = Expr(:tuple, gens_arr...) gens_expr = Expr(:tuple, gens_arr...)
@ -52,7 +56,7 @@ function parse_magma_fpgroup(gens_str::AbstractVector{<:AbstractString}, rels_st
F = FreeGroup(String.(gens_str)) F = FreeGroup(String.(gens_str))
relations = @eval begin relations = @eval begin
$gens_expr = AbstractAlgebra.gens($F); $gens_expr = AbstractAlgebra.gens($F)
$rels_expr $rels_expr
end end