Giter Site home page Giter Site logo

termination-plugin's People

Contributors

fstreun avatar mschwerhoff avatar viper-admin avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

termination-plugin's Issues

Termination Proof

Pull request ๐Ÿ”€ created by bitbucket user streun on 2019-05-08 10:10
Last updated on 2019-05-08 10:12
Original Bitbucket pull request id: 2

Participants:

Source: 2621abb on branch streun/termination-plugin/default
Destination: 382a3f1 on branch master

State: DECLINED

  • Error message changed for methods. Fixed method call graph

Termination Proof

Pull request ๐Ÿ”€ created by bitbucket user streun on 2019-05-08 10:17
Last updated on 2019-05-08 15:09
Original Bitbucket pull request id: 3

Participants:

  • @mschwerhoff (reviewer)
  • bitbucket user streun โœ”๏ธ

Source: 0724200 on branch streun/termination-plugin/default
Destination: 382a3f1 on branch master
Marge commit: 0724200

State: MERGED

  • Error message changed for methods. Fixed method call graph

Termination Proof Support

Pull request ๐Ÿ”€ created by bitbucket user streun on 2019-03-15 19:19
Last updated on 2019-04-15 11:10
Original Bitbucket pull request id: 1

Participants:

Source: 382a3f1 on branch streun/termination-plugin/default
Destination: 03b44fd on branch master
Marge commit: 382a3f1

State: MERGED

Currently Supported Termination Proofs are:

  • Functions
  • Methods

โ€Œ

Open TODOS:

  • more tests for methods

Positions are sometimes not properly set

Created by @aterga on 2019-05-26 19:04
Last updated on 2019-06-21 20:40

While integrating the plugin into Viper IDE, I found a case in which the error position information is not properly set by the plugin. (Note that Iโ€™ve used the tools from this recent PR.)

Errors that do not have to do with termination are positioned normally. However, the Viper file (termination/functions/decreases_path/path/loop.vpr) results in Assertion decreasing(x, old(x)) might not hold. (<no position>).

The Viper file:

import <decreases/int_decreases.sil>

function fun1(x: Int): Int
requires x >= 0
ensures decreases(x)
{
  x == 0 ? 0 : fun2(x)
}

function fun2(x: Int): Int
requires x >= 0
ensures decreases(x)
{
  x == 0 ? fun1(x) : fun2(x-1)
}

viper_client:

./client.py -p 59972 -f /private/tmp/plugin-aware-reporter/termination-plugin/src/test/resources/termination/functions/decreases_path/path/loop.vpr -j bulk -x " --disableCaching  --z3Exe=/usr/local/Viper/z3/bin/z3 --plugin viper.plugin.termination.DecreasesFunction "

Viper IDE config:

{
    "viperSettings.preferences": {
        "v": "674a514867b1",
        "autoSave": true,
        "logLevel": 5
    },
    "viperSettings.verificationBackends": [
        {
            "v": "674a514867b1",
            "name": "silicon with termination checks",
            "type": "silicon",
            "paths": [],
            "engine": "ViperServer",
            "timeout": 100000,
            "stages": [
                {
                    "name": "verify",
                    "isVerification": true,
                    "mainMethod": "viper.silicon.SiliconRunner",
                    "customArguments": "--z3Exe $z3Exe$ $disableCaching$ --plugin viper.plugin.termination.DecreasesFunction $fileToVerify$"
                }
            ],
            "stoppingTimeout": 5000
        }
    ], 
    "viperSettings.viperServerSettings": {
        "v": "674a514867b1",
        "disableCaching": true
    },
    "viperSettings.javaSettings": {
        "v": "674a514867b1",
        "customArguments": "-Xmx2048m -Xss16m -cp \"/private/tmp/plugin-aware-reporter/viperserver/target/scala-2.12/viper.jar:/tmp/plugin-aware-reporter/termination-plugin/target/scala-2.12/termination.jar\" -server $mainMethod$"
    }
}

Output (search for <no position>):

{"msg_body":{"details":{"entity":{"name":"fun2","position":{"end":"19:1","file":"/private/tmp/plugin-aware-reporter/termination-plugin/src/test/resources/termination/functions/decreases_path/path/loop.vpr","start":"13:1"},"type":"function"},"time":11},"kind":"for_entity","status":"success","verifier":"silicon"},"msg_type":"verification_result"}
{"msg_body":{"details":{"entity":{"name":"fun1","position":{"end":"11:2","file":"/private/tmp/plugin-aware-reporter/termination-plugin/src/test/resources/termination/functions/decreases_path/path/loop.vpr","start":"6:1"},"type":"function"},"time":5},"kind":"for_entity","status":"success","verifier":"silicon"},"msg_type":"verification_result"}
{"msg_body":{"details":{"entity":{"name":"fun2_posts_termination_proof","position":"<no position>","type":"method"},"time":4},"kind":"for_entity","status":"success","verifier":"silicon"},"msg_type":"verification_result"}
{"msg_body":{"details":{"entity":{"name":"fun1_posts_termination_proof","position":"<no position>","type":"method"},"time":2},"kind":"for_entity","status":"success","verifier":"silicon"},"msg_type":"verification_result"}
{"msg_body":{"details":{"entity":{"name":"fun1_termination_proof","position":"<no position>","type":"method"},"result":{"errors":[{"cached":false,"position":"<no position>","tag":"assert.failed:assertion.false","text":"Assert might fail. Assertion decreasing(x, old(x)) might not hold. (<no position>)"}],"type":"error"},"time":11},"kind":"for_entity","status":"failure","verifier":"silicon"},"msg_type":"verification_result"}
{"msg_body":{"details":{"entity":{"name":"fun2_termination_proof","position":"<no position>","type":"method"},"result":{"errors":[{"cached":false,"position":"<no position>","tag":"assert.failed:assertion.false","text":"Assert might fail. Assertion decreasing(x, old(x)) might not hold. (<no position>)"}],"type":"error"},"time":8},"kind":"for_entity","status":"failure","verifier":"silicon"},"msg_type":"verification_result"}
{"msg_body":{"details":{"result":{"errors":[{"cached":false,"position":"<no position>","tag":"assert.failed:assertion.false","text":"Assert might fail. Assertion decreasing(x, old(x)) might not hold. (<no position>)"},{"cached":false,"position":"<no position>","tag":"assert.failed:assertion.false","text":"Assert might fail. Assertion decreasing(x, old(x)) might not hold. (<no position>)"}],"type":"error"},"time":475},"kind":"overall","status":"failure","verifier":"silicon"},"msg_type":"verification_result"}

termination plugin

Pull request ๐Ÿ”€ created by bitbucket user streun on 2019-05-14 19:50
Last updated on 2019-05-15 18:23
Original Bitbucket pull request id: 4

Participants:

  • @mschwerhoff (reviewer)
  • bitbucket user streun โœ”๏ธ

Source: e8eff4d on branch streun/termination-plugin/default
Destination: 0724200 on branch master
Marge commit: e8eff4d

State: MERGED

merged silver changes

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.