Skip to content

Commit 7c4fbe0

Browse files
authored
Merge pull request #326 from mohabsafey/bug-fix-lifting-gb
Bug fix in lifting gb (case of empty elim basis) + warning msg fixed
2 parents 404854b + 55746a8 commit 7c4fbe0

7 files changed

Lines changed: 41 additions & 8 deletions

File tree

Makefile.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ checkdiff = test/diff/diff_bug-2nd-prime-bad.sh \
2626
test/diff/diff_eco6-qq.sh \
2727
test/diff/diff_elim-31.sh \
2828
test/diff/diff_elim-qq.sh \
29+
test/diff/diff_empty-elim-qq.sh \
2930
test/diff/diff_f4sat-31.sh \
3031
test/diff/diff_f4sat-byone-31.sh \
3132
test/diff/diff_f4sat-field-char.sh \

configure.ac

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ AC_CONFIG_LINKS([
158158
output_files/elim-qq.g2.e1.res:output_files/elim-qq.g2.e1.res
159159
output_files/elim-qq.g2.e2.res:output_files/elim-qq.g2.e2.res
160160
test/diff/diff_elim-qq.sh:test/diff/diff_elim-qq.sh
161+
input_files/empty-elim-qq.ms:input_files/empty-elim-qq.ms
162+
output_files/empty-elim-qq.g2.e1.res:output_files/empty-elim-qq.g2.e1.res
163+
output_files/empty-elim-qq.g2.e2.res:output_files/empty-elim-qq.g2.e2.res
164+
test/diff/diff_empty-elim-qq.sh:test/diff/diff_empty-elim-qq.sh
161165
input_files/f4sat-31.ms:input_files/f4sat-31.ms
162166
output_files/f4sat-31.res:output_files/f4sat-31.res
163167
test/diff/diff_f4sat-31.sh:test/diff/diff_f4sat-31.sh

input_files/empty-elim-qq.ms

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
x, y, z
2+
0
3+
x^2-2,
4+
y^2-3
5+
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#Reduced Groebner basis data
2+
#---
3+
#field characteristic: 0
4+
#variable order: y, z
5+
#monomial order: graded reverse lexicographical
6+
#length of basis: 1 element
7+
#---
8+
[y^2-3]:
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#Reduced Groebner basis data
2+
#---
3+
#field characteristic: 0
4+
#variable order: z
5+
#monomial order: graded reverse lexicographical
6+
#length of basis: 0 elements sorted by increasing leading monomials
7+
#---
8+
[0]:

src/msolve/lifting-gb.c

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1099,14 +1099,12 @@ static inline int verif_lifted_basis(gb_modpoly_t modgbs, data_lift_t dl,
10991099
if(dl->check2[k] == NBCHECK){
11001100
dl->S = k+1;
11011101
dl->lstart = dl->S;
1102-
if(modgbs->modpolys[k] != NULL){
1103-
for(uint32_t j = 0; j < modgbs->modpolys[k]->len; j++){
1104-
free(modgbs->modpolys[k]->cf_32[j]);
1105-
mpz_clear(modgbs->modpolys[k]->cf_zz[j]);
1106-
}
1107-
free(modgbs->modpolys[k]->cf_32);
1108-
free(modgbs->modpolys[k]->cf_zz);
1102+
for(uint32_t j = 0; j < modgbs->modpolys[k]->len; j++){
1103+
free(modgbs->modpolys[k]->cf_32[j]);
1104+
mpz_clear(modgbs->modpolys[k]->cf_zz[j]);
11091105
}
1106+
free(modgbs->modpolys[k]->cf_32);
1107+
free(modgbs->modpolys[k]->cf_zz);
11101108
}
11111109
}
11121110
}
@@ -1352,7 +1350,7 @@ gb_modpoly_t *core_groebner_qq(
13521350
0,
13531351
maxbitsize,
13541352
&success);
1355-
if(is_empty == 1 || print_gb == 1){
1353+
if(is_empty == 1 || print_gb == 1 || (*modgbsp)->ld == 0){
13561354
if(dlinit){
13571355
data_lift_clear(dlift);
13581356
}

test/diff/diff_empty-elim-qq.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#!/usr/bin/env bash
2+
3+
file=empty-elim-qq
4+
5+
source test/diff/diff_source.sh
6+
7+
source test/diff/diff_source-gb-elim-red.sh
8+
9+
normal_exit

0 commit comments

Comments
 (0)