From 5946c56967d423352596745655fd516d7e59d9b9 Mon Sep 17 00:00:00 2001 From: HechtiDerLachs Date: Wed, 12 Nov 2025 00:47:39 +0100 Subject: [PATCH 1/3] Provide some initial values for matroid realization spaces. --- .../MatroidRealizationSpaces/src/realization_space.jl | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/experimental/MatroidRealizationSpaces/src/realization_space.jl b/experimental/MatroidRealizationSpaces/src/realization_space.jl index 53df759d346d..428a5c0c75e2 100644 --- a/experimental/MatroidRealizationSpaces/src/realization_space.jl +++ b/experimental/MatroidRealizationSpaces/src/realization_space.jl @@ -159,7 +159,7 @@ function realization_space_matrix(M::Matroid, B::Vector{Int}, F::Ring) unUsedRowsForOnes = collect(2:rk) for col in 1:(n - rk), row in 1:rk circ = circs[col] - if !(B[row] == minimum(circ)) && B[row] in circ + if !(B[row] == minimum(circ; init=0)) && B[row] in circ if row in unUsedRowsForOnes unUsedRowsForOnes = setdiff(unUsedRowsForOnes, [row]) else @@ -191,7 +191,7 @@ function realization_space_matrix(M::Matroid, B::Vector{Int}, F::Ring) circ = circs[col] c = nonIdCols[col] - if B[row] == minimum(circ) + if B[row] == minimum(circ; init=0) mat[row, c] = R(1) elseif B[row] in circ if row in unUsedRowsForOnes @@ -850,6 +850,7 @@ function reduce_realization_space( for j in 1:n g = gcd(Xnew[:, j]...) + is_zero(g) && continue prime_divisors = poly_2_prime_divisors(g) for f in prime_divisors if f in normal_Sgens From 0c363ce1e4008b3a89fcaeb4ed47b4e53b34cfd2 Mon Sep 17 00:00:00 2001 From: HechtiDerLachs Date: Wed, 12 Nov 2025 00:49:43 +0100 Subject: [PATCH 2/3] Add tests. --- experimental/MatroidRealizationSpaces/test/runtests.jl | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/experimental/MatroidRealizationSpaces/test/runtests.jl b/experimental/MatroidRealizationSpaces/test/runtests.jl index fcc0622ba5a9..ca32c6990471 100644 --- a/experimental/MatroidRealizationSpaces/test/runtests.jl +++ b/experimental/MatroidRealizationSpaces/test/runtests.jl @@ -149,3 +149,8 @@ end @test is_reduced(RS) == false end +@testset "realization spaces with loops" begin + r = matroid_from_bases([[3,5],[3,4],[2,5],[2,4]],5) + X = realization_space(r,char=0) +end + From e96f75aa3c762df3296a8a155d9485c0cf0e38ea Mon Sep 17 00:00:00 2001 From: HechtiDerLachs Date: Wed, 12 Nov 2025 06:40:11 +0100 Subject: [PATCH 3/3] Provide more reasonable initial values. --- .../MatroidRealizationSpaces/src/realization_space.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/experimental/MatroidRealizationSpaces/src/realization_space.jl b/experimental/MatroidRealizationSpaces/src/realization_space.jl index 428a5c0c75e2..a237d510abcf 100644 --- a/experimental/MatroidRealizationSpaces/src/realization_space.jl +++ b/experimental/MatroidRealizationSpaces/src/realization_space.jl @@ -159,7 +159,7 @@ function realization_space_matrix(M::Matroid, B::Vector{Int}, F::Ring) unUsedRowsForOnes = collect(2:rk) for col in 1:(n - rk), row in 1:rk circ = circs[col] - if !(B[row] == minimum(circ; init=0)) && B[row] in circ + if !(B[row] == minimum(circ; init=inf)) && B[row] in circ if row in unUsedRowsForOnes unUsedRowsForOnes = setdiff(unUsedRowsForOnes, [row]) else @@ -191,7 +191,7 @@ function realization_space_matrix(M::Matroid, B::Vector{Int}, F::Ring) circ = circs[col] c = nonIdCols[col] - if B[row] == minimum(circ; init=0) + if B[row] == minimum(circ; init=inf) mat[row, c] = R(1) elseif B[row] in circ if row in unUsedRowsForOnes