viperproject / viperproject/silver

make trigger-generation code less sensitive to arithmetic

Open
#67 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement minor
Dominant language
Scala
Stars
100
Forks
53
Avg merge
8h 10m
Merged PRs (30d)
2

Description

Created by @alexanderjsummers on 2014-11-10 14:32
Last updated on 2018-06-09 12:24

In some cases, trigger generation is sensitive to the way in which arithmetic is expressed, since arithmetic operations are ruled out in triggers. We could try to automatically rewrite such quantifiers, instead of failing to find triggers for them. For example:

//invariant forall j:Int :: 0<=j && j < n && (x+j) in [0..length(a)) && (y+j) in [0..length(a)) ==> loc(a,x+j).val == loc(a,y+j).val // no triggers involving loc are available
// REWRITTEN USING: j==k-x, k==j+x
invariant forall k:Int :: x<=k && k < x+n ==> loc(a,k).val == loc(a,y+k-x).val // triggers on loc(a,k)

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue does not name an implementation file, test, or entry point. Start by locating the trigger-generation code and existing tests for arithmetic-sensitive quantifiers; done means equivalent quantifiers are automatically rewritten so usable triggers are found instead of generation failing.

Written by the indexing model from the issue text.

Assessment

Tech stack
scala
Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.