• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

SRI-CSL / yices2 / 27026975493
69%

Build:
DEFAULT BRANCH: master
Ran 05 Jun 2026 04:39PM UTC
Jobs 1
Files 486
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

05 Jun 2026 04:28PM UTC coverage: 69.005% (+0.2%) from 68.798%
27026975493

push

github

web-flow
Add wide (truth-invariant) model generalization mode (#630)

* Add wide (truth-invariant) model generalization mode

Implements a new model-generalization algorithm that walks the Boolean
structure of the input formula and unions per-disjunct projections,
producing a generalization that is truth-invariant for the formula
rather than sign-invariant for a single literal implicant.

The wide algorithm is now the default behaviour of YICES_GEN_BY_PROJ
and YICES_GEN_DEFAULT (for arithmetic-variable elimination). The
legacy implicant-then-project pipeline remains available under the
new YICES_GEN_BY_PROJ_LOCAL mode.

Algorithm:
  1. Walk each top-level f[i] enumerating cubes true at the model.
     - OR_TERM positive : pick all satisfied disjuncts, union their
       cube sets.
     - OR_TERM negative : conjunction-of-negations via De Morgan,
       Cartesian-product the cube sets of each negated arg.
     - Boolean-typed ITE_TERM : decompose as (cond AND branch).
     - Otherwise : emit a singleton cube containing the literal.
  2. Cartesian-product per-formula cube sets to obtain joint cubes
     (this preserves coupling of shared elimination variables).
  3. Project each joint cube via the legacy implicant+project
     pipeline, then OR the results.

Output shape:
  - Single-cube case (purely conjunctive input) : projected literals
    are emitted flat, exactly matching the legacy YICES_GEN_BY_PROJ
    output shape. Backwards-compatible with existing callers.
  - Multi-cube case : v contains a single OR-of-AND term.

Fallback: if the cube-set Cartesian product would exceed an internal
budget (WIDE_CUBE_BUDGET = 1024), the routine transparently falls
back to the legacy local pipeline.

The internal exists/forall solver (efsolver.c) is unchanged: it has
its own implicant+project pipeline that bypasses this API.

Files changed:
  - src/include/yices_types.h: add YICES_GEN_BY_PROJ_LOCAL enum value.
  - src/include/yices.h: document the new wide and legacy mo... (continued)

411 of 531 new or added lines in 2 files covered. (77.4%)

1 existing line in 1 file now uncovered.

88130 of 127715 relevant lines covered (69.01%)

1647051.91 hits per line

Uncovered Changes

Lines Coverage ∆ File
118
69.8
69.8% src/model/generalization.c
2
50.16
1.45% src/api/yices_api.c

Coverage Regressions

Lines Coverage ∆ File
1
37.94
2.21% src/solvers/cdcl/new_sat_solver.c
Jobs
ID Job ID Ran Files Coverage
1 27026975493.1 05 Jun 2026 04:38PM UTC 486
69.01
GitHub Action Run
Source Files on build 27026975493
  • Tree
  • List 486
  • Changed 8
  • Source Changed 0
  • Coverage Changed 8
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • e9b6610a on github
  • Prev Build on master (#26999763223)
  • Next Build on master (#27077160339)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc