2019-02-21 16:31:38 +01:00
|
|
|
@testset "1712.07167 Examples" begin
|
|
|
|
|
2019-11-20 13:49:16 +01:00
|
|
|
@testset "SL(3,Z)" begin
|
2019-02-21 16:31:38 +01:00
|
|
|
N = 3
|
2019-07-01 01:38:30 +02:00
|
|
|
G = MatrixAlgebra(zz, N)
|
|
|
|
S = PropertyT.generating_set(G)
|
2020-06-23 16:15:01 +02:00
|
|
|
autS = WreathProduct(SymmetricGroup(2), SymmetricGroup(N))
|
2019-07-01 01:38:30 +02:00
|
|
|
|
2019-11-20 13:49:16 +01:00
|
|
|
NAME = "SL($N,Z)_orbit"
|
|
|
|
|
|
|
|
rm(NAME, recursive=true, force=true)
|
|
|
|
sett = PropertyT.Settings(NAME, G, S, autS, with_SCS(1000, accel=20);
|
2019-10-30 23:56:53 +01:00
|
|
|
upper_bound=0.27, force_compute=false)
|
2019-07-01 01:38:30 +02:00
|
|
|
|
2019-10-30 23:56:53 +01:00
|
|
|
@info sett
|
2019-07-01 01:38:30 +02:00
|
|
|
|
|
|
|
λ = PropertyT.spectral_gap(sett)
|
|
|
|
@test λ < 0.0
|
|
|
|
@test PropertyT.interpret_results(sett, λ) == false
|
|
|
|
|
2019-10-30 23:56:53 +01:00
|
|
|
# second run just checks the solution due to force_compute=false above
|
2019-07-01 01:38:30 +02:00
|
|
|
@test λ == PropertyT.spectral_gap(sett)
|
2019-02-21 16:31:38 +01:00
|
|
|
@test PropertyT.check_property_T(sett) == false
|
|
|
|
|
2019-11-20 13:49:16 +01:00
|
|
|
sett = PropertyT.Settings(NAME, G, S, autS, with_SCS(4000, accel=20);
|
2019-10-30 23:56:53 +01:00
|
|
|
upper_bound=0.27, force_compute=true)
|
2019-07-01 01:38:30 +02:00
|
|
|
|
2019-10-30 23:56:53 +01:00
|
|
|
@info sett
|
2019-07-01 01:38:30 +02:00
|
|
|
|
|
|
|
λ = PropertyT.spectral_gap(sett)
|
|
|
|
@test λ > 0.269999
|
|
|
|
@test PropertyT.interpret_results(sett, λ) == true
|
|
|
|
|
|
|
|
# this should be very fast due to warmstarting:
|
|
|
|
@test λ ≈ PropertyT.spectral_gap(sett) atol=1e-5
|
2019-02-21 16:31:38 +01:00
|
|
|
@test PropertyT.check_property_T(sett) == true
|
2019-07-05 18:57:39 +02:00
|
|
|
|
|
|
|
##########
|
2020-06-23 16:15:01 +02:00
|
|
|
# Symmetrizing by SymmetricGroup(3):
|
2019-07-05 18:57:39 +02:00
|
|
|
|
2020-06-23 16:15:01 +02:00
|
|
|
sett = PropertyT.Settings(NAME, G, S, SymmetricGroup(N), with_SCS(4000, accel=20, warm_start=false);
|
2019-10-30 23:56:53 +01:00
|
|
|
upper_bound=0.27, force_compute=true)
|
2019-07-05 18:57:39 +02:00
|
|
|
|
2019-10-30 23:56:53 +01:00
|
|
|
@info sett
|
2019-07-05 18:57:39 +02:00
|
|
|
|
|
|
|
λ = PropertyT.spectral_gap(sett)
|
|
|
|
@test λ > 0.269999
|
|
|
|
@test PropertyT.interpret_results(sett, λ) == true
|
2019-02-21 16:31:38 +01:00
|
|
|
end
|
2019-07-01 01:38:30 +02:00
|
|
|
|
2019-11-20 13:49:16 +01:00
|
|
|
@testset "SL(4,Z)" begin
|
2019-02-21 16:31:38 +01:00
|
|
|
N = 4
|
2019-07-01 01:38:30 +02:00
|
|
|
G = MatrixAlgebra(zz, N)
|
|
|
|
S = PropertyT.generating_set(G)
|
2020-06-23 16:15:01 +02:00
|
|
|
autS = WreathProduct(SymmetricGroup(2), SymmetricGroup(N))
|
2019-07-01 01:38:30 +02:00
|
|
|
|
2019-11-20 13:49:16 +01:00
|
|
|
NAME = "SL($N,Z)_orbit"
|
|
|
|
|
|
|
|
rm(NAME, recursive=true, force=true)
|
2020-10-17 02:08:51 +02:00
|
|
|
sett = PropertyT.Settings(NAME, G, S, autS, with_SCS(1000, accel=20);
|
2019-10-30 23:56:53 +01:00
|
|
|
upper_bound=1.3, force_compute=false)
|
2019-07-01 01:38:30 +02:00
|
|
|
|
2019-10-30 23:56:53 +01:00
|
|
|
@info sett
|
2019-07-01 01:38:30 +02:00
|
|
|
|
|
|
|
λ = PropertyT.spectral_gap(sett)
|
|
|
|
@test λ < 0.0
|
|
|
|
@test PropertyT.interpret_results(sett, λ) == false
|
|
|
|
|
2019-10-30 23:56:53 +01:00
|
|
|
# second run just checks the solution due to force_compute=false above
|
2019-07-01 01:38:30 +02:00
|
|
|
@test λ == PropertyT.spectral_gap(sett)
|
2019-02-21 16:31:38 +01:00
|
|
|
@test PropertyT.check_property_T(sett) == false
|
|
|
|
|
2021-02-21 19:17:01 +01:00
|
|
|
sett = PropertyT.Settings(NAME, G, S, autS, with_SCS(7000, accel=20, warm_start=true);
|
2019-10-30 23:56:53 +01:00
|
|
|
upper_bound=1.3, force_compute=true)
|
2019-07-01 01:38:30 +02:00
|
|
|
|
2019-10-30 23:56:53 +01:00
|
|
|
@info sett
|
2019-07-01 01:38:30 +02:00
|
|
|
|
2021-02-21 19:17:01 +01:00
|
|
|
@time λ = PropertyT.spectral_gap(sett)
|
2019-07-01 01:38:30 +02:00
|
|
|
@test λ > 1.2999
|
|
|
|
@test PropertyT.interpret_results(sett, λ) == true
|
|
|
|
|
|
|
|
# this should be very fast due to warmstarting:
|
2021-02-21 19:17:01 +01:00
|
|
|
@time @test λ ≈ PropertyT.spectral_gap(sett) atol=1e-5
|
|
|
|
@time @test PropertyT.check_property_T(sett) == true
|
2019-02-21 16:31:38 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
@testset "SAut(F₃)" begin
|
|
|
|
N = 3
|
|
|
|
G = SAut(FreeGroup(N))
|
2019-07-01 01:38:30 +02:00
|
|
|
S = PropertyT.generating_set(G)
|
2020-06-23 16:15:01 +02:00
|
|
|
autS = WreathProduct(SymmetricGroup(2), SymmetricGroup(N))
|
2019-07-01 01:38:30 +02:00
|
|
|
|
2019-11-20 13:49:16 +01:00
|
|
|
NAME = "SAut(F$N)_orbit"
|
|
|
|
|
|
|
|
rm(NAME, recursive=true, force=true)
|
2019-07-01 01:38:30 +02:00
|
|
|
|
2019-11-20 13:49:16 +01:00
|
|
|
sett = PropertyT.Settings(NAME, G, S, autS, with_SCS(1000);
|
2019-10-30 23:56:53 +01:00
|
|
|
upper_bound=0.15)
|
2019-07-01 01:38:30 +02:00
|
|
|
|
2019-10-30 23:56:53 +01:00
|
|
|
@info sett
|
2019-07-01 01:38:30 +02:00
|
|
|
|
2019-02-21 16:31:38 +01:00
|
|
|
@test PropertyT.check_property_T(sett) == false
|
|
|
|
end
|
|
|
|
end
|