3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-05-16 23:25:36 +00:00
Commit graph

65 commits

Author SHA1 Message Date
Lev Nachmanson
a37003fa2d fix #8185: add FPA rewriter simplifications for fma with zero multiplicand and classification of int-to-float conversions
Three optimizations that eliminate expensive FP bit-blasting:

1. fma(rm, ±0, y, z): decompose into simpler operations instead of
   building the full FMA bit-blast circuit. When z is a concrete
   non-zero value, simplifies to ite(isFinite(y), z, NaN).

2. isNaN/isInf/isNormal applied to to_fp(rm, to_real(int_expr)):
   convert to pure integer constraints. For integers, to_fp never
   produces NaN or subnormals, so classification reduces to
   overflow threshold checks based on the rounding mode.

3. Push classification functions (isNaN, isInf, isNormal) through
   ite when both branches are concrete FP numerals.

Together these transform the original formula from requiring full
FP bit-blasting (timeout) to pure integer/real reasoning (instant).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-18 07:30:55 -10:00
Copilot
4b7e02ebdd
Refactor mk_concat call sites to use std::initializer_list (#8494)
* Initial plan

* Refactor mk_concat call sites to use std::initializer_list

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
2026-02-04 13:45:20 -08:00
LeeYoungJoon
0a93ff515d
Centralize and document TRACE tags using X-macros (#7657)
* Introduce X-macro-based trace tag definition
- Created trace_tags.def to centralize TRACE tag definitions
- Each tag includes a symbolic name and description
- Set up enum class TraceTag for type-safe usage in TRACE macros

* Add script to generate Markdown documentation from trace_tags.def
- Python script parses trace_tags.def and outputs trace_tags.md

* Refactor TRACE_NEW to prepend TraceTag and pass enum to is_trace_enabled

* trace: improve trace tag handling system with hierarchical tagging

- Introduce hierarchical tag-class structure: enabling a tag class activates all child tags
- Unify TRACE, STRACE, SCTRACE, and CTRACE under enum TraceTag
- Implement initial version of trace_tag.def using X(tag, tag_class, description)
  (class names and descriptions to be refined in a future update)

* trace: replace all string-based TRACE tags with enum TraceTag
- Migrated all TRACE, STRACE, SCTRACE, and CTRACE macros to use enum TraceTag values instead of raw string literals

* trace : add cstring header

* trace : Add Markdown documentation generation from trace_tags.def via mk_api_doc.py

* trace : rename macro parameter 'class' to 'tag_class' and remove Unicode comment in trace_tags.h.

* trace : Add TODO comment for future implementation of tag_class activation

* trace : Disable code related to tag_class until implementation is ready (#7663).
2025-05-28 14:31:25 +01:00
Christoph M. Wintersteiger
f77608ed88
Add interpreted versions of unspecified cases of fp.to_ieee_bv and fp.to_real (#6077) 2022-06-04 17:53:23 +01:00
Nikolaj Bjorner
d36c3faf76 #4880 add interpreted versions of to_bv functions for MBQI quantifier models 2021-09-17 14:23:14 +01:00
Nikolaj Bjorner
c3c5c14ead prepare for min/max i
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-09-16 16:23:10 +01:00
Nuno Lopes
c47ab023e5 remove a few trivial destructors so they get inlined 2021-04-04 17:13:59 +01:00
Nikolaj Bjorner
3ae4c6e9de refactor get_sort 2021-02-02 04:45:54 -08:00
Nikolaj Bjorner
11c90cc142 move parameters from ast/rewriter to params
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-08-29 11:11:16 -07:00
Nuno Lopes
b9bc6975e9 fix crash in BV internalizer due to unknown bv_neg symbol 2019-11-16 16:24:24 +00:00
Christoph M. Wintersteiger
b373bf4252 Bugfixes for fpa2bv_converter. Fixes #1564. 2018-04-08 21:51:27 +01:00
Bruce Mitchener
76eb7b9ede Use nullptr. 2018-02-12 14:05:55 +07:00
Nikolaj Bjorner
8acc924c21 ifndef/define match
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-10-24 16:34:49 -07:00
Nuno Lopes
b53d69be18 fpa_rewriter: remove a mpq copy 2017-10-16 00:54:30 +01:00
Christoph M. Wintersteiger
cc9f67267d Eliminated the remaining operator kinds for partially unspecified FP operators. 2017-09-20 20:16:09 +01:00
Christoph M. Wintersteiger
60c6249912 Removed unused variable 2017-09-17 18:09:10 +01:00
Christoph M. Wintersteiger
65697eb277 Portability fixes 2017-09-15 21:13:47 +01:00
Christoph M. Wintersteiger
05447d612a Bugfixes for fp.to_* operators 2017-09-15 19:56:15 +01:00
Christoph M. Wintersteiger
a479fa610a Refactored treatment of unspecified FPA functions. 2017-09-14 20:29:07 +01:00
Christoph M. Wintersteiger
31cfca0444 Eliminated unspecified operators for fp.to_*bv, fp.to_real. Also fixes #1191. 2017-09-12 19:43:45 +01:00
Christoph M. Wintersteiger
4ceef09156 Renamed FPA-internal functions now that they are exposed. 2017-09-11 15:04:53 +01:00
Christoph M. Wintersteiger
e88487021a Exposed internal FPA func_decl kinds. Added missing FPA simplifications. Fixes #1242. 2017-09-11 14:36:58 +01:00
Nikolaj Bjorner
2b82fd5d0c updated include directives
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-08-01 10:51:47 -07:00
Nikolaj Bjorner
b19f94ae5b make include paths uniformly use path relative to src. #534
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-07-31 13:24:11 -07:00
Christoph M. Wintersteiger
7e705a2d32 Bug fixes for underspecified FP operations. 2016-10-15 18:35:39 +02:00
Christoph M. Wintersteiger
bc257211d6 Whitespace 2016-10-15 18:35:39 +02:00
Christoph M. Wintersteiger
617e941015 fp2bv refactoring 2016-05-23 18:10:17 +01:00
Christoph M. Wintersteiger
b6d90a64da fpa rewriter tidy up 2016-05-21 18:07:37 +01:00
Christoph M. Wintersteiger
1cc8146aba Bugfixes for FP UFs and arrays. 2016-05-20 19:53:57 +01:00
Christoph M. Wintersteiger
df81ab72f5 Bug and performance fixes for FP UFs. 2016-05-17 16:35:45 +01:00
Christoph M. Wintersteiger
6b2d84b2be Fixed model evaluation/simplification for to_ieee_bv. 2016-03-16 17:46:52 +00:00
Christoph M. Wintersteiger
7ec70c1686 bug fixes for unspecified FP results 2016-03-16 16:57:20 +00:00
Christoph M. Wintersteiger
db6b9faabc Bugfix for FPA rewriter. 2016-03-16 16:35:45 +00:00
Christoph M. Wintersteiger
cdc8e1303a Bugfix for fp.to_*_unspecified.
Fixes #507
2016-03-16 16:16:29 +00:00
Christoph M. Wintersteiger
99d7a47f82 Bugfixes for unspecified results from fp.to_* (models are still incomplete).
Relates to #507
2016-03-15 21:45:54 +00:00
Christoph M. Wintersteiger
371573cbff More implementation of fp.to_ieee_bv for unspecified input/output
Relates to #507
2016-03-15 15:11:37 +00:00
Christoph M. Wintersteiger
176782d62b Bugfix for fp.to_ieee_bv for unspecified input/output. 2016-03-15 14:38:11 +00:00
Christoph M. Wintersteiger
b5279d1da8 Bugfix for fp.to_ieee_bv.
Fixes #507.
2016-03-11 12:35:41 +00:00
Christoph M. Wintersteiger
de3cb7e5dc More FPA exponent/siginficand order consistency 2016-01-05 18:05:21 +00:00
Christoph M. Wintersteiger
05b29df2cb Bugfix for FP API 2016-01-04 21:01:01 +00:00
Christoph M. Wintersteiger
677ff221f8 Internal consistency: FP exponents are always passed before significands. 2016-01-04 18:57:15 +00:00
Christoph M. Wintersteiger
077e801590 Assertion fix. Relates to #383. 2015-12-23 13:41:52 +01:00
Christoph M. Wintersteiger
92152b16ca Bugfixes for model verification of unspecified values of fp.min/fp.max 2015-11-02 19:25:44 +00:00
Christoph M. Wintersteiger
8fffa9f188 Removed trailing whitespace. 2015-10-30 12:20:41 +00:00
Christoph M. Wintersteiger
9b5abcd55a Improved support for FPA unspecified min/max values, model validation, and proof generation. 2015-10-25 13:10:40 +00:00
Christoph M. Wintersteiger
ca496f20cb Partial refactoring of fpa2bv conversion to support proofs. 2015-10-25 13:10:40 +00:00
Christoph M. Wintersteiger
099775947e Partial fix for fp,min/fp.max models 2015-10-25 13:10:40 +00:00
Christoph M. Wintersteiger
de39173f6f Corrected unspecified behavior of fp.min/fp.max corner cases in fpa2bv_converter and in theory_fpa.
Fixes #68
2015-10-07 20:44:08 +01:00
Christoph M. Wintersteiger
8a026c355f Corrected unspecified behavior of corner cases in fp.min/fp.max.
Partially addresses #68.
2015-10-07 20:39:36 +01:00
Christoph M. Wintersteiger
79d69cd5f0 Added FP to_ieee_bv to fpa_rewriter to enable model evaluation. 2015-09-16 12:57:05 +01:00