Skip to content

Regression Bugs + New Support#143

Merged
yannicnoller merged 10 commits intoSymbolicPathFinder:sv-compfrom
SalmaneKhalili:sv-comp
Feb 26, 2026
Merged

Regression Bugs + New Support#143
yannicnoller merged 10 commits intoSymbolicPathFinder:sv-compfrom
SalmaneKhalili:sv-comp

Conversation

@SalmaneKhalili
Copy link

@SalmaneKhalili SalmaneKhalili commented Feb 10, 2026

Issue

#138

Implementations:

  • refactored the rem operator in ProblemZ3.java using a conditional If-Then-Else (ITE) block.
    Logic: (dividend < 0) ? -(-dividend % divisor) : (dividend % divisor)
    by negating the dividend to make it positive we align with Z3's expected input when performing the modulo, and then negating the result back, forces the solver to respect Java's sign convention.
    Verdict: New Support for ExSymExeI2D_false.yml + negated some regression tests.

  • a mixed operator that performs runtime sort-detection and proper casting before executing the operation, which gives us possibility to mix reals, integers, and bitvectors.
    Verdict: negated some regression tests.

  • patched gov.nasa.jpf.symbc.witness.Edge.java to expand its type-awareness, explicitly adding support for long, short, and byte. previously it was hardcoded to deal with only a few types, which would flag an assertion failure and flag ExSymExeLongBytecodes_false and ExSymExeLCMP_false as unknown.

  • refactored exception messages to be more helpful for future debugging.

Overall results:

jpf-regression benchmarks
Fixed 7 Regression bugs.
Added NEW support for 3 failures.

image

Benchexec files:

jpf-regression.2026-02-10_11-44-27.results.spf-regression-run.JPF-Regression-Only.txt

Next Todo

Will be addressing jdart-regressions, mainly:
[ ] Add shift support in ProblemZ3, this alone would knock out 3 regression tests in jdart-regression sv-benchmarks.
[ ] Look into D2L, i believe we have lossy conversion making us fail jdart-regression/double2long.yml
[ ] add radians to our overwritten native math library for jdart-regression/radians.yml

SalmaneKhalili and others added 10 commits January 24, 2026 10:32
Removed hardcoded comment about bitvector length.
RUntime exceptions are printed but the execution does not fail, although
it will be flagged as unsafe, and the witness generated will spurious.
I would rather use UnsupportedOperationException but there might be some
error checking somewhere that might behave differently.
Althought UOE is a type of runtimeexception, will need feedback on this
- refactored the rem overloads in ProblemZ3.java using a conditional
If-Then-Else (ITE) block. to negate the dividend to make it positive
(aligning with Z3's expected input)
- mixed operator in ProblemZ3.java now performs runtime sort-detection
for intExpr,RealExpr, or BitVecExpr
- patched Edge.java to expand its type-awareness, explicitly adding
support for long, short, and byte.
@SalmaneKhalili
Copy link
Author

SalmaneKhalili commented Feb 11, 2026

To be more specific here are the benchmarks failing when the mixed operator is not implemented/commented out in my case:

image

/jpf-regression/ExSymExeD2I_true
/jpf-regression/ExSymExeD2L_false
/jpf-regression/ExSymExeD2L_true
/jpf-regression/ExSymExeF2I_true
/jpf-regression/ExSymExeF2L_false
/jpf-regression/ExSymExeF2L_true
/jpf-regression/ExSymExeI2D_false
/jpf-regression/ExSymExeI2D_true
/jbmc-regression/cast1
/jdart-regression/double2long (Needs mixed + more debugging)

@sohah
Copy link

sohah commented Feb 22, 2026

@SalmaneKhalili , thank you for your contributions.
@yannicnoller, this pr looks good to me, can you please accept it?

@yannicnoller yannicnoller merged commit 5c5df75 into SymbolicPathFinder:sv-comp Feb 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants