Giter Club home page Giter Club logo

guido's Introduction

Guido

Configuration prediction for formal program verifiers.

Publications

GUIDO: Automated Guidance for the Configuration of Deductive Program
Alexander Knüppel, Thomas Thüm, and Ina Schaefer Conference on Formal Methods in Software Engineering (FormaliSE@ICSE21). IEEE, 2021. [pdf]

guido's People

Contributors

alexanderknueppel avatar gamperle avatar rukichen avatar

Stargazers

Roman avatar  avatar

Watchers

 avatar

guido's Issues

Create plugin for tests

Right now, many classes have ad-hoc tests in their main-methods. Create new plugin and appropriate test cases.

Dynamic VerificationSystems

The verification-systems are currently included statically in to the project. This shall be dynamized by allowing a definition of all relevant classes/options in an "ini" file, so the solver can be loaded more independently.

Evaluating hypotheses

I started to evaluate hypotheses with Java only (de.tubs.isf.gudio.core.statistics.tests) but haven't finished it so far

Quadratic programming/non linear optimization

The core hypotheses and cost network have to be addopted to support at least quadratic optimization.
This means the not only two options shall be compared with each other, rather sets of options. This means the tools and the guido.core need to be support multiple options and their interactional terms.

How explore new hypotheses?

Is it possible to use the date to explore new hypotheses for upcoming tests?

Implement a new package with the name de.tubs.isf.gudio.core.statistics.explore. Implement techniques to "guess" good hypotheses. Evaluate the results with 10x cross validation.

Create evaluation plugin

This package should provide numerous programs to gather and visualize evaluation statistics.

  • Which contuniation mechanism performs best?
  • Comparsion with default and random
  • ...?

Please extend this list.

Method calls are not resolved in SourceCodeAnalyzer

The very important characteristic

METHOD_CALLS_SPEC_TRUE (i.e., whether called methods have a contract)

is not resolved due to problems (runtime errors/method not found stuff) with javaparser. Either we need to fix these problems or we have to come up with a resolution on our own...

How does KeY handle this stuff?

Collect additional statistics from data basis

For instance, the following statistics might be interesting:

  • Get the best configuration for a specific contract, language construct etc.
  • Get the worst configuration for a specific contract, langauge construct, etc.
  • Get the ratio of to what extent a specific option was succesfull (i.e., when optionA was selected, successrate was 100%)
  • Get the best overall configuration for provability (the one that closed the most)
  • Combine the best overall configuration with the successrate of an option
  • Give a sorted list of configuration with infos such as how many proofs were closed with this one and how often was the configuration applied. Maybe also which contracts were closed and which were not.
  • Give a sorted list of subjects (proofs) with infos, such as which configurations were the fastest...

Create tests

Create test resources and tests as can be seen in numerous main methods

Create main prover program

Create main guido program in de.tubs.isf.guido.prover.

Things to consider:

  • How to apply a contuniation mechanism
  • How to solve the CSP elegenatly
  • How to configure guido? (Timeout/continuitation mechanism)
  • what about the rule-based system?

Input should be a source file and the evelatuated hypotheses

Refactor Project

The whole project needs to be refactored, so it becomes more flexible and independent from KeY.

Move stuff from the verification system

I think it is better to move the generic stuff from the verification system plugin to the core plugin (i.e., the whole job thing):

image

The new package could be de.tubs.guido.core.system. Moreover, this generic stuff needs some rework.

  • BatchXMLHelper is too KeY specific. There also exists the same file with the name KeyBatchXMLHelper, which extends the batchXMLHelper. Maybe it is better to create an IBatchXMLHelper with the getJobs-methods and let be implemented individually by each system (as done by KeyBatchXMLHelper)
  • The same goes for the Job-class, which is too KeY specific. Create the interface IJob, such that KeyJob implements IJob

Generalize option-interfaces

Move the respective generic structures to the core package:

image

Each system then needs to implement the structures as done for KeY in the verification-system plugin.

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.