mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 09:35:32 +00:00
add missing tactic descriptions, add rewrite for tamagochi
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
95cb06d8cf
commit
fcea32344e
19 changed files with 147 additions and 49 deletions
|
@ -13,7 +13,31 @@ Author:
|
|||
|
||||
Leonardo (leonardo) 2011-10-24
|
||||
|
||||
Notes:
|
||||
Tactic Documentation:
|
||||
|
||||
## Tactic aig
|
||||
|
||||
### Short Description
|
||||
|
||||
Simplify Boolean structure using AIGs (And-inverter graphs).
|
||||
|
||||
### Long Description
|
||||
|
||||
And-inverter graphs (AIGs) uses just the Boolean connectives `and` and `not` to encode Boolean
|
||||
formulas. The circuit representation using AIGs first converts formulas using other connectives to this normal form,
|
||||
then performs local simplification steps to minimize the circuit representation.
|
||||
Note that the simplification steps used by this tactic are heuristic, trading speed for power,
|
||||
and do not represent a high-quality circuit minimization approach.
|
||||
|
||||
### Example
|
||||
|
||||
```z3
|
||||
(declare-const a Bool)
|
||||
(declare-const b Bool)
|
||||
(declare-const c Bool)
|
||||
(assert (or (and a b) (and b a c)))
|
||||
(apply aig)
|
||||
```
|
||||
|
||||
--*/
|
||||
#pragma once
|
||||
|
|
|
@ -13,6 +13,42 @@ Author:
|
|||
|
||||
Nikolaj Bjorner (nbjorner) 2022-10-30
|
||||
|
||||
Tactic Documentation:
|
||||
|
||||
## Tactic elim-predicates
|
||||
|
||||
### Short Description
|
||||
Eliminates predicates and macros from a formula.
|
||||
|
||||
### Long Description
|
||||
The tactic subsumes the functionality of `macro-finder` and `quasi-macros`.
|
||||
Besides finding macros, it eliminates predicates using Davis-Putnam
|
||||
resolution.
|
||||
|
||||
### Example
|
||||
|
||||
the predicate `p` occurs once positively. All negative occurrences of `p` are resolved against this positive occurrence.
|
||||
The result of resolution is a set of equalities between arguments to `p`. The function `f` is replaced by a partial solution.
|
||||
|
||||
```
|
||||
(declare-fun f (Int Int Int) Int)
|
||||
(declare-fun p (Int) Bool)
|
||||
(declare-const a Int)
|
||||
(declare-const b Int)
|
||||
|
||||
(assert (forall ((x Int) (y Int)) (= (f x y (+ x y)) (* 2 x y))))
|
||||
(assert (p (f 8 a (+ a 8))))
|
||||
(assert (not (p (f 0 a (+ a 8)))))
|
||||
(assert (not (p (f 2 a (+ a 8)))))
|
||||
(assert (not (p (f 1 a (+ a b)))))
|
||||
(apply elim-predicates)
|
||||
```
|
||||
|
||||
### Notes
|
||||
|
||||
* support unsat cores
|
||||
* does not support proofs
|
||||
|
||||
--*/
|
||||
#pragma once
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ Notes:
|
|||
#include "tactic/fd_solver/pb2bv_solver.h"
|
||||
#include "tactic/fd_solver/bounded_int2bv_solver.h"
|
||||
#include "solver/solver2tactic.h"
|
||||
#include "solver/parallel_tactic.h"
|
||||
#include "solver/parallel_tactical.h"
|
||||
#include "solver/parallel_params.hpp"
|
||||
|
||||
solver * mk_fd_solver(ast_manager & m, params_ref const & p, bool incremental_mode) {
|
||||
|
|
|
@ -43,7 +43,7 @@ Notes:
|
|||
#include "sat/sat_solver/sat_smt_solver.h"
|
||||
#include "ast/rewriter/bv_rewriter.h"
|
||||
#include "solver/solver2tactic.h"
|
||||
#include "solver/parallel_tactic.h"
|
||||
#include "solver/parallel_tactical.h"
|
||||
#include "solver/parallel_params.hpp"
|
||||
#include "params/tactic_params.hpp"
|
||||
#include "parsers/smt2/smt2parser.h"
|
||||
|
|
|
@ -13,7 +13,7 @@ Author:
|
|||
|
||||
Christoph (cwinter) 2012-10-26
|
||||
|
||||
Tactic Description
|
||||
Tactic Documentation
|
||||
|
||||
## Tactic macro-finder
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ Author:
|
|||
|
||||
Christoph (cwinter) 2012-10-26
|
||||
|
||||
Tactic Description
|
||||
Tactic Documentation
|
||||
|
||||
## Tactic quasi-macro-finder
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue