SMT2 parser: Do not add non-linear symbols for linear Int arith logics. (#5787)
authorAina Niemetz <aina.niemetz@gmail.com>
Wed, 20 Jan 2021 15:28:29 +0000 (07:28 -0800)
committerGitHub <noreply@github.com>
Wed, 20 Jan 2021 15:28:29 +0000 (09:28 -0600)
commite2ec4e5401eba4ef63539ddb7c1f3a54301de4b1
treed17d5a42599eec5699d646e2ffe3150771ff7aff
parentc8e8acd26b4bd5c47110b9448a74a45913b5518f
SMT2 parser: Do not add non-linear symbols for linear Int arith logics. (#5787)

This enables more strict handling of operators div, mod and abs
for Integer arithmetic logics.

More strict handling for '/' for Real arithmetic logics is more involved
and should be done in the parser -- instead at solving time, like is
currently done for checking that the application * is in the linear
fragment. The latter should be checked in the parser, too.
This is postponed to a later PR.
16 files changed:
src/parser/smt2/smt2.cpp
test/regress/CMakeLists.txt
test/regress/regress0/arith/div-chainable.smt2
test/regress/regress0/arith/issue1399.smt2
test/regress/regress0/arith/mod-simp.smt2
test/regress/regress0/bug548a.smt2
test/regress/regress0/expect/scrub.08.sy
test/regress/regress0/parser/linear_arithmetic_err1.smt2 [new file with mode: 0644]
test/regress/regress0/parser/linear_arithmetic_err2.smt2 [new file with mode: 0644]
test/regress/regress0/parser/linear_arithmetic_err3.smt2 [new file with mode: 0644]
test/regress/regress1/fmf/fmf-fun-no-elim-ext-arith.smt2
test/regress/regress1/fmf/fmf-fun-no-elim-ext-arith2.smt2
test/regress/regress1/quantifiers/issue5484-qe.smt2
test/regress/regress1/quantifiers/issue5484b-qe.smt2
test/regress/regress1/quantifiers/lia-witness-div-pp.smt2
test/regress/regress2/sygus/three.sy