Skip to content

Commit

Permalink
Merge branch 'master' into feature/dnnf-model-enumeration
Browse files Browse the repository at this point in the history
  • Loading branch information
SHildebrandt committed Nov 21, 2024
2 parents ef1a693 + 47d1db3 commit e2703bd
Show file tree
Hide file tree
Showing 120 changed files with 3,365 additions and 2,484 deletions.
9 changes: 3 additions & 6 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,7 @@ jobs:
java-version: 1.8
- name: Build with Maven
run: mvn -B package
- name: Upload coverage to codecov.io
uses: codecov/codecov-action@v1
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v4.0.1
with:
name: LogicNG
file: ./target/site/jacoco/jacoco.xml
flags: unittests
env_vars: OS
token: ${{ secrets.CODECOV_TOKEN }}
13 changes: 0 additions & 13 deletions .github/workflows/mattermost.yml

This file was deleted.

56 changes: 55 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,61 @@

LogicNG uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [2.6.0] - 2024-09-10

### Added

- New class `OptimizationConfig` used to configure optimization computations in various algorithms. It allows to configure the following aspects:
- the `optimizationType` (either SAT-based optimization or a MaxSAT algorithm)
- the `maxSATConfig` to further configure the MaxSAT algorithm
- the `optimizationHandler` to use
- the `maxSATHandler` to use
- Added three new configuration options to `AdvancedSimplifierConfig`:
- `minimalDnfCover` determines whether the step for computing the minimal DNF cover should be performed. Default is `true`.
- `returnIntermediateResult` allows to return an intermediate result from the `AdvancedSimplifier` if the computation was aborted by a handler. Default is `false`.
- `optimizationConfig` can be used to configure the algorithms in the simplifier which perform optimizations, also the `OptimizationHandler handler` moved into this config

## [2.5.1] - 2024-07-31

### Changed

- Changed visibility from some methods from package-private to public for formula and solver serializiation via the
new https://github.com/logic-ng/serialization library


## [2.5.0] - 2024-05-02

### Removed (Potentially Breaking Change!)

- All parser classes from `org.logicng.io.parsers` (including in particular the two main parsers `PropositionalParser` and `PseudoBooleanParser`) as well as the class `org.logicng.io.readers.FormulaReader` were moved to the new artifacts `org.logicng.logicng-parser-j8` (or `org.logicng.logicng-parser-j11` for Java 11). So LogicNG now consists of two artifacts:
- All the core functionality of LogicNG except for the parser is located in the "old" `org.logicng:logicng` artifact. This artifact does *not* depend on ANTLR anymore (which was the reason for splitting the library). This library will stay on Java 8, but nothing should prevent its usage in higher Java versions.
- The parser functionality is located in `org.logicng:logicng-parser-j8` (for Java 8 and ANTLR 4.9.3) and `org.logicng:logicng-parser-j11` (for Java 11 and the most recent ANTLR version). The version of this library will stay in sync with the core library.
- The method `FormulaFactory.parse()` was removed. If you're using this method you should include one of the new parser artefacts and then just create your own `PropositionalParser` or `PseudoBooleanParser` and call `parse()` on them.

### Added

- Added unsafe methods `term` and `dnf` to the `FormulaFactory` to create a term (conjunction of literals) or a DNF (c.f. with method `FormulaFactory#clause` and `FormulaFactory#cnf`). Both methods do not perform reduction operations and therefore are faster. Only use these methods if you are sure the input is free of complementary and redundant operands.
- Class `UBTree` offers new method `generateSubsumedUBTree` to directly generate a subsumed UBTree for the given sets.
- The `DnnfFactory` now offers a method to compile a DNNF with a `DnnfCompilationHandler`
- The `ModelCounter` now offers a method to pass a `DnnfCompilationHandler` in order to control long-running computations

### Changed

- UBTree data structure now supports empty sets.
- Added side effect note in `SATSolver` for the four assumption solving methods.
- Methods for reordering and swapping variables on BDD were refactored: `BDD.getReordering`, `BDDKernel.getReordering`, and `BDD.swapVariables` are now deprecated and should not be used anymore. Instead, there are new methods on the `BDDKernel`. Note that these actions affect all BDDs generated by the kernel.
- `BDDKernel.swapVariables` for swapping two variables (or variable indices)
- `BDDKernel.reorder` for automatically reordering the BDD
- `BDDKernel.activateReorderDuringBuild` for activating reordering during build
- `BDDKernel.addVariableBlock` for defining a variable block for reordering
- `BDDKernel.addAllVariablesAsBlock` for defining one block for each variable (s.t. all variables are allowed to be reordered independently)
- Significant performance improvements in the DTree generation for DNNFs
- Minor performance improvements in some DNF/CNF generating algorithms by using faster `cnf`/`dnf`.

### Fixed

- The formula generation on BDDs was broken when the ordering was changed by `BDDKernel.reorder` or `BDDKernel.swapVariables`. This is now fixed.

## [2.4.1] - 2022-12-01

### Changed
Expand Down Expand Up @@ -359,4 +414,3 @@ LogicNG uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
### Added

- Initial Release of LogicNG

4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
![build](https://github.com/logic-ng/LogicNG/workflows/build/badge.svg) [![codecov](https://codecov.io/gh/logic-ng/LogicNG/branch/development/graph/badge.svg)](https://codecov.io/gh/logic-ng/LogicNG) ![License](https://img.shields.io/badge/license-Apache%202-ff69b4.svg) [![Maven Central](https://img.shields.io/maven-central/v/org.logicng/logicng.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22org.logicng%22%20AND%20a:%22logicng%22)
![build](https://github.com/logic-ng/LogicNG/workflows/build/badge.svg) [![codecov](https://codecov.io/gh/logic-ng/LogicNG/branch/master/graph/badge.svg?token=RMmCetIVYf)](https://codecov.io/gh/logic-ng/LogicNG) ![License](https://img.shields.io/badge/license-Apache%202-ff69b4.svg) [![Maven Central](https://img.shields.io/maven-central/v/org.logicng/logicng.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22org.logicng%22%20AND%20a:%22logicng%22)


<a href="https://www.logicng.org"><img src="https://github.com/logic-ng/LogicNG/blob/master/doc/logo/logo_big.png" alt="logo" width="300"></a>
Expand Down Expand Up @@ -34,7 +34,7 @@ LogicNG is released in the Maven Central Repository. To include it just add
<dependency>
<groupId>org.logicng</groupId>
<artifactId>logicng</artifactId>
<version>2.4.1</version>
<version>2.6.0</version>
</dependency>
```

Expand Down
Loading

0 comments on commit e2703bd

Please sign in to comment.