goblint / goblint/analyzer

Automatic Precision Refinement during Interactive Analysis

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

Nobody has claimed this yet.

feature
Dominant language
OCaml
Stars
252
Forks
90
Avg merge
4d 1m
Merged PRs (30d)
19

Description

Instead of having everything annotated by hand by the user, there could be something tried out automatically.
For the first version, we can try to propagate precision up the call graph (inspired by Simmo's call graph).
The idea/steps for that would go like this:

  1. We keep a hashmap that maps functions (fundec) to their configurations (precision). It's initialized according to the config flags.
  2. When we find a case where we're not sufficiently precise, namely we find a failing assert, we try to first increase the precision in the function where we found the assert and we update the hashtable and rerun the analysis.
  3. If the assert still fails then we would propagate the precision to the functions calling the one with a failing assert.

If someone has a better idea than using a hashmap, feel free to suggest.

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

No files or tests are named. Start by locating the precision configuration, fundec handling, call-graph traversal, and failing-assert analysis paths. Done means precision can be increased at a failing assertion, retried, and propagated to callers when the assertion still fails.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.