Giter Site home page Giter Site logo

Comments (7)

aqjune avatar aqjune commented on May 22, 2024 1

I find that better UB printing will be very helpful for correctly understanding counter examples; when an input program is too large, what I can do is to just guess which operation raised UB from the values of registers...
How costly will it be if we start to write a code for supporting this? What I immediately see is that there is no explicit mapping from instruction to its UB, which is needed to print the info.

from alive2.

nunoplopes avatar nunoplopes commented on May 22, 2024 1

True, vcgen can take some time. The cost is basically track another expression per statement. Instead of just value & poison, we would need store UB as well.
I would wait a bit until we merge @kevindevos' patch, since this work conflicts with his.

from alive2.

LebedevRI avatar LebedevRI commented on May 22, 2024

Still happens with master.

from alive2.

nunoplopes avatar nunoplopes commented on May 22, 2024

The root cause of this is that we don't track UB in the data-flow, only in control-flow. This is fine for translation validation, but not sufficient for standalone alive.
With -root-only it verifies just fine, just not with the default per-register verification.

from alive2.

regehr avatar regehr commented on May 22, 2024

would it be bad to change the default to root-only, and make the other thing available as an option?

from alive2.

nunoplopes avatar nunoplopes commented on May 22, 2024

I don't know what the overhead would be; didn't try it out.
An alternative to store this information is to repeat symbolic execution when printing a counterexample. Instead of assuming that all functions/optimizations are wrong, we just pay a small price when they are.
The bigger challenge is how to handle undefs. That's the biggest complication.

from alive2.

aqjune avatar aqjune commented on May 22, 2024

If it is related with creation of a unique variable name, would it be helpful if the creation is done by alive2 rather than by Z3_mk_fresh_const?
But one concern that I have is that sometimes vcgen takes pretty long time, and printing counter examples will again take a time because it runs symbolic execution again.
For experiment, we have --succinct flag, so the cost can be hidden.

from alive2.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.