From c7491f37f96aa5e8d5715a15e6f108c319904c58 Mon Sep 17 00:00:00 2001 From: Marek Kaluba Date: Mon, 19 Feb 2024 18:20:35 +0100 Subject: [PATCH 1/9] make sure Q'*Q hits the fast path for IntervalMatrices --- src/certify.jl | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/certify.jl b/src/certify.jl index 004cadf..d4a6c0a 100644 --- a/src/certify.jl +++ b/src/certify.jl @@ -8,7 +8,7 @@ function augment_columns!(Q::AbstractMatrix) return Q end -function __sos_via_sqr!( +function __sos_via_square!( res::SA.AlgebraElement, P::AbstractMatrix; augmented::Bool, @@ -50,14 +50,19 @@ function __sos_via_cnstr!( return res end +__square(Q::AbstractMatrix) = Q' * Q +function __square(Q::IntervalMatrices.IntervalMatrix) + return *(IntervalMatrices.MultiplicationType{:fast}(), Q', Q) +end + function compute_sos( A::SA.StarAlgebra, Q::AbstractMatrix; augmented::Bool, ) - Q² = Q' * Q + Q² = __square(Q) res = SA.AlgebraElement(zeros(eltype(Q²), length(SA.basis(A))), A) - res = __sos_via_sqr!(res, Q²; augmented = augmented) + res = __sos_via_square!(res, Q²; augmented = augmented) return res end From 3b9c75604ca6fdca03d908da806fd849f6ec00c8 Mon Sep 17 00:00:00 2001 From: Marek Kaluba Date: Mon, 19 Feb 2024 18:39:01 +0100 Subject: [PATCH 2/9] in reconstruct: accumulate to a single matrix --- src/reconstruct.jl | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/reconstruct.jl b/src/reconstruct.jl index 777f54e..581309c 100644 --- a/src/reconstruct.jl +++ b/src/reconstruct.jl @@ -12,10 +12,9 @@ function reconstruct( wbdec::SW.WedderburnDecomposition, ) n = __outer_dim(wbdec) - res = sum(zip(Ms, SW.direct_summands(wbdec))) do (M, ds) - res = similar(M, n, n) + res = zeros(eltype(first(Ms)), n, n) + for (M, ds) in zip(Ms, SW.direct_summands(wbdec)) res = _reconstruct!(res, M, ds) - return res end res = average!(zero(res), res, __group_of(wbdec), wbdec.hom) return res @@ -26,11 +25,10 @@ function _reconstruct!( M::AbstractMatrix, ds::SW.DirectSummand, ) - res .= zero(eltype(res)) if !iszero(M) U = SW.image_basis(ds) d = SW.degree(ds) - res = (U' * M * U) .* d + res .+= (U' * M * U) .* d end return res end From 526def226e4b87ed20a3f7f388198271e73f79c8 Mon Sep 17 00:00:00 2001 From: Marek Kaluba Date: Mon, 19 Feb 2024 18:42:42 +0100 Subject: [PATCH 3/9] PG.degree is not guaranteed to be constant --- src/actions/spn_conjugation.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/actions/spn_conjugation.jl b/src/actions/spn_conjugation.jl index 96112b1..23ac4d1 100644 --- a/src/actions/spn_conjugation.jl +++ b/src/actions/spn_conjugation.jl @@ -5,7 +5,6 @@ function _conj( σ::PG.AbstractPermutation, ) where {N,T} @assert iseven(N) - @assert PG.degree(σ) ≤ N ÷ 2 "Got degree = $(PG.degree(σ)); N = $N" n = N ÷ 2 @assert 1 ≤ s.i ≤ N @assert 1 ≤ s.j ≤ N From f584df4c8d04e4b3dc2397fd5e1100541eb17094 Mon Sep 17 00:00:00 2001 From: Marek Kaluba Date: Mon, 19 Feb 2024 18:43:17 +0100 Subject: [PATCH 4/9] fix: solution[:warm] saving and loading --- scripts/utils.jl | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/scripts/utils.jl b/scripts/utils.jl index 65fbf57..f2b695c 100644 --- a/scripts/utils.jl +++ b/scripts/utils.jl @@ -30,17 +30,20 @@ end function solve_in_loop(model::JuMP.Model, args...; logdir, optimizer, data) @info "logging to $logdir" status = JuMP.UNKNOWN_RESULT_STATUS - warm = try - solution = deserialize(joinpath(logdir, "solution.sjl")) - warm = solution[:warm] - @info "trying to warm-start model with λ=$(solution[:λ])..." - warm - catch - nothing - end old_lambda = 0.0 certified = false while status != JuMP.OPTIMAL + + warm = try + solution = deserialize(joinpath(logdir, "solution.sjl")) + warm = solution[:warm] + @info "trying to warm-start model with λ=$(solution[:λ])..." + warm + catch e + @info "could not find warmstart or \"solution.sjl\" does not exist in $logdir:" e + nothing + end + date = now() log_file = joinpath(logdir, "solver_$date.log") @info "Current logfile is $log_file." @@ -54,11 +57,11 @@ function solve_in_loop(model::JuMP.Model, args...; logdir, optimizer, data) @time PropertyT.solve(log_file, model, optimizer, warm) solution = get_solution(model, args...) + solution[:warm] = warm + serialize(joinpath(logdir, "solution_$date.sjl"), solution) serialize(joinpath(logdir, "solution.sjl"), solution) - solution[:warm] = warm - certified, λ_cert = open(log_file; append = true) do io with_logger(SimpleLogger(io)) do return PropertyT.certify_solution( @@ -84,7 +87,7 @@ function solve_in_loop(model::JuMP.Model, args...; logdir, optimizer, data) rel_change = abs(certified_λ - old_lambda) / (abs(certified_λ) + abs(old_lambda)) - @info "Relatie improement for λ" rel_change + @info "Relative improvement for λ" rel_change if rel_change < 1e-9 @info "No progress detected, breaking" certified_λ rel_change status return certified, certified_λ From 01ae87b4da2676ea169e7e9f4032bd0706a9b6b3 Mon Sep 17 00:00:00 2001 From: Marek Kaluba Date: Mon, 19 Feb 2024 18:45:02 +0100 Subject: [PATCH 5/9] update/add scripts for SLNZ/SAutFn --- scripts/SAutFN_has_T.jl | 100 ++++++++++++++++++++++++++++++++++++++++ scripts/SLNZ_has_T.jl | 19 ++++---- scripts/SLn_Adj.jl | 96 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 205 insertions(+), 10 deletions(-) create mode 100644 scripts/SAutFN_has_T.jl create mode 100644 scripts/SLn_Adj.jl diff --git a/scripts/SAutFN_has_T.jl b/scripts/SAutFN_has_T.jl new file mode 100644 index 0000000..6dff61b --- /dev/null +++ b/scripts/SAutFN_has_T.jl @@ -0,0 +1,100 @@ +using LinearAlgebra +BLAS.set_num_threads(4) +ENV["OMP_NUM_THREADS"] = 4 +include(joinpath(@__DIR__, "../test/optimizers.jl")) +using SCS_MKL_jll + +using Groups +import Groups.MatrixGroups + +using PropertyT + +import PropertyT.SW as SW +using PropertyT.PG +using PropertyT.SA +include(joinpath(@__DIR__, "argparse.jl")) + +const N = parsed_args["N"] +const HALFRADIUS = parsed_args["halfradius"] +const UPPER_BOUND = parsed_args["upper_bound"] + +G = SpecialAutomorphismGroup(FreeGroup(N)) +@info "Running Δ² - λ·Δ sum of squares decomposition for " G + +@info "computing group algebra structure" +RG, S, sizes = @time PropertyT.group_algebra(G, halfradius = HALFRADIUS) + +@info "computing WedderburnDecomposition" +wd = let RG = RG, N = N + G = StarAlgebras.object(RG) + P = PermGroup(perm"(1,2)", Perm(circshift(1:N, -1))) + Σ = Groups.Constructions.WreathProduct(PermGroup(perm"(1,2)"), P) + act = PropertyT.action_by_conjugation(G, Σ) + + wdfl = @time SW.WedderburnDecomposition( + Float64, + Σ, + act, + basis(RG), + StarAlgebras.Basis{UInt16}(@view basis(RG)[1:sizes[HALFRADIUS]]), + ) +end +@info wd + +Δ = RG(length(S)) - sum(RG(s) for s in S) +elt = Δ^2; +unit = Δ; +warm = nothing + +@info "defining optimization problem" +@time model, varP = PropertyT.sos_problem_primal( + elt, + unit, + wd; + upper_bound = UPPER_BOUND, + augmented = true, + show_progress = true, +) + +let status = JuMP.OPTIMIZE_NOT_CALLED, warm = warm, eps = 1e-10 + certified, λ = false, 0.0 + while status ≠ JuMP.OPTIMAL + @time status, warm = PropertyT.solve( + model, + scs_optimizer(; + linear_solver = SCS.MKLDirectSolver, + eps = eps, + max_iters = N * 10_000, + accel = 50, + alpha = 1.95, + ), + warm, + ) + + @info "reconstructing the solution" + Q = @time let wd = wd, Ps = [JuMP.value.(P) for P in varP], eps = 1e-10 + PropertyT.__droptol!.(Ps, 100eps) + Qs = real.(sqrt.(Ps)) + PropertyT.__droptol!.(Qs, eps) + + PropertyT.reconstruct(Qs, wd) + end + + @info "certifying the solution" + certified, λ = PropertyT.certify_solution( + elt, + unit, + JuMP.objective_value(model), + Q; + halfradius = HALFRADIUS, + augmented = true, + ) + end + + if certified && λ > 0 + Κ(λ, S) = round(sqrt(2λ / length(S)), Base.RoundDown; digits = 5) + @info "Certified result: $G has property (T):" N λ Κ(λ, S) + else + @info "Could NOT certify the result:" certified λ + end +end diff --git a/scripts/SLNZ_has_T.jl b/scripts/SLNZ_has_T.jl index 0c36f4e..49140bb 100644 --- a/scripts/SLNZ_has_T.jl +++ b/scripts/SLNZ_has_T.jl @@ -1,18 +1,17 @@ using LinearAlgebra -using MKL_jll BLAS.set_num_threads(4) - ENV["OMP_NUM_THREADS"] = 4 +include(joinpath(@__DIR__, "../test/optimizers.jl")) +using SCS_MKL_jll using Groups import Groups.MatrixGroups -include(joinpath(@__DIR__, "../test/optimizers.jl")) using PropertyT -using PropertyT.SymbolicWedderburn -using PropertyT.PermutationGroups -using PropertyT.StarAlgebras +import PropertyT.SW as SW +using PropertyT.PG +using PropertyT.SA include(joinpath(@__DIR__, "argparse.jl")) @@ -33,7 +32,7 @@ wd = let RG = RG, N = N Σ = Groups.Constructions.WreathProduct(PermGroup(perm"(1,2)"), P) act = PropertyT.action_by_conjugation(G, Σ) - wdfl = @time SymbolicWedderburn.WedderburnDecomposition( + wdfl = @time SW.WedderburnDecomposition( Float64, Σ, act, @@ -61,9 +60,9 @@ begin model, scs_optimizer(; linear_solver = SCS.MKLDirectSolver, - eps = 1e-10, - max_iters = 20_000, - accel = 50, + eps = 1e-9, + max_iters = 30_000, + accel = -50, alpha = 1.95, ), warm, diff --git a/scripts/SLn_Adj.jl b/scripts/SLn_Adj.jl new file mode 100644 index 0000000..68feda6 --- /dev/null +++ b/scripts/SLn_Adj.jl @@ -0,0 +1,96 @@ +using LinearAlgebra +BLAS.set_num_threads(4) +ENV["OMP_NUM_THREADS"] = 4 +include(joinpath(@__DIR__, "../test/optimizers.jl")) +using SCS_MKL_jll + +using Groups +import Groups.MatrixGroups + +using PropertyT + +import PropertyT.SW as SW +using PropertyT.PG +using PropertyT.SA + +include(joinpath(@__DIR__, "argparse.jl")) + +const N = parsed_args["N"] +const HALFRADIUS = parsed_args["halfradius"] +const UPPER_BOUND = parsed_args["upper_bound"] + +G = MatrixGroups.SpecialLinearGroup{N}(Int8) +@info "Running Adj - λ·Δ sum of squares decomposition for " G + +@info "computing group algebra structure" +RG, S, sizes = @time PropertyT.group_algebra(G, halfradius = HALFRADIUS) + +@info "computing WedderburnDecomposition" +wd = let RG = RG, N = N + G = StarAlgebras.object(RG) + P = PermGroup(perm"(1,2)", Perm(circshift(1:N, -1))) + Σ = Groups.Constructions.WreathProduct(PermGroup(perm"(1,2)"), P) + act = PropertyT.action_by_conjugation(G, Σ) + + wdfl = @time SW.WedderburnDecomposition( + Float64, + Σ, + act, + basis(RG), + StarAlgebras.Basis{UInt16}(@view basis(RG)[1:sizes[HALFRADIUS]]), + ) +end +@info wd + +Δ = RG(length(S)) - sum(RG(s) for s in S) +Δs = let ψ = identity + PropertyT.laplacians(RG, S, x -> (gx = PropertyT.grading(ψ(x)); Set([gx, -gx]))) +end +elt = PropertyT.Adj(Δs, :A₂) +unit = Δ +warm = nothing + +@info "defining optimization problem" +@time model, varP = PropertyT.sos_problem_primal( + elt, + unit, + wd; + upper_bound = UPPER_BOUND, + augmented = true, +) + +begin + @time status, warm = PropertyT.solve( + model, + scs_optimizer(; + eps = 1e-10, + max_iters = 20_000, + accel = 50, + alpha = 1.95, + ), + warm, + ) + + @info "reconstructing the solution" + Q = let wd = wd, Ps = [JuMP.value.(P) for P in varP] + Qs = real.(sqrt.(Ps)) + PropertyT.reconstruct(Qs, wd) + end + + @info "certifying the solution" + @time certified, λ = PropertyT.certify_solution( + elt, + unit, + JuMP.objective_value(model), + Q; + halfradius = HALFRADIUS, + augmented = true, + ) +end + +if certified && λ > 0 + Κ(λ, S) = round(sqrt(2λ / length(S)), Base.RoundDown; digits = 5) + @info "Certified result: $G has property (T):" N λ Κ(λ, S) +else + @info "Could NOT certify the result:" certified λ +end From c00a0c15ae41b668a8d0a3ba8c1cf834d190eab4 Mon Sep 17 00:00:00 2001 From: Marek Kaluba Date: Mon, 19 Feb 2024 18:45:12 +0100 Subject: [PATCH 6/9] ignore log --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 3f02ca7..7358010 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ *.jl.*.cov *.jl.mem Manifest.toml +log/* From 7ba02ea21b6beb26669a810239cab99781900ebe Mon Sep 17 00:00:00 2001 From: Marek Kaluba Date: Mon, 19 Feb 2024 18:46:48 +0100 Subject: [PATCH 7/9] add scripts/(Manifest|Project).toml --- scripts/Manifest.toml | 750 ++++++++++++++++++++++++++++++++++++++++++ scripts/Project.toml | 10 + 2 files changed, 760 insertions(+) create mode 100644 scripts/Manifest.toml create mode 100644 scripts/Project.toml diff --git a/scripts/Manifest.toml b/scripts/Manifest.toml new file mode 100644 index 0000000..e2babfb --- /dev/null +++ b/scripts/Manifest.toml @@ -0,0 +1,750 @@ +# This file is machine-generated - editing it directly is not advised + +julia_version = "1.10.0" +manifest_format = "2.0" +project_hash = "b435980f07b6de69a5d6ab1d537b9adb4a603bdd" + +[[deps.AMD]] +deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] +git-tree-sha1 = "45a1272e3f809d36431e57ab22703c6896b8908f" +uuid = "14f7f29c-3bd6-536c-9a0b-7339e30b5a3e" +version = "0.5.3" + +[[deps.AbstractPermutations]] +deps = ["GroupsCore"] +git-tree-sha1 = "fbede79e328d45b2f9258abbb83b1af4a4900a5e" +uuid = "36d08e8a-54dd-435f-8c9e-38a475050b11" +version = "0.3.0" + +[[deps.ArgParse]] +deps = ["Logging", "TextWrap"] +git-tree-sha1 = "d4eccacaa3a632e8717556479d45502af44b4c17" +uuid = "c7e460c6-2fb9-53a9-8c5b-16f535851c63" +version = "1.1.5" + +[[deps.ArgTools]] +uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" +version = "1.1.1" + +[[deps.Artifacts]] +uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" + +[[deps.Base64]] +uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" + +[[deps.BenchmarkTools]] +deps = ["JSON", "Logging", "Printf", "Profile", "Statistics", "UUIDs"] +git-tree-sha1 = "f1f03a9fa24271160ed7e73051fba3c1a759b53f" +uuid = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf" +version = "1.4.0" + +[[deps.Bzip2_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "9e2a6b69137e6969bab0152632dcb3bc108c8bdd" +uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" +version = "1.0.8+1" + +[[deps.COSMO]] +deps = ["AMD", "COSMOAccelerators", "DataStructures", "IterTools", "LinearAlgebra", "MathOptInterface", "Pkg", "Printf", "QDLDL", "Random", "Reexport", "Requires", "SparseArrays", "Statistics", "SuiteSparse", "Test", "UnsafeArrays"] +git-tree-sha1 = "a0531f33abb67c7bddcf0a50cfe88cbf15155d75" +uuid = "1e616198-aa4e-51ec-90a2-23f7fbd31d8d" +version = "0.8.8" + +[[deps.COSMOAccelerators]] +deps = ["LinearAlgebra", "Random", "SparseArrays", "Test"] +git-tree-sha1 = "b1153b40dd95f856e379f25ae335755ecc24298e" +uuid = "bbd8fffe-5ad0-4d78-a55e-85575421b4ac" +version = "0.1.0" + +[[deps.CRlibm]] +deps = ["CRlibm_jll"] +git-tree-sha1 = "32abd86e3c2025db5172aa182b982debed519834" +uuid = "96374032-68de-5a5b-8d9e-752f78720389" +version = "1.0.1" + +[[deps.CRlibm_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "e329286945d0cfc04456972ea732551869af1cfc" +uuid = "4e9b3aee-d8a1-5a3d-ad8b-7d824db253f0" +version = "1.0.1+0" + +[[deps.CodecBzip2]] +deps = ["Bzip2_jll", "Libdl", "TranscodingStreams"] +git-tree-sha1 = "9b1ca1aa6ce3f71b3d1840c538a8210a043625eb" +uuid = "523fee87-0ab8-5b00-afb7-3ecf72e48cfd" +version = "0.8.2" + +[[deps.CodecZlib]] +deps = ["TranscodingStreams", "Zlib_jll"] +git-tree-sha1 = "59939d8a997469ee05c4b4944560a820f9ba0d73" +uuid = "944b1d66-785c-5afd-91f1-9de20f533193" +version = "0.7.4" + +[[deps.CommonSubexpressions]] +deps = ["MacroTools", "Test"] +git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" +uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" +version = "0.3.0" + +[[deps.Compat]] +deps = ["TOML", "UUIDs"] +git-tree-sha1 = "75bd5b6fc5089df449b5d35fa501c846c9b6549b" +uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" +version = "4.12.0" +weakdeps = ["Dates", "LinearAlgebra"] + + [deps.Compat.extensions] + CompatLinearAlgebraExt = "LinearAlgebra" + +[[deps.CompilerSupportLibraries_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" +version = "1.0.5+1" + +[[deps.Conda]] +deps = ["Downloads", "JSON", "VersionParsing"] +git-tree-sha1 = "51cab8e982c5b598eea9c8ceaced4b58d9dd37c9" +uuid = "8f4d0f93-b110-5947-807f-2305c1781a2d" +version = "1.10.0" + +[[deps.Crayons]] +git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" +uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" +version = "4.1.1" + +[[deps.Cyclotomics]] +deps = ["LRUCache", "Memoize", "Primes", "SparseArrays", "Test"] +git-tree-sha1 = "dc2e5fd64c188399434e83fa5c10c6fa4eff962a" +uuid = "da8f5974-afbb-4dc8-91d8-516d5257c83b" +version = "0.3.2" + +[[deps.DataAPI]] +git-tree-sha1 = "abe83f3a2f1b857aac70ef8b269080af17764bbe" +uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" +version = "1.16.0" + +[[deps.DataStructures]] +deps = ["Compat", "InteractiveUtils", "OrderedCollections"] +git-tree-sha1 = "ac67408d9ddf207de5cfa9a97e114352430f01ed" +uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" +version = "0.18.16" + +[[deps.DataValueInterfaces]] +git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" +uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" +version = "1.0.0" + +[[deps.Dates]] +deps = ["Printf"] +uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" + +[[deps.DiffResults]] +deps = ["StaticArraysCore"] +git-tree-sha1 = "782dd5f4561f5d267313f23853baaaa4c52ea621" +uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" +version = "1.1.0" + +[[deps.DiffRules]] +deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] +git-tree-sha1 = "23163d55f885173722d1e4cf0f6110cdbaf7e272" +uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" +version = "1.15.1" + +[[deps.Distributed]] +deps = ["Random", "Serialization", "Sockets"] +uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" + +[[deps.DocStringExtensions]] +deps = ["LibGit2"] +git-tree-sha1 = "2fb1e02f2b635d0845df5d7c167fec4dd739b00d" +uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" +version = "0.9.3" + +[[deps.Downloads]] +deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] +uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" +version = "1.6.0" + +[[deps.ErrorfreeArithmetic]] +git-tree-sha1 = "d6863c556f1142a061532e79f611aa46be201686" +uuid = "90fa49ef-747e-5e6f-a989-263ba693cf1a" +version = "0.5.2" + +[[deps.FastRounding]] +deps = ["ErrorfreeArithmetic", "LinearAlgebra"] +git-tree-sha1 = "6344aa18f654196be82e62816935225b3b9abe44" +uuid = "fa42c844-2597-5d31-933b-ebd51ab2693f" +version = "0.3.1" + +[[deps.FileWatching]] +uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" + +[[deps.ForwardDiff]] +deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions"] +git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" +uuid = "f6369f11-7733-5829-9624-2563aa707210" +version = "0.10.36" +weakdeps = ["StaticArrays"] + + [deps.ForwardDiff.extensions] + ForwardDiffStaticArraysExt = "StaticArrays" + +[[deps.Groups]] +deps = ["GroupsCore", "KnuthBendix", "LinearAlgebra", "Logging", "OrderedCollections", "PermutationGroups", "Random", "StaticArrays"] +git-tree-sha1 = "8226e95326a55de5a8e7b1c24657e12c31c9687c" +uuid = "5d8bd718-bd84-11e8-3b40-ad14f4a32557" +version = "0.8.0" + +[[deps.GroupsCore]] +deps = ["Random"] +git-tree-sha1 = "36b28fedf46e05edbde98ad3ec73d6a5d8897ed1" +uuid = "d5909c97-4eac-4ecc-a3dc-fdd0858a4120" +version = "0.5.0" + +[[deps.IJulia]] +deps = ["Base64", "Conda", "Dates", "InteractiveUtils", "JSON", "Libdl", "Logging", "Markdown", "MbedTLS", "Pkg", "Printf", "REPL", "Random", "SoftGlobalScope", "Test", "UUIDs", "ZMQ"] +git-tree-sha1 = "47ac8cc196b81001a711f4b2c12c97372338f00c" +uuid = "7073ff75-c697-5162-941a-fcdaad2a7d2a" +version = "1.24.2" + +[[deps.IntegerMathUtils]] +git-tree-sha1 = "b8ffb903da9f7b8cf695a8bead8e01814aa24b30" +uuid = "18e54dd8-cb9d-406c-a71d-865a43cbb235" +version = "0.1.2" + +[[deps.IntelOpenMP_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "ad37c091f7d7daf900963171600d7c1c5c3ede32" +uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" +version = "2023.2.0+0" + +[[deps.InteractiveUtils]] +deps = ["Markdown"] +uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" + +[[deps.IntervalArithmetic]] +deps = ["CRlibm", "FastRounding", "LinearAlgebra", "Markdown", "Random", "RecipesBase", "RoundingEmulator", "SetRounding", "StaticArrays"] +git-tree-sha1 = "5ab7744289be503d76a944784bac3f2df7b809af" +uuid = "d1acc4aa-44c8-5952-acd4-ba5d80a2a253" +version = "0.20.9" + +[[deps.IntervalMatrices]] +deps = ["IntervalArithmetic", "LinearAlgebra", "PkgVersion", "Random", "Reexport"] +git-tree-sha1 = "25bc0b69f5b7721d3e604cf532f73bdcc04fc4e1" +uuid = "5c1f47dc-42dd-5697-8aaa-4d102d140ba9" +version = "0.10.0" + +[[deps.IrrationalConstants]] +git-tree-sha1 = "630b497eafcc20001bba38a4651b327dcfc491d2" +uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" +version = "0.2.2" + +[[deps.IterTools]] +git-tree-sha1 = "42d5f897009e7ff2cf88db414a389e5ed1bdd023" +uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" +version = "1.10.0" + +[[deps.IteratorInterfaceExtensions]] +git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" +uuid = "82899510-4779-5014-852e-03e436cf321d" +version = "1.0.0" + +[[deps.JLLWrappers]] +deps = ["Artifacts", "Preferences"] +git-tree-sha1 = "7e5d6779a1e09a36db2a7b6cff50942a0a7d0fca" +uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" +version = "1.5.0" + +[[deps.JSON]] +deps = ["Dates", "Mmap", "Parsers", "Unicode"] +git-tree-sha1 = "31e996f0a15c7b280ba9f76636b3ff9e2ae58c9a" +uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" +version = "0.21.4" + +[[deps.JuMP]] +deps = ["LinearAlgebra", "MacroTools", "MathOptInterface", "MutableArithmetics", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays"] +git-tree-sha1 = "4e44cff1595c6c02cdbca4e87ce376e63c33a584" +uuid = "4076af6c-e467-56ae-b986-b466b2749572" +version = "1.20.0" + + [deps.JuMP.extensions] + JuMPDimensionalDataExt = "DimensionalData" + + [deps.JuMP.weakdeps] + DimensionalData = "0703355e-b756-11e9-17c0-8b28908087d0" + +[[deps.KnuthBendix]] +deps = ["MacroTools", "ProgressMeter"] +git-tree-sha1 = "a5ef62c9f2b4461b246a610b7402f5f2dbffbfaa" +uuid = "c2604015-7b3d-4a30-8a26-9074551ec60a" +version = "0.4.0" + +[[deps.LRUCache]] +git-tree-sha1 = "b3cc6698599b10e652832c2f23db3cab99d51b59" +uuid = "8ac3fa9e-de4c-5943-b1dc-09c6b5f20637" +version = "1.6.1" +weakdeps = ["Serialization"] + + [deps.LRUCache.extensions] + SerializationExt = ["Serialization"] + +[[deps.LaTeXStrings]] +git-tree-sha1 = "50901ebc375ed41dbf8058da26f9de442febbbec" +uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +version = "1.3.1" + +[[deps.LazyArtifacts]] +deps = ["Artifacts", "Pkg"] +uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" + +[[deps.LibCURL]] +deps = ["LibCURL_jll", "MozillaCACerts_jll"] +uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" +version = "0.6.4" + +[[deps.LibCURL_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] +uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" +version = "8.4.0+0" + +[[deps.LibGit2]] +deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] +uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" + +[[deps.LibGit2_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] +uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" +version = "1.6.4+0" + +[[deps.LibSSH2_jll]] +deps = ["Artifacts", "Libdl", "MbedTLS_jll"] +uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" +version = "1.11.0+1" + +[[deps.Libdl]] +uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" + +[[deps.LinearAlgebra]] +deps = ["Libdl", "OpenBLAS_jll", "libblastrampoline_jll"] +uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" + +[[deps.LogExpFunctions]] +deps = ["DocStringExtensions", "IrrationalConstants", "LinearAlgebra"] +git-tree-sha1 = "7d6dd4e9212aebaeed356de34ccf262a3cd415aa" +uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" +version = "0.3.26" + + [deps.LogExpFunctions.extensions] + LogExpFunctionsChainRulesCoreExt = "ChainRulesCore" + LogExpFunctionsChangesOfVariablesExt = "ChangesOfVariables" + LogExpFunctionsInverseFunctionsExt = "InverseFunctions" + + [deps.LogExpFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + ChangesOfVariables = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" + InverseFunctions = "3587e190-3f89-42d0-90ee-14403ec27112" + +[[deps.Logging]] +uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" + +[[deps.MKL_jll]] +deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] +git-tree-sha1 = "eb006abbd7041c28e0d16260e50a24f8f9104913" +uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" +version = "2023.2.0+0" + +[[deps.MacroTools]] +deps = ["Markdown", "Random"] +git-tree-sha1 = "2fa9ee3e63fd3a4f7a9a4f4744a52f4856de82df" +uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" +version = "0.5.13" + +[[deps.Markdown]] +deps = ["Base64"] +uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" + +[[deps.MathOptInterface]] +deps = ["BenchmarkTools", "CodecBzip2", "CodecZlib", "DataStructures", "ForwardDiff", "JSON", "LinearAlgebra", "MutableArithmetics", "NaNMath", "OrderedCollections", "PrecompileTools", "Printf", "SparseArrays", "SpecialFunctions", "Test", "Unicode"] +git-tree-sha1 = "569a003f93d7c64068d3afaab908d21f67a22cd5" +uuid = "b8f27783-ece8-5eb3-8dc8-9495eed66fee" +version = "1.25.3" + +[[deps.MbedTLS]] +deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "NetworkOptions", "Random", "Sockets"] +git-tree-sha1 = "c067a280ddc25f196b5e7df3877c6b226d390aaf" +uuid = "739be429-bea8-5141-9913-cc70e7f3736d" +version = "1.1.9" + +[[deps.MbedTLS_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" +version = "2.28.2+1" + +[[deps.Memoize]] +deps = ["MacroTools"] +git-tree-sha1 = "2b1dfcba103de714d31c033b5dacc2e4a12c7caa" +uuid = "c03570c3-d221-55d1-a50c-7939bbd78826" +version = "0.4.4" + +[[deps.Mmap]] +uuid = "a63ad114-7e13-5084-954f-fe012c677804" + +[[deps.MozillaCACerts_jll]] +uuid = "14a3606d-f60d-562e-9121-12d972cd8159" +version = "2023.1.10" + +[[deps.MutableArithmetics]] +deps = ["LinearAlgebra", "SparseArrays", "Test"] +git-tree-sha1 = "302fd161eb1c439e4115b51ae456da4e9984f130" +uuid = "d8a4904e-b15c-11e9-3269-09a3773c0cb0" +version = "1.4.1" + +[[deps.NaNMath]] +deps = ["OpenLibm_jll"] +git-tree-sha1 = "0877504529a3e5c3343c6f8b4c0381e57e4387e4" +uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" +version = "1.0.2" + +[[deps.NetworkOptions]] +uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" +version = "1.2.0" + +[[deps.OpenBLAS32_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl"] +git-tree-sha1 = "6065c4cff8fee6c6770b277af45d5082baacdba1" +uuid = "656ef2d0-ae68-5445-9ca0-591084a874a2" +version = "0.3.24+0" + +[[deps.OpenBLAS_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] +uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" +version = "0.3.23+2" + +[[deps.OpenLibm_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "05823500-19ac-5b8b-9628-191a04bc5112" +version = "0.8.1+2" + +[[deps.OpenSpecFun_jll]] +deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" +uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" +version = "0.5.5+0" + +[[deps.OrderedCollections]] +git-tree-sha1 = "dfdf5519f235516220579f949664f1bf44e741c5" +uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" +version = "1.6.3" + +[[deps.Parsers]] +deps = ["Dates", "PrecompileTools", "UUIDs"] +git-tree-sha1 = "8489905bcdbcfac64d1daa51ca07c0d8f0283821" +uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" +version = "2.8.1" + +[[deps.PermutationGroups]] +deps = ["AbstractPermutations", "GroupsCore", "PrecompileTools", "Random"] +git-tree-sha1 = "c6e5fdaa1340b59d58d675cd1641c9016809f4a6" +uuid = "8bc5a954-2dfc-11e9-10e6-cd969bffa420" +version = "0.6.2" + +[[deps.Pkg]] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" +version = "1.10.0" + +[[deps.PkgVersion]] +deps = ["Pkg"] +git-tree-sha1 = "f9501cc0430a26bc3d156ae1b5b0c1b47af4d6da" +uuid = "eebad327-c553-4316-9ea0-9fa01ccd7688" +version = "0.3.3" + +[[deps.PrecompileTools]] +deps = ["Preferences"] +git-tree-sha1 = "03b4c25b43cb84cee5c90aa9b5ea0a78fd848d2f" +uuid = "aea7be01-6a6a-4083-8856-8a6e6704d82a" +version = "1.2.0" + +[[deps.Preferences]] +deps = ["TOML"] +git-tree-sha1 = "00805cd429dcb4870060ff49ef443486c262e38e" +uuid = "21216c6a-2e73-6563-6e65-726566657250" +version = "1.4.1" + +[[deps.PrettyTables]] +deps = ["Crayons", "LaTeXStrings", "Markdown", "PrecompileTools", "Printf", "Reexport", "StringManipulation", "Tables"] +git-tree-sha1 = "88b895d13d53b5577fd53379d913b9ab9ac82660" +uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" +version = "2.3.1" + +[[deps.Primes]] +deps = ["IntegerMathUtils"] +git-tree-sha1 = "1d05623b5952aed1307bf8b43bec8b8d1ef94b6e" +uuid = "27ebfcd6-29c5-5fa9-bf4b-fb8fc14df3ae" +version = "0.5.5" + +[[deps.Printf]] +deps = ["Unicode"] +uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" + +[[deps.Profile]] +deps = ["Printf"] +uuid = "9abbd945-dff8-562f-b5e8-e1ebf5ef1b79" + +[[deps.ProgressMeter]] +deps = ["Distributed", "Printf"] +git-tree-sha1 = "00099623ffee15972c16111bcf84c58a0051257c" +uuid = "92933f4c-e287-5a05-a399-4b506db050ca" +version = "1.9.0" + +[[deps.PropertyT]] +deps = ["Groups", "GroupsCore", "IntervalArithmetic", "IntervalMatrices", "JuMP", "LinearAlgebra", "PermutationGroups", "ProgressMeter", "SparseArrays", "StarAlgebras", "StaticArrays", "SymbolicWedderburn"] +path = ".." +uuid = "03b72c93-0167-51e2-8a1e-eb4ff1fb940d" +version = "0.6.0" + +[[deps.QDLDL]] +deps = ["AMD", "LinearAlgebra", "SparseArrays"] +git-tree-sha1 = "5a3c14e534faf5b66c4633b5770a665ec1a87503" +uuid = "bfc457fd-c171-5ab7-bd9e-d5dbfc242d63" +version = "0.4.1" + +[[deps.REPL]] +deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] +uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" + +[[deps.Random]] +deps = ["SHA"] +uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" + +[[deps.RecipesBase]] +deps = ["PrecompileTools"] +git-tree-sha1 = "5c3d09cc4f31f5fc6af001c250bf1278733100ff" +uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" +version = "1.3.4" + +[[deps.Reexport]] +git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" +uuid = "189a3867-3050-52da-a836-e630ba90ab69" +version = "1.2.2" + +[[deps.Requires]] +deps = ["UUIDs"] +git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" +uuid = "ae029012-a4dd-5104-9daa-d747884805df" +version = "1.3.0" + +[[deps.RoundingEmulator]] +git-tree-sha1 = "40b9edad2e5287e05bd413a38f61a8ff55b9557b" +uuid = "5eaf0fd0-dfba-4ccb-bf02-d820a40db705" +version = "0.2.1" + +[[deps.SCS]] +deps = ["MathOptInterface", "Requires", "SCS_jll", "SparseArrays"] +git-tree-sha1 = "940b069bb150151cba9b12a1ea8678f60f324e7a" +uuid = "c946c3f1-0d1f-5ce8-9dea-7daa1f7e2d13" +version = "2.0.0" + + [deps.SCS.extensions] + SCSSCS_GPU_jllExt = ["SCS_GPU_jll"] + SCSSCS_MKL_jllExt = ["SCS_MKL_jll"] + + [deps.SCS.weakdeps] + SCS_GPU_jll = "af6e375f-46ec-5fa0-b791-491b0dfa44a4" + SCS_MKL_jll = "3f2553a9-4106-52be-b7dd-865123654657" + +[[deps.SCS_MKL_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "MKL_jll"] +git-tree-sha1 = "68e1327248538b4a06992764602fc3ad1730e524" +uuid = "3f2553a9-4106-52be-b7dd-865123654657" +version = "3.2.4+0" + +[[deps.SCS_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "OpenBLAS32_jll"] +git-tree-sha1 = "7b2165840ee20f7baf51b1a2d4fe7ab95bd97cbb" +uuid = "f4f2fc5b-1d94-523c-97ea-2ab488bedf4b" +version = "3.2.4+0" + +[[deps.SHA]] +uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" +version = "0.7.0" + +[[deps.Serialization]] +uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" + +[[deps.SetRounding]] +git-tree-sha1 = "d7a25e439d07a17b7cdf97eecee504c50fedf5f6" +uuid = "3cc68bcd-71a2-5612-b932-767ffbe40ab0" +version = "0.2.1" + +[[deps.Sockets]] +uuid = "6462fe0b-24de-5631-8697-dd941f90decc" + +[[deps.SoftGlobalScope]] +deps = ["REPL"] +git-tree-sha1 = "986ec2b6162ccb95de5892ed17832f95badf770c" +uuid = "b85f4697-e234-5449-a836-ec8e2f98b302" +version = "1.1.0" + +[[deps.SparseArrays]] +deps = ["Libdl", "LinearAlgebra", "Random", "Serialization", "SuiteSparse_jll"] +uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" +version = "1.10.0" + +[[deps.SpecialFunctions]] +deps = ["IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] +git-tree-sha1 = "e2cfc4012a19088254b3950b85c3c1d8882d864d" +uuid = "276daf66-3868-5448-9aa4-cd146d93841b" +version = "2.3.1" + + [deps.SpecialFunctions.extensions] + SpecialFunctionsChainRulesCoreExt = "ChainRulesCore" + + [deps.SpecialFunctions.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + +[[deps.StarAlgebras]] +deps = ["LinearAlgebra", "SparseArrays"] +git-tree-sha1 = "b8630408a627dc5f9a8019bf5b4bab8ef5ad1f5d" +uuid = "0c0c59c1-dc5f-42e9-9a8b-b5dc384a6cd1" +version = "0.2.1" + +[[deps.StaticArrays]] +deps = ["LinearAlgebra", "PrecompileTools", "Random", "StaticArraysCore"] +git-tree-sha1 = "7b0e9c14c624e435076d19aea1e5cbdec2b9ca37" +uuid = "90137ffa-7385-5640-81b9-e52037218182" +version = "1.9.2" + + [deps.StaticArrays.extensions] + StaticArraysChainRulesCoreExt = "ChainRulesCore" + StaticArraysStatisticsExt = "Statistics" + + [deps.StaticArrays.weakdeps] + ChainRulesCore = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" + Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" + +[[deps.StaticArraysCore]] +git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" +uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" +version = "1.4.2" + +[[deps.Statistics]] +deps = ["LinearAlgebra", "SparseArrays"] +uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" +version = "1.10.0" + +[[deps.StringManipulation]] +deps = ["PrecompileTools"] +git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" +uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" +version = "0.3.4" + +[[deps.SuiteSparse]] +deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] +uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" + +[[deps.SuiteSparse_jll]] +deps = ["Artifacts", "Libdl", "libblastrampoline_jll"] +uuid = "bea87d4a-7f5b-5778-9afe-8cc45184846c" +version = "7.2.1+1" + +[[deps.SymbolicWedderburn]] +deps = ["AbstractPermutations", "Cyclotomics", "GroupsCore", "LinearAlgebra", "PermutationGroups", "PrecompileTools", "PrettyTables", "Primes", "SparseArrays", "StarAlgebras"] +git-tree-sha1 = "2844d9dedbbf1b7d3a042b53c15eaba3115dce64" +uuid = "858aa9a9-4c7c-4c62-b466-2421203962a2" +version = "0.4.0" + +[[deps.TOML]] +deps = ["Dates"] +uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" +version = "1.0.3" + +[[deps.TableTraits]] +deps = ["IteratorInterfaceExtensions"] +git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" +uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" +version = "1.0.1" + +[[deps.Tables]] +deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits"] +git-tree-sha1 = "cb76cf677714c095e535e3501ac7954732aeea2d" +uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" +version = "1.11.1" + +[[deps.Tar]] +deps = ["ArgTools", "SHA"] +uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" +version = "1.10.0" + +[[deps.Test]] +deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] +uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" + +[[deps.TextWrap]] +git-tree-sha1 = "9250ef9b01b66667380cf3275b3f7488d0e25faf" +uuid = "b718987f-49a8-5099-9789-dcd902bef87d" +version = "1.0.1" + +[[deps.TranscodingStreams]] +git-tree-sha1 = "54194d92959d8ebaa8e26227dbe3cdefcdcd594f" +uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" +version = "0.10.3" +weakdeps = ["Random", "Test"] + + [deps.TranscodingStreams.extensions] + TestExt = ["Test", "Random"] + +[[deps.UUIDs]] +deps = ["Random", "SHA"] +uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" + +[[deps.Unicode]] +uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" + +[[deps.UnsafeArrays]] +git-tree-sha1 = "e7f1c67ba99ac6df440de191fa4d5cbfcbdddcd1" +uuid = "c4a57d5a-5b31-53a6-b365-19f8c011fbd6" +version = "1.0.5" + +[[deps.VersionParsing]] +git-tree-sha1 = "58d6e80b4ee071f5efd07fda82cb9fbe17200868" +uuid = "81def892-9a0e-5fdd-b105-ffc91e053289" +version = "1.3.0" + +[[deps.ZMQ]] +deps = ["FileWatching", "Sockets", "ZeroMQ_jll"] +git-tree-sha1 = "356d2bdcc0bce90aabee1d1c0f6d6f301eda8f77" +uuid = "c2297ded-f4af-51ae-bb23-16f91089e4e1" +version = "1.2.2" + +[[deps.ZeroMQ_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "libsodium_jll"] +git-tree-sha1 = "fe5c65a526f066fb3000da137d5785d9649a8a47" +uuid = "8f1865be-045e-5c20-9c9f-bfbfb0764568" +version = "4.3.4+0" + +[[deps.Zlib_jll]] +deps = ["Libdl"] +uuid = "83775a58-1f1d-513f-b197-d71354ab007a" +version = "1.2.13+1" + +[[deps.libblastrampoline_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" +version = "5.8.0+1" + +[[deps.libsodium_jll]] +deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] +git-tree-sha1 = "848ab3d00fe39d6fbc2a8641048f8f272af1c51e" +uuid = "a9144af2-ca23-56d9-984f-0d03f7b5ccf8" +version = "1.0.20+0" + +[[deps.nghttp2_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" +version = "1.52.0+1" + +[[deps.p7zip_jll]] +deps = ["Artifacts", "Libdl"] +uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" +version = "17.4.0+2" diff --git a/scripts/Project.toml b/scripts/Project.toml new file mode 100644 index 0000000..03483fb --- /dev/null +++ b/scripts/Project.toml @@ -0,0 +1,10 @@ +[deps] +ArgParse = "c7e460c6-2fb9-53a9-8c5b-16f535851c63" +COSMO = "1e616198-aa4e-51ec-90a2-23f7fbd31d8d" +Groups = "5d8bd718-bd84-11e8-3b40-ad14f4a32557" +IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a" +LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" +PermutationGroups = "8bc5a954-2dfc-11e9-10e6-cd969bffa420" +PropertyT = "03b72c93-0167-51e2-8a1e-eb4ff1fb940d" +SCS = "c946c3f1-0d1f-5ce8-9dea-7daa1f7e2d13" +SCS_MKL_jll = "3f2553a9-4106-52be-b7dd-865123654657" From 0f3e4311b33090190b7b224e37947b82e48d5a90 Mon Sep 17 00:00:00 2001 From: Marek Kaluba Date: Mon, 19 Feb 2024 18:47:29 +0100 Subject: [PATCH 8/9] =?UTF-8?q?add=20scripts=20for=20SpNZ=20and=20G?= =?UTF-8?q?=E2=82=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/G₂_Adj.jl | 16 ++++++++-------- scripts/SpNZ_has_T.jl | 13 ++++++------- scripts/SpN_Adj.jl | 29 ++++++++++++++--------------- 3 files changed, 28 insertions(+), 30 deletions(-) diff --git a/scripts/G₂_Adj.jl b/scripts/G₂_Adj.jl index 8a499d0..3594b78 100644 --- a/scripts/G₂_Adj.jl +++ b/scripts/G₂_Adj.jl @@ -1,17 +1,17 @@ using LinearAlgebra -BLAS.set_num_threads(8) -using MKL_jll +BLAS.set_num_threads(4) ENV["OMP_NUM_THREADS"] = 4 +include(joinpath(@__DIR__, "../test/optimizers.jl")) +using SCS_MKL_jll using Groups import Groups.MatrixGroups -include(joinpath(@__DIR__, "../test/optimizers.jl")) using PropertyT -using PropertyT.SymbolicWedderburn -using PropertyT.PermutationGroups -using PropertyT.StarAlgebras +import PropertyT.SW as SW +using PropertyT.PG +using PropertyT.SA include(joinpath(@__DIR__, "argparse.jl")) include(joinpath(@__DIR__, "utils.jl")) @@ -31,10 +31,10 @@ RG, S, sizes = @time PropertyT.group_algebra(G, halfradius = HALFRADIUS) @info "computing WedderburnDecomposition" wd = let Σ = Weyl, RG = RG act = PropertyT.AlphabetPermutation{eltype(Σ),Int64}( - Dict(g => PermutationGroups.perm(g) for g in Σ), + Dict(g => PermutationGroups.AP.perm(g) for g in Σ), ) - @time SymbolicWedderburn.WedderburnDecomposition( + @time SW.WedderburnDecomposition( Float64, Σ, act, diff --git a/scripts/SpNZ_has_T.jl b/scripts/SpNZ_has_T.jl index 7a40d27..6c9d173 100644 --- a/scripts/SpNZ_has_T.jl +++ b/scripts/SpNZ_has_T.jl @@ -1,18 +1,17 @@ using LinearAlgebra -using MKL_jll BLAS.set_num_threads(4) - ENV["OMP_NUM_THREADS"] = 4 +include(joinpath(@__DIR__, "../test/optimizers.jl")) +using SCS_MKL_jll using Groups import Groups.MatrixGroups -include(joinpath(@__DIR__, "../test/optimizers.jl")) using PropertyT -using PropertyT.SymbolicWedderburn -using PropertyT.PermutationGroups -using PropertyT.StarAlgebras +import PropertyT.SW as SW +using PropertyT.PG +using PropertyT.SA include(joinpath(@__DIR__, "argparse.jl")) include(joinpath(@__DIR__, "utils.jl")) @@ -36,7 +35,7 @@ wd = let RG = RG, N = N Σ = Groups.Constructions.WreathProduct(PermGroup(perm"(1,2)"), P) act = PropertyT.action_by_conjugation(G, Σ) - wdfl = @time SymbolicWedderburn.WedderburnDecomposition( + wdfl = @time SW.WedderburnDecomposition( Float64, Σ, act, diff --git a/scripts/SpN_Adj.jl b/scripts/SpN_Adj.jl index 35b9a6b..bc73354 100644 --- a/scripts/SpN_Adj.jl +++ b/scripts/SpN_Adj.jl @@ -1,17 +1,17 @@ using LinearAlgebra -BLAS.set_num_threads(8) - -ENV["OMP_NUM_THREADS"] = 1 +BLAS.set_num_threads(4) +ENV["OMP_NUM_THREADS"] = 4 +include(joinpath(@__DIR__, "../test/optimizers.jl")) +using SCS_MKL_jll using Groups import Groups.MatrixGroups -include(joinpath(@__DIR__, "../test/optimizers.jl")) using PropertyT -using PropertyT.SymbolicWedderburn -using PropertyT.PermutationGroups -using PropertyT.StarAlgebras +import PropertyT.SW as SW +using PropertyT.PG +using PropertyT.SA include(joinpath(@__DIR__, "argparse.jl")) include(joinpath(@__DIR__, "utils.jl")) @@ -20,30 +20,29 @@ const N = parsed_args["N"] const HALFRADIUS = parsed_args["halfradius"] const UPPER_BOUND = parsed_args["upper_bound"] -const GENUS = 2N - -G = MatrixGroups.SymplecticGroup{GENUS}(Int8) +G = MatrixGroups.SymplecticGroup{2N}(Int8) +@info "Running Adj_C₂ - λ·Δ sum of squares decomposition for " G +@info "computing group algebra structure" RG, S, sizes = @time PropertyT.group_algebra(G, halfradius = HALFRADIUS) +@info "computing WedderburnDecomposition" wd = let RG = RG, N = N G = StarAlgebras.object(RG) P = PermGroup(perm"(1,2)", Perm(circshift(1:N, -1))) Σ = Groups.Constructions.WreathProduct(PermGroup(perm"(1,2)"), P) - # Σ = P act = PropertyT.action_by_conjugation(G, Σ) - @info "Computing WedderburnDecomposition" - wdfl = @time SymbolicWedderburn.WedderburnDecomposition( + wdfl = @time SW.WedderburnDecomposition( Float64, Σ, act, basis(RG), StarAlgebras.Basis{UInt16}(@view basis(RG)[1:sizes[HALFRADIUS]]), ) - @info wdfl wdfl end +@info wd Δ = RG(length(S)) - sum(RG(s) for s in S) Δs = PropertyT.laplacians( @@ -72,7 +71,7 @@ solve_in_loop( logdir = "./log/Sp($N,Z)/r=$HALFRADIUS/Adj_C₂-$(UPPER_BOUND)Δ", optimizer = cosmo_optimizer(; eps = 1e-10, - max_iters = 20_000, + max_iters = 50_000, accel = 50, alpha = 1.95, ), From 083e1b4735c4b7a8f22d7cb126f50ab0b5096fde Mon Sep 17 00:00:00 2001 From: Marek Kaluba Date: Mon, 19 Feb 2024 18:48:28 +0100 Subject: [PATCH 9/9] @info "checking in (...) arithmetic" before the actual check --- src/certify.jl | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/certify.jl b/src/certify.jl index d4a6c0a..ca28e69 100644 --- a/src/certify.jl +++ b/src/certify.jl @@ -118,10 +118,9 @@ function certify_solution( !augmented && SA.aug(elt) == SA.aug(orderunit) == 0 Q = should_we_augment ? augment_columns!(Q) : Q + @info "Checking in $(eltype(Q)) arithmetic with" λ @time sos = compute_sos(parent(elt), Q; augmented = augmented) - @info "Checking in $(eltype(sos)) arithmetic with" λ - λ_flpoint = sufficient_λ(elt, orderunit, λ, sos; halfradius = halfradius) if λ_flpoint ≤ 0 @@ -130,6 +129,7 @@ function certify_solution( λ_int = IntervalArithmetic.interval(λ) Q_int = IntervalMatrices.IntervalMatrix(IntervalArithmetic.interval.(Q)) + @info "Checking in $(eltype(Q_int)) arithmetic with" λ_int check, sos_int = @time if should_we_augment @info("Projecting columns of Q to the augmentation ideal...") @@ -145,8 +145,6 @@ function certify_solution( true, compute_sos(parent(elt), Q_int; augmented = augmented) end - @info "Checking in $(eltype(sos_int)) arithmetic with" λ_int - λ_certified = sufficient_λ(elt, orderunit, λ_int, sos_int; halfradius = halfradius)