3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-03-20 11:55:49 +00:00
Commit graph

38 commits

Author SHA1 Message Date
Angelica Moreira
602932e3d1 Add numeral extraction helpers to Java API
New methods:
- Expr.getNumeralDouble(): retrieve any numeral as a double
- IntNum.getUint(): extract numeral as unsigned 32-bit value
- IntNum.getUint64(): extract numeral as unsigned 64-bit value
- RatNum.getSmall(): numerator/denominator as int64 pair
- RatNum.getRationalInt64(): numerator/denominator (returns null on overflow)

Each is a thin wrapper around the existing Native binding.
Added examples to JavaExample.java covering all new methods.
2026-03-14 20:59:11 +00:00
Angelica Moreira
b8e15f2121
Add missing AST query methods to Java API (#8977)
* add Expr.isGround() to Java API

Expose Z3_is_ground as a public method on Expr. Returns true when the
expression contains no free variables.

* add Expr.isLambda() to Java API

Expose Z3_is_lambda as a public method on Expr. Returns true when the
expression is a lambda quantifier.

* add AST.getDepth() to Java API

Expose Z3_get_depth as a public method on AST. Returns the maximum
number of nodes on any path from root to leaf.

* add ArraySort.getArity() to Java API

Expose Z3_get_array_arity as a public method on ArraySort. Returns
the number of dimensions of a multi-dimensional array sort.

* add DatatypeSort.isRecursive() to Java API

Expose Z3_is_recursive_datatype_sort as a public method on
DatatypeSort. Returns true when the datatype refers to itself.

* add FPExpr.isNumeral() to Java API

Expose Z3_fpa_is_numeral as a public method on FPExpr. Returns true
when the expression is a concrete floating-point value.

* add isGroundExample test to JavaExample

Test Expr.isGround() on constants, variables, and compound
expressions.

* add astDepthExample test to JavaExample

Test AST.getDepth() on leaf nodes and nested expressions to verify
the depth computation.

* add arrayArityExample test to JavaExample

Test ArraySort.getArity() on single-domain and multi-domain array
sorts.

* add recursiveDatatypeExample test to JavaExample

Test DatatypeSort.isRecursive() on a recursive list datatype and a
non-recursive pair datatype.

* add fpNumeralExample test to JavaExample

Test FPExpr.isNumeral() on a floating point constant and a symbolic
variable.

* add isLambdaExample test to JavaExample

Test Expr.isLambda() on a lambda expression and a plain variable.
2026-03-14 10:13:42 -07:00
Copilot
6d14d2e3b8
Add missing API methods: Java substituteFuns, TypeScript Fixedpoint and substitution APIs (#8138)
* Initial plan

* Add substituteFuns to Java and substitute methods to TypeScript

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

* Add Fixedpoint (Datalog) API to TypeScript bindings

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

* Improve error message in Java substituteFuns method

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

* Fix TypeScript build error: use .ptr instead of .decl for FuncDecl

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

* Fix TypeScript build errors: handle optional symbols and pointer null checks

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-01-10 12:04:50 -08:00
Ruijie Fang
339f0cd5f9
Correctly distinguish between Lambda and Quantifier in Z3 Java API (#7955)
* Distinguish between Quantifier and Lambda in AST.java

* Distinguish betwee Lambda and Quantifier in Expr.java

* Make things compile
2025-09-30 09:55:14 -07:00
Alexander Kreuzer
dc5fa89de3
Mixing Integers and Rational in the new Java API #5085 (#5098)
* Added covariance to arithmetic operations

* Added distillSort

* Update JavaGenericExample.java

Co-authored-by: Alexander Kreuzer <alexander.kreuzer@sap.com>
Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-03-16 05:24:23 -07:00
Addison Crump
3bca1fbcd8
Java type generics (#4832)
* Generify, needs some testing and review

* Remove unnecessary change

* Whoops, ? capture that type

* Misread the docs, whoops

* More permissible arithmetic operations

* Implement believed Optimize generics

* Missed a few generics

* More permissible expr for arrays in parameters

* More permissible expr for bitvecs in parameters

* More permissible expr for bools in parameters

* More permissible expr for fps in parameters

* More permissible expr for fprms in parameters

* More permissible expr for ints in parameters

* More permissible expr for reals in parameters

* Undo breaking name conflict due to type erasure; see notes

* Whoops, fix typing of ReExpr

* Sort corrections for Re, Seq

* More permissible expr for regular expressions in parameters

* Fix name conflict between sequences and regular expressions; see notes

* Minor typo, big implications!

* Make Constructor consistent, associate captured types with other unknown capture types for datatype consistency

* More expressive; outputs of multiple datatype definitions are only known to be sort, not capture, and Constructor.of should make a capture

* Be less dumb and just type it a little differently

* Update examples, make sure to type Expr and FuncDecl sort returns

* General fixups

* Downgrade java version, make it only for the generic support, remove var and Expr[]::new construction

* Turns out Java 8 hadn't figured out how to do stream generics yet. Didn't even show up in my IDE, weird
2020-11-30 10:04:54 -08:00
Nikolaj Bjorner
27765ee0f4 add stub for #2522
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-10-08 09:54:07 -07:00
Nikolaj Bjorner
000e485794 add array selects to basic ackerman reduction improves performance significantly for #2525 as it now uses the SAT solver core instead of SMT core
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-09-01 12:17:19 -07:00
Nikolaj Bjorner
0d4b4b30b1 change storage layout of .Net binding Z3_bool to byte to deal with uninitialized memory reads on larger allocation sizes. Bug introduced when switching from defining Z3_bool as int to the bool type from stdbool
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-07-02 02:58:06 -07:00
Nikolaj Bjorner
fad1e611aa build warnings, updates to reduce-invertible, change is_algebraic tester to use int return type
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-07-01 12:34:55 -07:00
Nikolaj Bjorner
6e87622c8a remove references to deprecated uses of PROOF_MODE #1531
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-03-10 13:55:01 -05:00
Bruce Mitchener
73b3da37d8 Typo fixes. 2018-01-02 22:48:06 +07:00
Christoph M. Wintersteiger
db398eca7a Tabs, formatting. 2017-09-17 17:50:05 +01:00
Christoph M. Wintersteiger
d8a02bc040 Fixed AST translation functions in .NET and Java APIs. Fixes #1073. 2017-06-14 13:24:54 +01:00
Nikolaj Bjorner
c980cfd783 add concat recognizer
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-06-13 20:51:55 -07:00
Nikolaj Bjorner
52e0f3b539 add string accessors to managed APIs #1051
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-06-01 09:10:49 -07:00
KangJing Huang (Chaserhkj)
8092dd5aa3 Fix Expr.update in java API returning superclass 2017-05-29 20:51:42 -04:00
George Karpenkov
495ef0f055 Java bindings with no finalizers
Replacing finalizers with PhantomReferences, required quite a lot of
changes to the codebase.
2016-06-12 20:27:01 +02:00
George Karpenkov
8bb0010dc3 Javadoc and indentation fixes
- A proper way to refer to the function in the same class is "#funcName"

- There is no point in "@param p" declaration if no description follows
it.
2016-01-06 11:19:26 +01:00
George Karpenkov
c435bc379b Added braces
Lack of braces on multi-line statements is considered very scary in
Java.
2016-01-06 11:14:53 +01:00
George Karpenkov
1dcaddbec7 Adding @Override declarations
They are important, as they prevent miss-spelling the parent method  and
/or arguments name.
2016-01-06 11:07:48 +01:00
Nikolaj Bjorner
c1ebf6b4fc seq + API
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2016-01-04 18:01:48 -08:00
Christoph M. Wintersteiger
383d06b225 Bugfix for Expr.isInt in .NET, Java, ML.
Fixes #370
2015-12-10 15:13:55 +00:00
Christoph M. Wintersteiger
cbda38ee80 Added finite domain expressions and numerals to the .NET, Java, and Python APIs.
Relates to #318
2015-12-02 17:01:52 +00:00
Christoph M. Wintersteiger
b7bb53406f Turned Z3Exception into a RuntimeException such that throws declarations are not needed anymore. Thanks to codeplex user steimann for this suggestion. 2015-04-08 13:16:32 +01:00
Christoph M. Wintersteiger
d7a62baef4 Improved memory use of the Java API. Thanks to Joerg Pfaehler for reporting this issue!
+ formatting

Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2015-01-30 21:10:22 -06:00
Christoph M. Wintersteiger
84ed1c19a0 Bugfixes for the Java FPA API
Merge branch 'unstable' of https://git01.codeplex.com/z3 into unstable

Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2015-01-21 19:20:43 +00:00
Christoph M. Wintersteiger
376614a782 Java API: slight overhaul in preparation for the FP additions
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2015-01-03 15:09:52 +00:00
Christoph M. Wintersteiger
ddebb4a69d Documentation fixes
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2014-10-24 19:45:21 +01:00
Christoph M. Wintersteiger
4304012971 Java API: copyright notices
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2014-10-22 16:55:08 +01:00
Christoph M. Wintersteiger
944dfee008 .NET and Java API Bugfix (Codeplex issue 101)
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2014-04-02 19:25:05 +01:00
Christoph M. Wintersteiger
a833c9ac41 Fixed bug (codeplex issue 102)
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2014-04-02 17:56:55 +01:00
Christoph M. Wintersteiger
4b18c8f9c4 Java API: syntactic adjustments, getters, setters,
... convenience parameters, etc.

Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2013-01-17 19:31:02 +00:00
Christoph M. Wintersteiger
dd127c2f71 Java API: bugfix
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2013-01-10 18:16:29 +00:00
Christoph M. Wintersteiger
bbfd9dd19f Java API: bugfixes
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2012-11-28 22:20:36 +00:00
Christoph M. Wintersteiger
a9883e972f Java API: Bugfixes and Example.
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2012-11-27 23:06:35 +00:00
Christoph M. Wintersteiger
eee3bf886d Java API: package renaming.
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2012-11-27 19:09:30 +00:00
Christoph M. Wintersteiger
c6303fc8f5 Java API: a first version that compiles. This is still untested.
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2012-11-27 16:36:50 +00:00