Goose  Diff

Differences From Artifact [58245c62ec]:

  • File bs/verify/call.cpp — part of check-in [b3ff9af3c2] at 2021-10-09 15:52:33 on branch trunk —
    • Fixed a couple of verification bugs and added related tests
    • Added some tests for currently broken verification scenarios involving template functions
    (user: zlodo size: 3472)

To Artifact [8fa0d4f058]:

  • File bs/verify/call.cpp — part of check-in [459f60ca3a] at 2021-10-09 20:12:22 on branch trunk — Predicates: add the possibility to store named sets of predicates in types, to be retrieved from a dictionary at verification time (user: zlodo size: 3490)

19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

        auto retExpr = BuildZ3ConstantFromType( b, ft.returnType(), format( "r{}", b.newUniqueId() ) );

        // Create a temporary builder to construct the z3 expressions out of the
        // function's pre-conditions and postconditions, configured
        // to perform the necessary replacements for arguments and for the
        // return value placeholder.
        Builder cb( b.context(), *b.solver(), b.remapper() );
        cb.setAssertionHandler( b.GetAssertionHandler() );

        // Inject the arguments in the context.
        // They will be picked up by getVars instructions when refered to
        // by the verification conditions.
        uint32_t index = 0;

        ForEachInVectorTerm( instr.args(), [&]( auto&& t )







|
|







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

        auto retExpr = BuildZ3ConstantFromType( b, ft.returnType(), format( "r{}", b.newUniqueId() ) );

        // Create a temporary builder to construct the z3 expressions out of the
        // function's pre-conditions and postconditions, configured
        // to perform the necessary replacements for arguments and for the
        // return value placeholder.
        Builder cb( b.context(), *b.solver(), b.getPredsDict(), b.remapper() );
        cb.setAssertionHandler( b.getAssertionHandler() );

        // Inject the arguments in the context.
        // They will be picked up by getVars instructions when refered to
        // by the verification conditions.
        uint32_t index = 0;

        ForEachInVectorTerm( instr.args(), [&]( auto&& t )