Replies: 2 comments 6 replies
-
Hi @skius thanks for the interest! The short answer is no. In this particular case, a solution for When a variable is included in a cycle then there's an option in fixpoint that will give you back the solution. I don't know if it's technically possible to modify fixpoint to also output solutions for the first type of kvars. @ranjitjhala will certainly known this better. |
Beta Was this translation helpful? Give feedback.
-
Hi Neils - yes, indeed the existential quantification is over variables
*other than* the “parameters” (z).
In this case there are none, but in general the horn constraint “defining”
K can have other binders which get existentially quantified out (analogous
to the quantification of “old” values in the usual strongest postcondition
rule)
Ranjit
…On Thu, Nov 2, 2023 at 4:02 AM Niels Saurer ***@***.***> wrote:
Thanks a lot! Subscribed to the bug report.
Hmm, not sure I follow this.
It's possible I misunderstood you calling the OP solution "unreadable",
but I'm saying that it does look exactly like the strongest postcondition
solution, assuming we replace the 2nd and 4th instance of
lq_karg$nnf_arg##k0##0##k0 with z (from k(z) := ...) - the two
existentials would simplify to k(z) := (z=4) || (z=6). Of course, if we
really are quantifying over z (and the 1st and 3rd occurrence are not a
pretty-printing bug), then to me it would seem the whole expression
simplifies to true which doesn't make sense to me.
—
Reply to this email directly, view it on GitHub
<https://urldefense.com/v3/__https://github.com/flux-rs/flux/discussions/546*discussioncomment-7455342__;Iw!!Mih3wA!AAnKWckUXosxFjSyyDSZ9xWRjeL8xdybMMdT94zTQhcuY9GGiq-JacS5JH7rSX8DU3S1aHd4UGQwn4ImBoe6MxiS$>,
or unsubscribe
<https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AAMS4OFYU6GDBLX2DXF5WKTYCN4TZAVCNFSM6AAAAAA6ZTQORWVHI2DSMVQWIX3LMV43SRDJONRXK43TNFXW4Q3PNVWWK3TUHM3TINJVGM2DE__;!!Mih3wA!AAnKWckUXosxFjSyyDSZ9xWRjeL8xdybMMdT94zTQhcuY9GGiq-JacS5JH7rSX8DU3S1aHd4UGQwn4ImBg1oMINq$>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
I've been looking into abstract refinements, and was really excited to see something like this work:
In particular, how it was able to infer that
v % 4 == 2
must be true for the max of 4 and 6. I can see "by eye" that by instantiatingp(x) := x == 4 || x == 6
such a postcondition is easily proven, but I was wondering what exactly flux is doing behind the scenes.I tried enabling a bunch of
DUMP_
environment variables, which got me this.smt2
file:And after feeding that into
liquid-fixpoint
with the-v
option, I got:I was wondering how (if that is even possible) to extract a "definition" for
$k0
from the tools?Beta Was this translation helpful? Give feedback.
All reactions