Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
209 commits
Select commit Hold shift + click to select a range
05b3577
For the PR; Created an initial file that differs;
May 7, 2025
b76013a
Added new empty files for new pntg analysis and domain
May 8, 2025
9210b70
First structure of the new pentagon domain
May 13, 2025
69f7978
Added top and bot functions to both modules
May 14, 2025
2fdf9a3
Type annotations and Inequlities module
May 14, 2025
599e38c
SUB leq
May 14, 2025
1bcdeee
leq and join
May 15, 2025
a9521a5
rewritten leq and join to adhere to Apron Environment type
May 15, 2025
3297211
Implemented meet and widen, fixed leq in SUB
May 15, 2025
5915bfb
Implementations for SUB.{top, is_top, narrow}
May 19, 2025
45eecfa
Added first naive implementation of intervals without including VarMa…
May 20, 2025
93d738b
Split domain operations and created methods for single intervals.
May 20, 2025
94dc528
Unit test setup
May 22, 2025
0aed838
Unfinished stuff; Fixed SUB functions to work with new environment stuff
May 27, 2025
1dde07c
Added first test cases
May 27, 2025
e9d3376
Fixed pentagon leq function
May 27, 2025
938a17c
Merge branch 'work' of github.com:feniup/analyzer-pentagon into work
May 27, 2025
9a8452b
removed unnecessary comment
May 27, 2025
c33e8ed
added narrow and meet
May 27, 2025
4f781fc
pentagon join implementation
May 27, 2025
50faefd
Merge branch 'work' of github.com:feniup/analyzer-pentagon into work
May 27, 2025
e474403
added test cases for sub domain
May 27, 2025
f59488b
Unit tests and some fixes
May 27, 2025
bd7996e
Added necessary dune config for pentagon unit testing
May 27, 2025
d786d42
Fixed some unit tests and the sub functionality of SUB.is_bot and SUB…
May 28, 2025
5f415cf
i broke everything on purpose
May 28, 2025
8c898b4
Removed unit tests viable for rewriting; Added implementation for dim…
May 29, 2025
d321084
Merge branch 'master' of github.com:goblint/analyzer
May 29, 2025
81227c2
Merge pull request #2 from feniup/upstream_merge
feniup May 29, 2025
76edeec
Merge branch 'master' into work
May 29, 2025
6433901
Comments
May 29, 2025
818b050
Commented out all functions to revitalize dune build
May 29, 2025
3bdd498
New type for SUB
May 29, 2025
076e6cc
adapted to lists and added environment handling
May 29, 2025
c69744e
adapted dim_add dim_remove
May 29, 2025
539242a
SUB.dim_add
May 29, 2025
d92924e
Merge branch 'work' of github.com:feniup/analyzer-pentagon into work
May 29, 2025
4c5469e
adapted dim_add dim_remove
May 29, 2025
611884f
constructed top elem
May 29, 2025
98c457c
Removed SF functions
May 29, 2025
a186f20
Merge branch 'work' of github.com:feniup/analyzer-pentagon into work
May 29, 2025
0b54ec6
sub lattice functions
May 29, 2025
f64cb64
Added VarManagement and ExpressionBounds modules
May 29, 2025
b3cd550
Merge branch 'work' of github.com:feniup/analyzer-pentagon into work
May 29, 2025
5ec6b62
ocp-indent
May 29, 2025
9becdc4
meet implemenation
May 29, 2025
3e32676
Added comments to top and bot functions
May 29, 2025
8fb4eaa
SUB.dim_add unit tests
May 29, 2025
ad87825
Added comments to SUB.dim_add
May 29, 2025
738a245
dumb versions? of dim_remove
Jun 3, 2025
34b63d8
added widen function
Jun 3, 2025
6c2a63a
D.join
Jun 3, 2025
232b942
implemented leq
Jun 3, 2025
cc42dcb
added to_string for intervals
Jun 3, 2025
d4bd15d
Added simple methods for creating single intervals (useful for testing)
Jun 3, 2025
157e1a5
Merge branch 'work' of github.com:feniup/analyzer-pentagon into work
Jun 3, 2025
4d6e384
2 tests for dim_add and dim_remove in both modules
Jun 3, 2025
6e67c68
added bot, top, is_bot, is_top
Jun 3, 2025
db9b791
Added alias for module PentagonDomain.D in tests
Jun 3, 2025
b90f471
Merge branch 'work' of github.com:feniup/analyzer-pentagon into work
Jun 3, 2025
ad58823
Removed top and bot from submodules
Jun 3, 2025
a814e42
fixed is_top
Jun 3, 2025
629e8f7
fixed is_bot
Jun 3, 2025
7fd7ab4
bot handling and test for D.leq
Jun 3, 2025
be94122
added test and to_string method
Jun 3, 2025
fda1eb2
second D.leq test
Jun 3, 2025
212c46c
Merged test cases; Created content equal for PNTG module; Used List.a…
Jun 3, 2025
915c957
Tests for meet; Equal function for PNTG (module D)
Jun 3, 2025
92f858e
forget_vars D and SUB
Jun 4, 2025
6e2b263
added forget_var of intervals
Jun 4, 2025
4ec863d
SUB.forget_vars: also filter rhs
Jun 4, 2025
1c6cede
First assin_texpr parsing
Jun 4, 2025
03afb5a
First assin_texpr parsing
Jun 4, 2025
9f6f66c
First assin_texpr parsing
Jun 4, 2025
95e32d3
assign_texpr SUBs(x):=SUBs(y)
Jun 4, 2025
2a7ac44
Added signatures to remaining functions
Jun 5, 2025
d8da0eb
Merge branch 'work' of github.com:feniup/analyzer-pentagon into work
Jun 5, 2025
b3ef49d
Changed type of numbers to have exclusive values for infinities
Jun 5, 2025
88899ff
Added monadic type for intervals
Jun 5, 2025
1e8ef01
assign_texpr BinOps Add, Sub, Mul, Div, Mod and added some helpers
Jun 5, 2025
7e3c187
Minor refactoring
Jun 5, 2025
893c799
Separated modules Intervals and INTV; Fixed tests;
Jun 5, 2025
6d055fa
ocp-indent and fixed Interval.div
Jun 5, 2025
5ac19e9
Unfinished assign_texpr
Jun 10, 2025
ec60c0d
Interval.pow finished + added comments
Jun 10, 2025
ba16be2
Separated modules into different files
Jun 10, 2025
cdab2a2
added assign_parallell
Jun 11, 2025
da4a078
simple cases of assert_constraint
Jun 11, 2025
4ab699a
added more information to intervals at assert_constraint
Jun 11, 2025
dc587e5
Interval.pow: combined two cases
Jun 11, 2025
16cb382
D.assert_constraint: Fixes in interval_helper
Jun 11, 2025
db2bc0b
assert_constraint simple cases fixed
Jun 12, 2025
8bde05d
Broken pentagon analysis
Jun 17, 2025
8af1e7d
Added running command to c file
Jun 17, 2025
f4d0c6d
ZExt ops
Jun 17, 2025
933fa30
adapted comparision operators
Jun 17, 2025
16f46a4
ZExt comparison in module D
Jun 17, 2025
31dff46
Merge branch 'work' of github.com:feniup/analyzer-pentagon into work
Jun 17, 2025
f11bdf2
equality and dis-equality with zero :)
Jun 17, 2025
42a771f
Still broken analysis but a little bit better :,)
Jun 17, 2025
e9d2b46
changed config
Jun 17, 2025
e3c6e9b
Compute bound_texpr solely with information of Boxes
Jun 17, 2025
35c90c3
pretty
Jun 17, 2025
06f24a3
Some pretty printing
Jun 17, 2025
713bf2e
pretty print debugging
Jun 18, 2025
f13cffc
boxes naming
Jun 18, 2025
2ac95d6
Some more special cases of assertions
Jun 18, 2025
f535d6b
Equalized the string representations of boxes and sub
Jun 19, 2025
480dece
Tracing for assert_constraint and assign_texpr
Jun 19, 2025
98c1f87
Tracing for assert_constraint, assign_texpr, dim_add and dim_remove
Jun 19, 2025
17a94b1
Fixed merge
Jun 19, 2025
9f3af49
Fixed tracing output for dim_remove
Jun 19, 2025
fc12e86
assert_constraint: EQMOD
Jun 19, 2025
ea0cf5f
Changed tracing for assign_texpr to show variable
Jun 19, 2025
5f0918c
Added ZExtOps where missing
Jun 19, 2025
6915e65
config with pentagon
Jun 19, 2025
0ba75c3
Simple regression test for pentagons
Jun 19, 2025
ec0c16f
Merge pull request #3 from goblint/master
feniup Jun 19, 2025
f0075c7
Merge branch 'master' into work
Jun 19, 2025
4ad530c
Merge pull request #1 from feniup/work
feniup Jun 19, 2025
1678ac4
Fix semgrep findings
Jun 19, 2025
20fd5d7
new Intv.rem, changed assert_constraint/EQMOD
Jun 20, 2025
2656089
deleted print debugging from lin2vareq
Jun 23, 2025
a7db0ce
Intv.rem sign handling
Jun 23, 2025
3a5a6f1
Merge branch 'work' of github.com:feniup/analyzer-pentagon into work
Jun 24, 2025
676facf
Pentagon regression tests with confusion
Jun 24, 2025
7600bbf
Pentagon regression tests with confusion
Jun 24, 2025
9b50181
Delete unnecessary config file
Jun 24, 2025
170d34f
Pentagon regression tests with confusion
Jun 24, 2025
8638530
assign_texpr with texpr to monomial conversion
Jun 25, 2025
73fb3b1
assign_texpr with texpr to monomial conversion
Jun 25, 2025
8cb4928
Comments for assign_texpr: x = ay + b
Jun 26, 2025
84b98f8
assign_texpr x=ay+b: SUBs(x) deletion
Jun 26, 2025
6c71339
Fixed build error: unbound t
Jun 26, 2025
de1d2e7
added updates for sub
Jun 26, 2025
7ff26f7
adapted conditionals
Jun 26, 2025
cdd0407
Fixed build error AGAIN
Jun 26, 2025
252cc43
Basic structure of new assert_constraint
Jun 26, 2025
df8434a
to_string now also replaces the variable indices in subs by their names
Jun 26, 2025
c341544
simple test
Jun 26, 2025
05d3038
to_string now also replaces the variable indices in subs by their names
Jun 26, 2025
01a6a4a
Merge branch 'work' of github.com:feniup/analyzer-pentagon into work
Jun 26, 2025
0422450
Removed old unit tests
Jun 26, 2025
d9cf43a
to_string now also replaces the variable indices in subs by their names
Jun 26, 2025
035ee07
Use deleted subs in assign_texpr
Jun 26, 2025
2ec7045
Refactored to_string
Jun 26, 2025
70fdd51
Merge branch 'work' of github.com:feniup/analyzer-pentagon into work
Jun 26, 2025
6cd707d
Renamed Sub to Subs
Jun 26, 2025
4bd9a24
Unit test for string
Jun 26, 2025
d0d5360
Separated Pentagons child-modules to different files
Jun 26, 2025
8095b9d
Minor refactoring
Jun 26, 2025
1f49021
Actually assert something in the unit test
Jun 26, 2025
7ff9c38
assign_texpr: general case
Jul 1, 2025
8adf09a
Special case for Modulo
Jul 1, 2025
239634b
Fixed modulo special case
Jul 2, 2025
783562e
Renamed some local variables to better match our thinking
Jul 2, 2025
3c8f49e
added first structure of assert_constraint
Jul 2, 2025
469bd22
Fixed build error at assert_constraint
Jul 3, 2025
73dfed9
Work in progress
Jul 3, 2025
d48888f
bug fixes, commenting in assign + assert
Jul 7, 2025
b786cbd
Work in progress
Jul 8, 2025
a5c8002
very difficult bug fix
Jul 8, 2025
20795ca
Added regression test
Jul 9, 2025
959161d
Work in progress
Jul 9, 2025
059c4d6
work in progress
Jul 10, 2025
06d83f4
Finished clever implementation mentioned by Miné
Jul 10, 2025
36c3d80
Merge pull request #4 from feniup/work
feniup Jul 10, 2025
e8dd393
Merge remote-tracking branch 'upstream/master'
Jul 10, 2025
1cfa46f
Merge branch 'master' of github.com:feniup/analyzer-pentagon
Jul 10, 2025
8233fea
Added regression test
Jul 10, 2025
d7451bb
First draft of the invariant function
Jul 10, 2025
c49c25d
Merge branch 'work' of github.com:feniup/analyzer-pentagon into work
Jul 10, 2025
c6ab1d9
Merge branch 'master' into work
Jul 10, 2025
01922b4
simple creduce script
Jul 16, 2025
af0eb38
Moved regression tests; Added TODOs; Added svcomp config for pentagon…
Jul 16, 2025
c1b761e
ocp-indent changes
Jul 16, 2025
14775a7
Merge pull request #5 from feniup/work
feniup Jul 16, 2025
26237d0
Deriving hash and eq function; Verify in config set to true; removed …
Jul 16, 2025
3003524
Add a todo to bound_texpr
Jul 16, 2025
d98722d
Printing texpr and intv for bound_texpr
Jul 16, 2025
3e0821a
work in progress
Jul 17, 2025
8e8bed2
added consistency check between linearized and non-linearized interva…
Jul 17, 2025
538c94a
adapted narrowing for intb
Jul 17, 2025
51e1f83
adapted boses
Jul 17, 2025
040f5da
Fixed conversion from scalar to zext; Fixed narrowing for Pntg; Added…
Jul 17, 2025
1a8d3ce
Add gcc to creduce script
Jul 22, 2025
62fc115
Remove narrow for Subs; Timing.wrap for dim_add and dim_remove;
Jul 23, 2025
21a3ce6
Merge pull request #6 from feniup/work
feniup Jul 23, 2025
29d32e8
Merge remote-tracking branch 'origin/master' into work
Jul 23, 2025
973e7a9
Added sub usage in bound_texpr and assign_texpr
Jul 23, 2025
f43c458
Adapted regression test because of added functionality
Jul 23, 2025
25e3913
Merge pull request #7 from feniup/work
feniup Jul 23, 2025
9e59acc
Merge remote-tracking branch 'upstream/master'
Jul 23, 2025
f73bce5
Fixed pentagon memory issue
Jul 25, 2025
9c0fd4a
Reverted printing in Lin2Var assert_constraint
Jul 25, 2025
e09d123
Remove double semicolons
Jul 25, 2025
4006c89
Renamed eval_monoms_to_intv_infty_list
Jul 26, 2025
fa828c4
sign bug fix
Jul 26, 2025
078208f
PR suggested changes
Jul 29, 2025
6378161
Removed pentagon from unit test dune file
Jul 29, 2025
3c8a622
Reverted removing include_dir unqualified
Jul 29, 2025
22ff275
Merge upstream/master to origin/master
Jul 29, 2025
dced0b2
Add Pentagon Modules to goblint_lib.ml to satisfy docs/api-build gith…
Jul 29, 2025
b4670aa
Fixed failure reason of benchmarks
Jul 29, 2025
243ade6
running commands in regression tests
Jul 29, 2025
6277a22
Removed unnecessary todos.
Jul 30, 2025
4112c13
Merge branch 'master' of github.com:feniup/analyzer-pentagon
Jul 30, 2025
92fc5dd
Merge remote-tracking branch 'upstream/master'
Jul 30, 2025
cdf58e0
Moved pentagon regression tests; Added wrong_verdicts.md file for fur…
Jul 30, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
114 changes: 114 additions & 0 deletions conf/pentagon-svcomp25.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
{
"ana": {
"sv-comp": {
"enabled": true,
"functions": true
},
"int": {
"def_exc": true,
"enums": false,
"interval": true
},
"float": {
"interval": true,
"evaluate_math_functions": true
},
"activated": [
"base",
"threadid",
"threadflag",
"threadreturn",
"mallocWrapper",
"mutexEvents",
"mutex",
"access",
"race",
"escape",
"expRelation",
"mhp",
"assert",
"var_eq",
"symb_locks",
"region",
"thread",
"threadJoins",
"abortUnless",
"pentagon"
],
"path_sens": [
"mutex",
"malloc_null",
"uninit",
"expsplit",
"activeSetjmp",
"memLeak",
"threadflag"
],
"context": {
"widen": false
},
"base": {
"arrays": {
"domain": "partitioned"
}
},
"race": {
"free": false,
"call": false
},
"autotune": {
"enabled": true,
"activated": [
"reduceAnalyses",
"mallocWrappers",
"noRecursiveIntervals",
"enums",
"congruence",
"octagon",
"wideningThresholds",
"loopUnrollHeuristic",
"memsafetySpecification",
"noOverflows",
"termination",
"tmpSpecialAnalysis"
]
}
},
"exp": {
"region-offsets": true
},
"solver": "td3",
"sem": {
"unknown_function": {
"spawn": false
},
"int": {
"signed_overflow": "assume_none"
},
"null-pointer": {
"dereference": "assume_none"
}
},
"witness": {
"yaml": {
"enabled": true,
"format-version": "2.0",
"entry-types": [
"invariant_set"
],
"invariant-types": [
"loop_invariant"
]
},
"invariant": {
"loop-head": true,
"after-lock": false,
"other": false,
"accessed": false,
"exact": true
}
},
"pre": {
"enabled": false
}
}
19 changes: 19 additions & 0 deletions conf/pentagon.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"ana": {
"activated": [
"assert",
"pentagon"
]
},
"result": "none",
"solver": "td3",
"solvers": {
"td3": {
"term": true,
"space": false,
"space_cache": true,
"space_restore": true
}
},
"verify": true
}
32 changes: 32 additions & 0 deletions src/analyses/apron/pentagonAnalysis.apron.ml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
(** Analysis using the pentagon domain (pntg)
@see <https://doi.org/10.1016/j.scico.2009.04.004>
"Pentagons: A weakly relational abstract domain for the efficient validation of array accesses"
-- Francesco Logozzo, Manuel Fähndrich (2010) *)

open Analyses
include RelationAnalysis

let spec_module: (module MCPSpec) Lazy.t =
lazy (
let module AD = PentagonDomain.D2
in
let module Priv = (val RelationPriv.get_priv ()) in
let module Spec =
struct
include SpecFunctor (Priv) (AD) (RelationPrecCompareUtil.DummyUtil)
let name () = "pentagon"
end
in
(module Spec)
)

let get_spec (): (module MCPSpec) =
Lazy.force spec_module

let after_config () =
let module Spec = (val get_spec ()) in
MCP.register_analysis (module Spec : MCPSpec);
GobConfig.set_string "ana.path_sens[+]" (Spec.name ())

let _ =
AfterConfig.register after_config
3 changes: 3 additions & 0 deletions src/analyses/apron/pentagonAnalysis.no-apron.ml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
(* This analysis is empty on purpose. It serves only as an alternative dependency
in cases where the actual domain can't be used because of a missing library.
It was added because we don't want to fully depend on Apron. *)
Loading
Loading