70 lines
2.2 KiB
Julia
70 lines
2.2 KiB
Julia
using ArgParse
|
||
|
||
###############################################################################
|
||
#
|
||
# Parsing command line
|
||
#
|
||
###############################################################################
|
||
|
||
function parse_commandline()
|
||
s = ArgParseSettings()
|
||
|
||
@add_arg_table s begin
|
||
"--tol"
|
||
help = "set numerical tolerance for the SDP solver"
|
||
arg_type = Float64
|
||
default = 1e-6
|
||
"--iterations"
|
||
help = "set maximal number of iterations for the SDP solver"
|
||
arg_type = Int
|
||
default = 50000
|
||
"--upper-bound"
|
||
help = "Set an upper bound for the spectral gap"
|
||
arg_type = Float64
|
||
default = Inf
|
||
"--cpus"
|
||
help = "Set number of cpus used by solver (default: auto)"
|
||
arg_type = Int
|
||
required = false
|
||
"--radius"
|
||
help = "Radius of ball B_r(e,S) to find solution over"
|
||
arg_type = Int
|
||
default = 2
|
||
"--warmstart"
|
||
help = "Use warmstart.jld as the initial guess for SCS"
|
||
action = :store_true
|
||
"--nosymmetry"
|
||
help = "Don't use symmetries of the Laplacian"
|
||
action = :store_true
|
||
"N"
|
||
help = "Compute for the automorphisms group of the free group on N generators"
|
||
arg_type = Int
|
||
required = true
|
||
end
|
||
return parse_args(s)
|
||
end
|
||
const PARSEDARGS = parse_commandline()
|
||
|
||
#=
|
||
Note that the element
|
||
α(i,j,k) = ϱ(i,j)*ϱ(i,k)*inv(ϱ(i,j))*inv(ϱ(i,k)),
|
||
which surely belongs to ball of radius 4 in Aut(Fₙ) becomes trivial under the representation
|
||
Aut(Fₙ) → GLₙ(ℤ)⋉ℤⁿ → GL_(n+1)(ℂ).
|
||
Moreover, due to work of Potapchik and Rapinchuk [1] every real representation of Aut(Fₙ) into GLₘ(ℂ) (for m ≤ 2n-2) factors through GLₙ(ℤ)⋉ℤⁿ, so will have the same problem.
|
||
|
||
We need a different approach: Here we actually compute in (S)Aut(𝔽ₙ)
|
||
=#
|
||
|
||
include("CPUselect.jl")
|
||
set_parallel_mthread(PARSEDARGS, workers=true)
|
||
|
||
include("main.jl")
|
||
|
||
G = PropertyTGroups.SpecialAutomorphismGroup(PARSEDARGS)
|
||
|
||
if PARSEDARGS["nosymmetry"]
|
||
main(Standard, G)
|
||
else
|
||
main(Symmetrize, G)
|
||
end
|