Giter Site home page Giter Site logo

Comments (6)

treiher avatar treiher commented on August 30, 2024 1

The problem with steps is that the number is very prover specific, so you can't really just add them up to a total number or otherwise mix them

Yes, it is unfortunate that the steps are very prover specific. I think it would still make sense to determine the maximum number of required steps over all provers. I suppose there will not always be an optimal order of provers for an unit, so that no prover fails. In such a case knowing the maximum number of steps allows to add a steps limit to the unit which may lead to an earlier failing prover.

For example:

`-VC_PRECONDITION test.adb:87:40 => 18.5 s/23.5 s 5847 steps
 `-CVC4: 18.5 s (Failure (steps:43390))
  -altergo: 4.7 s (Valid, 5847 steps)

Adding --steps=5847 to test.adb would lead to an earlier failing CVC4 and therefore less wasted time.

from spat.

Jellix avatar Jellix commented on August 30, 2024 1

I link that to #26 for now, I don't see why finding the optimal configuration should not take the steps into account. At the very least it could output the number of steps that need to be configured for any configuration it finds.

from spat.

Jellix avatar Jellix commented on August 30, 2024

Indeed, I recently added the number of steps to the output (see xref_#26 branch), but no sorting yet.

The problem with steps is that the number is very prover specific, so you can't really just add them up to a total number or otherwise mix them, that was also the reason why I started focusing on the time values reported, they are far more reliable for comparisons even though they are very machine specific.

For example:

`-VC_LOOP_INVARIANT_PRESERV sparknacl-sign.adb:896:16 => 51.5 s/115.1 s
 `-CVC4: 51.5 s (Unknown (unknown), 505013 steps)
  -Z3: 8.2 s (Valid, 11655208 steps)
 `-CVC4: 51.1 s (Unknown (unknown), 505021 steps)
  -Z3: 4.3 s (Valid, 5928053 steps)

While Z3 is reporting about 11.6 M and 6 M steps (that's roundabout 1.4 M steps/s), CVC4 only reports 505 k each (so roughly 9 k steps/s), but the time taken can be magnitudes more than the number of steps let you believe.

If you just add them, the number of steps reported for Z3 would be 17.6 M, with the steps added from CVC4 the total number would increase to about 18.6 M, which - due to the fact that the steps/s value is vastly different - doesn't say much about the actual difference in computing time.

To solve that, I'd probably need to introduce some kind of scaling factor and report a number of "virtual steps" instead. But then again, you could just use the time value, because that's what it will be then, just recalculated as steps.

from spat.

treiher avatar treiher commented on August 30, 2024

Is there a reason for showing the steps only with --details? It would be nice to have them already with --report-mode and --summary, and allow sorting them by steps.

from spat.

Jellix avatar Jellix commented on August 30, 2024

No real reason other than that I initially focused on reported times and added the steps later in development.

from spat.

Jellix avatar Jellix commented on August 30, 2024

Issue #61 opened for the latest specific request to properly keep track of changes.

from spat.

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.