Appropriate Z3 tactic to eliminate trivial existential quantifierquantifier elimination over bit vectors produces overly complicated resultsQuantifier Elimination - More questionsArrays and QuantifierQuantifier elimination for multilinear rational arithmetic in Z3What is the state-of-the-art solver for quantifier elimination under LRA?How can I write a long smt-lib expression with an existential quantifier?Z3 Interpolants in presence of quantifiersUse Z3 to determine difficulty of quantifier elimination for BV-queriesWhat tactic configurations makes solving Quantifier logic faster in general?z3py: Usage of existential quantifier
Of strange atmospheres - the survivable but unbreathable
How did NASA Langley end up with the first 737?
Underwater city sanitation
Why is 'additive' EQ more difficult to use than 'subtractive'?
Are runways booked by airlines to land their planes?
Can a ring of spell storing and access to Find spells produce an endless menagerie?
How to politely tell someone they did not hit reply all in email?
What were the Ethiopians doing in Xerxes' army?
A burglar's sunglasses, a lady's odyssey
How does the Earth's center produce heat?
Where is Jon going?
Python program for fibonacci sequence using a recursive function
Best shape for a necromancer's undead minions for battle?
Surprisingly persistent local variable
Why did Jon Snow do this immoral act if he is so honorable?
Is keeping the forking link on a true fork necessary (Github/GPL)?
Can we assume that a hash function with high collision resistance also means highly uniform distribution?
Shorten or merge multiple lines of `&> /dev/null &`
How to deceive the MC
3 prong range outlet
What would prevent living skin from being a good conductor for magic?
Navigating a quick return to previous employer
Can a UK national work as a paid shop assistant in the USA?
No Iron for your fair-folk maiden? (Part 1)
Appropriate Z3 tactic to eliminate trivial existential quantifier
quantifier elimination over bit vectors produces overly complicated resultsQuantifier Elimination - More questionsArrays and QuantifierQuantifier elimination for multilinear rational arithmetic in Z3What is the state-of-the-art solver for quantifier elimination under LRA?How can I write a long smt-lib expression with an existential quantifier?Z3 Interpolants in presence of quantifiersUse Z3 to determine difficulty of quantifier elimination for BV-queriesWhat tactic configurations makes solving Quantifier logic faster in general?z3py: Usage of existential quantifier
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I'm experimenting with Z3 tactics and was wondering which tactic can simplify trivial existential quantifiers like the following:
(declare-datatypes () ((Value none (some (val String)))))
(declare-const foo Value)
(assert (exists ((x String)) (and (= foo (some x)) (= x "bar"))))
I've attempted something simple like this:
(apply (repeat (then (or-else split-clause skip) propagate-values simplify)))
But it doesn't get rid of the exists
. I can throw qe
or qe2
into the mix there, but those feel like overkill here, and generally take ages on nontrivial problems.
If I do a straightforward (check-sat)
with maximum verbosity, Z3 has zero trouble solving it:
(simplifier :num-exprs 8 :num-asts 174 :time 0.00 :before-memory 2.78 :after-memory 2.78)
(smt.tactic start)
(smt.propagate-values)
(smt.nnf-cnf)
(smt.reduce-asserted)
(smt.lift-ite)
(smt.reducing)
(smt.refine-injectivity)
(smt.cheap-fourier-motzkin)
(smt.reducing)
(smt.pattern-inference)
(smt.maximizing-bv-sharing)
(smt.reduce-asserted)
(smt.simplifier-done)
(smt.searching)
sat
(model
(define-fun foo () Value
(some "bar"))
)
And I was hoping some of the steps would suggest tactics I can apply myself, but they don't.
Is there a good tactic for this?
z3 smt
add a comment |
I'm experimenting with Z3 tactics and was wondering which tactic can simplify trivial existential quantifiers like the following:
(declare-datatypes () ((Value none (some (val String)))))
(declare-const foo Value)
(assert (exists ((x String)) (and (= foo (some x)) (= x "bar"))))
I've attempted something simple like this:
(apply (repeat (then (or-else split-clause skip) propagate-values simplify)))
But it doesn't get rid of the exists
. I can throw qe
or qe2
into the mix there, but those feel like overkill here, and generally take ages on nontrivial problems.
If I do a straightforward (check-sat)
with maximum verbosity, Z3 has zero trouble solving it:
(simplifier :num-exprs 8 :num-asts 174 :time 0.00 :before-memory 2.78 :after-memory 2.78)
(smt.tactic start)
(smt.propagate-values)
(smt.nnf-cnf)
(smt.reduce-asserted)
(smt.lift-ite)
(smt.reducing)
(smt.refine-injectivity)
(smt.cheap-fourier-motzkin)
(smt.reducing)
(smt.pattern-inference)
(smt.maximizing-bv-sharing)
(smt.reduce-asserted)
(smt.simplifier-done)
(smt.searching)
sat
(model
(define-fun foo () Value
(some "bar"))
)
And I was hoping some of the steps would suggest tactics I can apply myself, but they don't.
Is there a good tactic for this?
z3 smt
add a comment |
I'm experimenting with Z3 tactics and was wondering which tactic can simplify trivial existential quantifiers like the following:
(declare-datatypes () ((Value none (some (val String)))))
(declare-const foo Value)
(assert (exists ((x String)) (and (= foo (some x)) (= x "bar"))))
I've attempted something simple like this:
(apply (repeat (then (or-else split-clause skip) propagate-values simplify)))
But it doesn't get rid of the exists
. I can throw qe
or qe2
into the mix there, but those feel like overkill here, and generally take ages on nontrivial problems.
If I do a straightforward (check-sat)
with maximum verbosity, Z3 has zero trouble solving it:
(simplifier :num-exprs 8 :num-asts 174 :time 0.00 :before-memory 2.78 :after-memory 2.78)
(smt.tactic start)
(smt.propagate-values)
(smt.nnf-cnf)
(smt.reduce-asserted)
(smt.lift-ite)
(smt.reducing)
(smt.refine-injectivity)
(smt.cheap-fourier-motzkin)
(smt.reducing)
(smt.pattern-inference)
(smt.maximizing-bv-sharing)
(smt.reduce-asserted)
(smt.simplifier-done)
(smt.searching)
sat
(model
(define-fun foo () Value
(some "bar"))
)
And I was hoping some of the steps would suggest tactics I can apply myself, but they don't.
Is there a good tactic for this?
z3 smt
I'm experimenting with Z3 tactics and was wondering which tactic can simplify trivial existential quantifiers like the following:
(declare-datatypes () ((Value none (some (val String)))))
(declare-const foo Value)
(assert (exists ((x String)) (and (= foo (some x)) (= x "bar"))))
I've attempted something simple like this:
(apply (repeat (then (or-else split-clause skip) propagate-values simplify)))
But it doesn't get rid of the exists
. I can throw qe
or qe2
into the mix there, but those feel like overkill here, and generally take ages on nontrivial problems.
If I do a straightforward (check-sat)
with maximum verbosity, Z3 has zero trouble solving it:
(simplifier :num-exprs 8 :num-asts 174 :time 0.00 :before-memory 2.78 :after-memory 2.78)
(smt.tactic start)
(smt.propagate-values)
(smt.nnf-cnf)
(smt.reduce-asserted)
(smt.lift-ite)
(smt.reducing)
(smt.refine-injectivity)
(smt.cheap-fourier-motzkin)
(smt.reducing)
(smt.pattern-inference)
(smt.maximizing-bv-sharing)
(smt.reduce-asserted)
(smt.simplifier-done)
(smt.searching)
sat
(model
(define-fun foo () Value
(some "bar"))
)
And I was hoping some of the steps would suggest tactics I can apply myself, but they don't.
Is there a good tactic for this?
z3 smt
z3 smt
edited Mar 24 at 14:07
copumpkin
asked Mar 23 at 22:45
copumpkincopumpkin
2,2821321
2,2821321
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55319083%2fappropriate-z3-tactic-to-eliminate-trivial-existential-quantifier%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55319083%2fappropriate-z3-tactic-to-eliminate-trivial-existential-quantifier%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown