mirror of
https://github.com/Z3Prover/z3
synced 2026-04-02 18:08:57 +00:00
not-contains placeholder
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
7b27866310
commit
d1d050f69f
2 changed files with 17 additions and 0 deletions
|
|
@ -1336,6 +1336,22 @@ namespace seq {
|
|||
add_clause(emp, mk_ge_e(mk_len(s), idx));
|
||||
}
|
||||
|
||||
/**
|
||||
* Consider the recursive definition of negated contains:
|
||||
~contains(a, b) =
|
||||
if |b| > |a| then true
|
||||
else if |b| = |a| then a != b
|
||||
else ~prefix(b, a) and ~contains(a[1:], b)
|
||||
|
||||
Create the recursive function not_contains that implements this recursive definition.
|
||||
Add the axiom
|
||||
contains(a, b) or not_contains(a, b)
|
||||
*/
|
||||
|
||||
void axioms::not_contains_axiom(expr *e) {
|
||||
throw default_exception("not implemented");
|
||||
}
|
||||
|
||||
expr_ref axioms::length_limit(expr* s, unsigned k) {
|
||||
expr_ref bound_tracker = m_sk.mk_length_limit(s, k);
|
||||
expr* s0 = nullptr;
|
||||
|
|
|
|||
|
|
@ -113,6 +113,7 @@ namespace seq {
|
|||
void unit_axiom(expr* n);
|
||||
void length_axiom(expr* n);
|
||||
void unroll_not_contains(expr* e);
|
||||
void not_contains_axiom(expr *e);
|
||||
void replace_re_axiom(expr* e);
|
||||
void replace_all_axiom(expr* e);
|
||||
void replace_re_all_axiom(expr* e);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue