using PropertyT include("FPGroups_GAP.jl") include("groups/Allgroups.jl") using PropertyTGroups import PropertyT.Settings function summarize(sett::PropertyT.Settings) info("Threads: $(Threads.nthreads())") info("Workers: $(workers())") info("GroupDir: $(PropertyT.prepath(sett))") info(string(sett.G)) info("with generating set of size $(length(sett.S))") info("Radius: $(sett.radius)") info("Precision: $(sett.tol)") info("Upper bound: $(sett.upper_bound)") info("Solver: $(sett.solver)") end function Settings(Gr::PropertyTGroup, args, solver) r = get(args, "radius", 2) gr_name = PropertyTGroups.name(Gr)*"_r$r" G = PropertyTGroups.group(Gr) S = PropertyTGroups.generatingset(Gr) sol = solver ub = get(args,"upper-bound", Inf) tol = get(args,"tol", 1e-10) ws = get(args, "warmstart", false) if get(args, "nosymmetry", false) return PropertyT.Settings(gr_name, G, S, r, sol, ub, tol, ws) else autS = PropertyTGroups.autS(Gr) return PropertyT.Settings(gr_name, G, S, r, sol, ub, tol, ws, autS) end end function main(::PropertyTGroup, sett::PropertyT.Settings) isdir(PropertyT.fullpath(sett)) || mkpath(PropertyT.fullpath(sett)) summarize(sett) return PropertyT.check_property_T(sett) end function main(::GAPGroup, sett::PropertyT.Settings) isdir(PropertyT.fullpath(sett)) || mkpath(PropertyT.fullpath(sett)) summarize(sett) S = [s for s in sett.S if s.symbols[1].pow == 1] relations = [k*inv(v) for (k,v) in sett.G.rels] prepare_pm_delta(PropertyT.prepath(sett), GAP_groupcode(S, relations), sett.radius) return PropertyT.check_property_T(sett) end