Closed merlinsun closed 2 years ago
Perhaps this case reveals a similar problem.
$ cvc5 -q case.smt2
Fatal failure within std::tuple<cvc5::NodeTemplate<true>, cvc5::Rational, cvc5::Rational> cvc5::theory::arith::nl::detect_ran_encoding(const Node&) at /cvc5/src/theory/arith/nl/poly_conversion.cpp:668
Check failure
n.getNumChildren() == 3
Invalid node structure.
Aborted (core dumped)
$ cat case.smt2
(declare-fun r () Real)
(assert (or (forall ((R Real)) (and (< 0.0 (exp 1.0)) (= (exp 0.0) (/ r 0.0)) (= 0.0 (/ (exp 0.0) 0.0))))))
(check-sat)
@merlinsun did you try to reduce this with https://github.com/ddsmt/ddSMT? It subsumes pydelta (I'm assuming that's what you are using).
Hi, @aniemetz In fact, I could no longer reproduce heap-buffer-overflow later, and cvc5 throws fatal failure for this formula. The simplified formula using ddsmt has also been shown above. I also used cvc5 nightly build to recheck.
$ cvc5-2022-01-13-x86_64-Linux-production 7893_2.smt2 -q
cvc5 suffered a segfault.
Offending address is 0x4
Looks like a NULL pointer was dereferenced.
Segmentation fault (core dumped)
$ cat 7893_2.smt2
(declare-fun r () Real)
(assert (or (forall ((R Real)) (and (< 0.0 (exp 1.0)) (= (exp 0.0) (/ r 0.0)) (= 0.0 (/ (exp 0.0) 0.0))))))
(check-sat)
This has been fixed since #7939
Hi, I feel sorry that this formula is difficult to reduce.
Commit: dfb4a4a OS: Ubuntu 20.04