brial / brial Goto Github PK
View Code? Open in Web Editor NEWSuccessor to PolyBoRi
License: Other
Successor to PolyBoRi
License: Other
Nothing super important here, but while I was troubleshooting a crash I noticed that some debug macros are enabled by default, e.g.
#if defined(PBORI_NDEBUG)
#define PBORI_ASSERT(arg) (static_cast<void>(0))
#else
#define PBORI_ASSERT(arg) assert(arg)
#endif
in include/polybori/pbori_defs.h
. It might make sense to disable these in release builds, but make them available as a configure flag? My issue was solved by rebuilding brial and turned out not to be related.
And conversely libpolybori/include/polybori/config.h.in
is missing from the 0.8.4.x branch.
And of course it is present in the tarball and therefore probably the tag. I found out when automake
complained about not finding it.
ax_boost_base.m4 as shipped by brial does not recognize riscv64. As a result, it looks in the wrong directory and cannot find boost_test_framework.so. Please update ax_boost_base.m4 with a new version from the autoconf-archive.
BRiAl 1.21.11
boost 1.81.0
gcc 12.2.0
./configure --prefix=/usr --enable-shared
make
make check
tests/test-suite.log
========================================
BRiAl 1.2.11: tests/test-suite.log
========================================
# TOTAL: 1
# PASS: 0
# SKIP: 0
# XFAIL: 0
# FAIL: 1
# XPASS: 0
# ERROR: 0
.. contents:: :depth: 2
FAIL: unittests
===============
Running 122 test cases...
BoolePolynomialTest.cc(352): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_independent": check poly_type(1, ring).stableHash() == 16982317933699389295u has failed [6643957975231536490 != 16982317933699389295][0;39;49m
BoolePolynomialTest.cc(353): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_independent": check poly_type(x).stableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(354): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_independent": check poly_type(x*y).stableHash() == 1160268684422367443 has failed [7488647634487918362 != 1160268684422367443][0;39;49m
BoolePolynomialTest.cc(355): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_independent": check poly_type(x*y + z).stableHash() == 15553547522801749128u has failed [15080868938440987258 != 15553547522801749128][0;39;49m
BoolePolynomialTest.cc(356): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_independent": check poly_type(x*y + z + 1).stableHash() == 14746308500923705671u has failed [4046934837422409843 != 14746308500923705671][0;39;49m
BoolePolynomialTest.cc(357): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_independent": check poly_type(x*y + x + z).stableHash() == 6609543853578108291 has failed [17287305169241640544 != 6609543853578108291][0;39;49m
BoolePolynomialTest.cc(358): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_independent": check poly_type(x*y + x + z + 1).stableHash() == 13745298887294022704u has failed [15334652091369486486 != 13745298887294022704][0;39;49m
BoolePolynomialTest.cc(605): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_lp": check poly_type(1, ring).leadStableHash() == 16982317933699389295u has failed [6643957975231536490 != 16982317933699389295][0;39;49m
BoolePolynomialTest.cc(606): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_lp": check poly_type(a).leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(607): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_lp": check poly_type(a*b).leadStableHash() == 1160268684422367443 has failed [7488647634487918362 != 1160268684422367443][0;39;49m
BoolePolynomialTest.cc(608): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_lp": check poly_type(c*d +c + e + 1).leadStableHash() == 994909422134781907 has failed [8683732623732266773 != 994909422134781907][0;39;49m
BoolePolynomialTest.cc(610): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_lp": check poly1.leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(611): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_lp": check poly2.leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(725): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dlex": check poly_type(1, ring).leadStableHash() == 16982317933699389295u has failed [6643957975231536490 != 16982317933699389295][0;39;49m
BoolePolynomialTest.cc(726): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dlex": check poly_type(a).leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(727): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dlex": check poly_type(a*b).leadStableHash() == 1160268684422367443 has failed [7488647634487918362 != 1160268684422367443][0;39;49m
BoolePolynomialTest.cc(728): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dlex": check poly_type(c*d +c + e + 1).leadStableHash() == 994909422134781907 has failed [8683732623732266773 != 994909422134781907][0;39;49m
BoolePolynomialTest.cc(730): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dlex": check poly1.leadStableHash() == 13332077148710286618u has failed [14792830888691653104 != 13332077148710286618][0;39;49m
BoolePolynomialTest.cc(731): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dlex": check poly2.leadStableHash() == 994909422134781907 has failed [8683732623732266773 != 994909422134781907][0;39;49m
BoolePolynomialTest.cc(838): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dp_asc": check poly_type(1, ring).leadStableHash() == 16982317933699389295u has failed [6643957975231536490 != 16982317933699389295][0;39;49m
BoolePolynomialTest.cc(839): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dp_asc": check poly_type(a).leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(840): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dp_asc": check poly_type(a*b).leadStableHash() == 1160268684422367443 has failed [7488647634487918362 != 1160268684422367443][0;39;49m
BoolePolynomialTest.cc(841): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dp_asc": check poly_type(c*d +c + e + 1).leadStableHash() == 994909422134781907 has failed [8683732623732266773 != 994909422134781907][0;39;49m
BoolePolynomialTest.cc(843): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dp_asc": check poly1.leadStableHash() == 16171595639562729641u has failed [16452769785566003032 != 16171595639562729641][0;39;49m
BoolePolynomialTest.cc(844): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_dp_asc": check poly2.leadStableHash() == 298249910754104916 has failed [7788958613296501621 != 298249910754104916][0;39;49m
BoolePolynomialTest.cc(953): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dlex": check poly_type(1,ring).leadStableHash() == 16982317933699389295u has failed [6643957975231536490 != 16982317933699389295][0;39;49m
BoolePolynomialTest.cc(954): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dlex": check poly_type(a).leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(955): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dlex": check poly_type(a*b).leadStableHash() == 1160268684422367443 has failed [7488647634487918362 != 1160268684422367443][0;39;49m
BoolePolynomialTest.cc(956): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dlex": check poly_type(c*d +c + e + 1).leadStableHash() == 994909422134781907 has failed [8683732623732266773 != 994909422134781907][0;39;49m
BoolePolynomialTest.cc(958): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dlex": check poly1.leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(959): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dlex": check poly2.leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(1068): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dp_asc": check poly_type(1, ring).leadStableHash() == 16982317933699389295u has failed [6643957975231536490 != 16982317933699389295][0;39;49m
BoolePolynomialTest.cc(1069): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dp_asc": check poly_type(a).leadStableHash() == 14511566905035657723u has failed [14305226453458947074 != 14511566905035657723][0;39;49m
BoolePolynomialTest.cc(1070): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dp_asc": check poly_type(a*b).leadStableHash() == 1160268684422367443 has failed [7488647634487918362 != 1160268684422367443][0;39;49m
BoolePolynomialTest.cc(1071): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dp_asc": check poly_type(c*d +c + e + 1).leadStableHash() == 994909422134781907 has failed [8683732623732266773 != 994909422134781907][0;39;49m
BoolePolynomialTest.cc(1073): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dp_asc": check poly1.leadStableHash() == 16171595639562729641u has failed [16452769785566003032 != 16171595639562729641][0;39;49m
BoolePolynomialTest.cc(1074): [1;31;49merror: in "BoolePolynomialTestSuite/test_ordering_block_dp_asc": check poly2.leadStableHash() == 994909422134781907 has failed [8683732623732266773 != 994909422134781907][0;39;49m
[1;31;49m*** 37 failures are detected in the test module "UnitTests"
[0;39;49mFAIL unittests (exit status: 201)
Hi,
I started packaging brial for Debian to replace polybori. I am wondering what is the current status of the gui, ipbori and docs. The are still in the git repo, but apparently have not been touched since the renaming of the project. They are also not in the release tarballs and not built/installed by the makefiles.
Are these components still supported? Do you plan to keep them up to date, and let the makefiles install them? The gui and ipbori are useful when brial is used as a standalone package and the documentation is even more important, in any case.
Best,
Tobias
In Debian (brial 1.2.4) and Fedora (1.2.5) there is a handy macro VERSION, e.g.
/* Version number of package */
#define VERSION "1.2.5"
But not e.g. in Gentoo. Does it need another way to generate polybori/config.h
?
I found the following patch in the Debian packaging ; it dates back to 2013, and I just realized it might never have been forwarded upstream!
In file included from ../../libbrial/include/polybori/BooleSet.h:23,
from BooleSet.cc:19:
../../libbrial/include/polybori/routines/pbori_func.h:114:15: warning: ‘template<class _Arg1, class _Arg2, class _Result> struct std::binary_function’ is deprecated [-Wdeprecated-declarations]
114 | public std::binary_function<RhsType&, const LhsType&, RhsType&> {
| ^~~~~~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/g++-v12/string:48,
from /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/g++-v12/bits/locale_classes.h:40,
from /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/g++-v12/bits/ios_base.h:41,
from /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/g++-v12/ios:42,
from /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/g++-v12/ostream:38,
from /usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/g++-v12/iostream:39,
from ../../libbrial/include/polybori/pbori_defs.h:24,
from ../../libbrial/include/polybori/BooleSet.h:20:
/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.1/include/g++-v12/bits/stl_function.h:131:12: note: declared here
131 | struct binary_function
| ^~~~~~~~~~~~~~~
Hi All,
Just a thank you for all of the developers who are maintaining this: thanks a ton. A lot of interesting work is still coming out of PolyBori/BRiAl, so it's incredibly important to maintain it. Thanks so much for your efforts!
Mate
Hi,
here is a minimal patch to fix the testsuite:
https://anonscm.debian.org/cgit/debian-science/packages/polybori.git/tree/debian/patches/fix-testsuite.patch
To see how to run the tests, see the target override_dh_auto_tests in
https://anonscm.debian.org/cgit/debian-science/packages/polybori.git/tree/debian/rules
Best,
Tobias
A recent Python 3 change gives this warning
In version 1.2.6, libbrial/include/polybori/config.h.in is provided by autoheader and contains many definitions, most of which are just useless.
The Debian tools detect some of those definitions as potentially clashing with other files named config.h on a system and complain, so I'm going to write a tighter version, with only what's needed.
I'll post my patch here when it will look correct.
Trying to package BRiAl for conda, we have some failing tests on OSX. Any clues on what is going on here would be very welcome conda-forge/brial-feedstock#5 :)
Bastian Germann added the following to the Debian package for BRiAl:
diff --git a/sage-brial/brial/gbcore.py b/sage-brial/brial/gbcore.py
index fd3c3d0c..9006e8d6 100644
--- a/sage-brial/brial/gbcore.py
+++ b/sage-brial/brial/gbcore.py
@@ -7,7 +7,6 @@ from .ll import eliminate, ll_encode
from time import time
from copy import copy
from itertools import chain
-from inspect import getargspec
from .statistics import used_vars, used_vars_set
from .heuristics import dense_system, gauss_on_linear
from .easy_polynomials import easy_linear_polynomials
When compiling with clang++ the following warnings are emitted
../../BRiAl/groebner/include/polybori/groebner/minimal_elements.h:83:28: warning: comparison of unsigned expression >= 0 is always true [-Wtautological-compare]
for(z=cv.size()-1;z>=0;z--){
~^ ~
../../BRiAl/groebner/include/polybori/groebner/minimal_elements.h:171:58: warning: comparison of unsigned expression >= 0 is always true [-Wtautological-compare]
for(MonomialSet::size_type i=exponents.size()-1;i>=0;i--){
~^ ~
../../BRiAl/groebner/include/polybori/groebner/minimal_elements.h:176:58: warning: comparison of unsigned expression >= 0 is always true [-Wtautological-compare]
for(MonomialSet::size_type i=exponents.size()-1;i>=0;i--){
There is clearly an issue here, this may indicate a serious bug.
Brial is apparently the last standard package in sage which does not allow python3 compilation.
I noticed missing symbols on Debian (faugereStepDense in GroebnerStrategy), and set out to find out what the problem was. It turns out there where three of them.
The function is defined in GroebnerStrategy.cc, but protected by #defined PBORI_HAVE_NTL or PBORI_HAVE_M4RI ; but its declaration is unconditional in GroebnerStrategy.h, so that's a problem with the api, and should be fixed. First problem.
And then, I thought perhaps Debian was building without NTL & M4RI -- but when I checked : we do have M4RI. So I tried to find where PBORI_HAVE_M4RI is supposed to be defined : config.h! So it looked like my recent patch was the culprit. Until I checked with the autoheader-generated file : it doesn't have that either! So that makes a second thing to fix, by adding to config.h.in:
/* has m4ri */
#undef PBORI_HAVE_M4RI
Second problem.
Finally PBORI_HAVE_NTL is used in a few places, but never actually defined, so either it should be handled in configure.ac, or dropped. Third problem.
Cheers!
clang++ warnings pointed to a very interesting piece of code at https://github.com/BRiAl/BRiAl/blob/master/groebner/include/polybori/groebner/CountCriterion.h#L59
Inspecting the code, the variable gcd_deg
certainly needs initialising but to what?
There is a thread on sage-release on this, see here.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.