Open bertram-gil opened 2 years ago
This is most likely related to Brie data-structure issues. Are you using 32bit or 64Bit as a word size?
My machine specs:
Operating System: Debian GNU/Linux 10 (buster)
Kernel: Linux 5.10.126.1.amd64-smp
Architecture: x86-64
Brie uses bitwise comparison and not floating point comparison. There have been several issues related to this bug. However, it is the same bug. E.g., #2311
Alternatively, there could be a bug in the 64bit version of brie that is still not fixed (but you are using 32bit - so this should not happen).
Would be nice to have the word size
be shown on the help screen, something like:
souffle --help
============================================================================
souffle -- A datalog engine.
Usage: souffle [OPTION] FILE.
----------------------------------------------------------------------------
...
----------------------------------------------------------------------------
Version: 2.3-137-gf2f974194 word-size: 32bits float: 32bits ///!!!! notice here the extra info
----------------------------------------------------------------------------
Copyright (c) 2016-22 The Souffle Developers.
Copyright (c) 2013-16 Oracle and/or its affiliates.
All rights reserved.
============================================================================
With this small change we can have the word size on the help screen:
diff --git a/src/main.cpp b/src/main.cpp
index e704fd452..e2e072a06 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -412,7 +412,8 @@ int main(int argc, char** argv) {
std::stringstream footer;
footer << "----------------------------------------------------------------------------" << std::endl;
- footer << "Version: " << PACKAGE_VERSION << "" << std::endl;
+ footer << "Version: " << PACKAGE_VERSION << std::endl;
+ footer << "Word size: " << RAM_DOMAIN_SIZE << " bits" << std::endl;
footer << "----------------------------------------------------------------------------" << std::endl;
footer << "Copyright (c) 2016-22 The Souffle Developers." << std::endl;
footer << "Copyright (c) 2013-16 Oracle and/or its affiliates." << std::endl;
Output:
...
----------------------------------------------------------------------------
Version: 2.3-137-gf2f974194
Word size: 32 bits
----------------------------------------------------------------------------
Copyright (c) 2016-22 The Souffle Developers.
Copyright (c) 2013-16 Oracle and/or its affiliates.
All rights reserved.
============================================================================
Can you prepare a pull-request for this?
Hi guys,
Consider the following program:
Running the above program in compiler mode (
-c
) returns nothing for the relationl__
.Adding a rule
l__(a, a, b) :- k__(a, b, c), !k__(a, b, c).
should not change the result inl__
, but if I run the following program:I get:
Note that in interpreter mode, I get an empty result for both programs. I also get an empty result for both programs both in compiler and interpreter mode if I remove
brie
for the relationk__
.Souffle version I am using: 66b96fd07e7124d0e46bcf7cdc1cc5bf61f54cc3
Please let me know if this is a bug or am I doing something wrong.