3
0
Fork 0
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:
Nikolaj Bjorner 2023-01-08 13:32:26 -08:00
parent 95cb06d8cf
commit fcea32344e
19 changed files with 147 additions and 49 deletions

View file

@ -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

View file

@ -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

View file

@ -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) {

View file

@ -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"

View file

@ -13,7 +13,7 @@ Author:
Christoph (cwinter) 2012-10-26
Tactic Description
Tactic Documentation
## Tactic macro-finder

View file

@ -13,7 +13,7 @@ Author:
Christoph (cwinter) 2012-10-26
Tactic Description
Tactic Documentation
## Tactic quasi-macro-finder