Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
245 commits
Select commit Hold shift + click to select a range
52a69dc
basic functionality of randomized invariants search
Apr 13, 2017
e0c883d
accurate processing of the coefficients and constants
grigoryfedyukovich Apr 16, 2017
d008e94
benchmarks (mostly adapted from ICE)
grigoryfedyukovich Apr 17, 2017
e3c41df
more precise settings to aggressivepruning, frequencies, and priorities
grigoryfedyukovich Apr 18, 2017
9e79357
enlarging the range of the coefficients and constants
grigoryfedyukovich Apr 20, 2017
c03e0be
distributivity rewriter of the code
grigoryfedyukovich Apr 21, 2017
5baa6f9
limited support for nonlinear multiplication
grigoryfedyukovich Apr 25, 2017
fbac1b0
some benchmarks from loop-acceleration and loop-new
samkaufman Apr 26, 2017
8046399
MOD, DIV are parseable, but not solvable
grigoryfedyukovich Apr 26, 2017
f90b0af
added
samkaufman Apr 26, 2017
bd5c4cf
two more benchmarks from loop-new
samkaufman Apr 27, 2017
ed281e1
script to benchmark ICE/MCMC on win32
samkaufman Apr 28, 2017
d32dab1
added --resume and --verbose to benchmark-others.py
samkaufman Apr 30, 2017
51773c2
refactored the priorities assignment
grigoryfedyukovich May 1, 2017
b5006f4
added more benchmarks over non-linear arithmetic
grigoryfedyukovich May 3, 2017
731b6e2
fixed the learning of several invariants in the row
grigoryfedyukovich May 13, 2017
4623ba0
propagating equalities in query implications
grigoryfedyukovich May 19, 2017
ffef311
merged safe benchmarks from sam-contribs to the main bench; removed u…
grigoryfedyukovich May 20, 2017
704700b
fixed statistics mining for multiple invariants
grigoryfedyukovich May 21, 2017
be6b108
fixed non-terminating ite-handling when the guard has negation
grigoryfedyukovich May 21, 2017
1f758ad
added more benchmarks
grigoryfedyukovich May 22, 2017
a629b5a
z3 benchmarking, mcmcify, other benchmark opts
samkaufman May 3, 2017
1b251e6
support for constants on the rhs of div / mod
grigoryfedyukovich May 25, 2017
a7d08d8
optimizing the prioritization
grigoryfedyukovich May 27, 2017
3d2368b
added more hard benchmarks
grigoryfedyukovich Jun 4, 2017
f96ab62
fixed lemma learning for multiple invariants / multiple queries
grigoryfedyukovich Jul 29, 2017
c520600
enhancing invariant grammars based on learned lemmas
grigoryfedyukovich Aug 1, 2017
54bfc4f
small refactoring
grigoryfedyukovich Aug 1, 2017
9fd1ec2
naive bounded explorer; and benchmarks for which it has to find a cou…
grigoryfedyukovich Aug 4, 2017
6c6480b
reconsidered preprocessing: no `shrink` option, and formula simplific…
grigoryfedyukovich Aug 6, 2017
f19ab3a
reconsidered epsilon frequencies: now probabilistic
grigoryfedyukovich Aug 9, 2017
bb87c20
bigger space for the probabilities & priorities tuning; and a user-fr…
grigoryfedyukovich Aug 11, 2017
d317c25
engine to generate an inductive validity core
grigoryfedyukovich Aug 14, 2017
b19a8bd
refreshed the description online
grigoryfedyukovich Aug 14, 2017
f019198
the order and the duplicates in srcVars and dstVars is taken into acc…
grigoryfedyukovich Aug 30, 2017
04e0fb9
k-inductive reasoning for programs with one loop
grigoryfedyukovich Sep 1, 2017
020b8a8
combined randomized sampling with k-induction
grigoryfedyukovich Sep 7, 2017
ac5faba
various tricks at the preprocessing,
grigoryfedyukovich Sep 10, 2017
642d4d7
Corrected build commands in README
samkaufman Sep 10, 2017
540ef17
added benchmarks
grigoryfedyukovich Sep 16, 2017
5041af3
checking invariance of itp-based bounded proofs
grigoryfedyukovich Sep 21, 2017
a6e7676
fixed stabilization of zero-frequencies (i.e., when epsilon disabled)
grigoryfedyukovich Sep 29, 2017
8e84207
reconsidered the process of extracting subexpressions from code
grigoryfedyukovich Oct 8, 2017
6024069
fixed stabilization of epsilon-frequencies when freqs is disabled
grigoryfedyukovich Oct 18, 2017
ad16bac
revised algorithm of FreqHorn:
grigoryfedyukovich Oct 23, 2017
181bb5a
reclassified benchmarks
grigoryfedyukovich Oct 24, 2017
074f1a3
various tiny fixes and optimizations
grigoryfedyukovich Oct 27, 2017
0e6087f
made the sampler design more modular
grigoryfedyukovich Nov 3, 2017
2b606d7
updated links to the paper and slides
grigoryfedyukovich Nov 10, 2017
0ffa615
fixed large-number handling in Expr
grigoryfedyukovich Nov 15, 2017
a2f027a
some tiny optimizations and code cleaning
grigoryfedyukovich Nov 27, 2017
208e8e2
lightweight CHC-preprocessing and some useful operations with CHCs
grigoryfedyukovich Dec 28, 2017
9264c7a
replacing variables in Exprs in batches
grigoryfedyukovich Dec 9, 2017
31f69e8
added a link to most recent paper
grigoryfedyukovich Jan 10, 2018
b679f33
few new benchmarks
grigoryfedyukovich Feb 16, 2018
5366c61
Rebuilt Windows benchmarks
samkaufman Feb 19, 2018
9645f77
Consolidated bench ports from previous experiments
samkaufman Feb 20, 2018
bef9c42
New MCMC benchmarks
samkaufman Feb 20, 2018
92370f7
Moved to 3 trials with 1min timeout
samkaufman Feb 22, 2018
aa58b7a
Some new ICE benchmarks
samkaufman Feb 22, 2018
9764d3a
Convenience script for comparing benchmark presence between algos.
samkaufman Feb 22, 2018
0cdd530
Resolved renamed benchmarks for MCMC
samkaufman Feb 22, 2018
18230fa
dillig10 maps more closely to .c
samkaufman Feb 22, 2018
41227e6
dillig15 fix
samkaufman Feb 22, 2018
3f32142
A bunch more ICE/Boogie benchmarks
samkaufman Feb 22, 2018
ade79a9
bensistency.py: ASCII mode
samkaufman Feb 22, 2018
d2191ed
bouncy_three_counters_merged fix
samkaufman Feb 22, 2018
58e1b64
New Boogie/ICE benchmarks
samkaufman Feb 23, 2018
144b663
More ICE/Boogie benchmarks
samkaufman Feb 23, 2018
b83da84
Added Windows AMI override
samkaufman Feb 23, 2018
469db67
New analyses (minus charting)
samkaufman Feb 27, 2018
eb920f6
spacer compilation fix
samkaufman Feb 27, 2018
3770911
misc. fixes
samkaufman Feb 28, 2018
a3906ed
Fixed & initial analysis notebook
samkaufman Mar 1, 2018
4361c98
more analyses
samkaufman Mar 1, 2018
89785ac
Merge pull request #2 from grigoryfedyukovich/rnd-new-benchmarking
samkaufman Mar 2, 2018
244dbed
TACAS slides
grigoryfedyukovich Apr 18, 2018
d558d02
new experimental algorithm for synthesis of multiple invariants
grigoryfedyukovich May 4, 2018
e98cd44
MultiFreqHorn: added bootstrapping, fixed few bugs
grigoryfedyukovich May 7, 2018
00901fe
MultiFreqHorn: enlarged set of seeds by QE-based propagation
grigoryfedyukovich May 9, 2018
84ef5da
MultiFreqHorn: weakening of propagated candidates
grigoryfedyukovich May 9, 2018
164164e
MultiFreqHorn: fixed lemma learning
grigoryfedyukovich May 10, 2018
3fd39d6
small extension of the grammar
grigoryfedyukovich May 10, 2018
58e01c5
behavior candidates changes
kumarmadhukar May 10, 2018
ea0079a
call behavior candidate changes
kumarmadhukar May 10, 2018
1b78ae2
C benchmarks for behavior candidates
kumarmadhukar May 10, 2018
dba4133
armadillo in readme
kumarmadhukar May 10, 2018
e3b446c
minor changes
sumanthsprabhu May 10, 2018
8e8d875
Make armaApproxEqual const
sumanthsprabhu May 10, 2018
cf287ac
Merge pull request #3 from sumanthsprabhu/rnd
grigoryfedyukovich May 10, 2018
07cda6c
MultiFreqHorn: normalizing the candidates before learning
grigoryfedyukovich May 11, 2018
384823d
Merge pull request #1 from grigoryfedyukovich/rnd
sumanthsprabhu May 11, 2018
9f8a1b9
MultiFreqHorn: normalizing the candidates before learning
grigoryfedyukovich May 11, 2018
5932c8f
Merge pull request #2 from grigoryfedyukovich/rnd
sumanthsprabhu May 14, 2018
f9c9e43
A script to generate behaviors by running the program
sumanthsprabhu May 14, 2018
395a4a1
Benchmark for behavioral candidates
sumanthsprabhu May 14, 2018
68470c8
autmatic generation of models for multiple loops using SMT and seedin…
sumanthsprabhu May 14, 2018
9dfd50f
Merge branch 'rnd' of https://github.com/sumanthsprabhu/aeval into rnd
sumanthsprabhu May 14, 2018
9fdb1c0
MultiFreqHorn: new benchmarks
grigoryfedyukovich May 15, 2018
859b809
fix semicolons
sumanthsprabhu May 15, 2018
d5eebe7
fix copying error
sumanthsprabhu May 15, 2018
cad4138
fix a minor copy bug
sumanthsprabhu May 15, 2018
8f0e709
fixed tautological warning
sumanthsprabhu May 15, 2018
ef47554
more careful handling of lin.combinations
grigoryfedyukovich May 15, 2018
e7dc478
Merge pull request #3 from grigoryfedyukovich/rnd
sumanthsprabhu May 16, 2018
efaf249
Evaluate constants of abstracted variable
sumanthsprabhu May 16, 2018
540deb6
Merge pull request #5 from sumanthsprabhu/rnd
grigoryfedyukovich May 17, 2018
398f6b5
MultiFreqHorn: Houdini-style weakening and batching at the bootstrapping
grigoryfedyukovich May 17, 2018
80fdccc
Merge pull request #4 from grigoryfedyukovich/rnd
sumanthsprabhu May 17, 2018
68bd6b7
fix generalisation of constants
sumanthsprabhu May 17, 2018
fd4dc15
more careful handling of NIA-terms
grigoryfedyukovich May 18, 2018
10ecb9a
Merge pull request #6 from sumanthsprabhu/rnd
grigoryfedyukovich May 18, 2018
2e86d9c
MultiFreqHorn: solved more challenging benchs
grigoryfedyukovich May 19, 2018
e01d98d
MultiFreqHorn: flexible generation of behavioral candidates
grigoryfedyukovich May 20, 2018
35662c8
MultiFreqHorn: optimized bootstrapping slightly
grigoryfedyukovich May 21, 2018
df571e4
enforced current AE-VAL's limitation
grigoryfedyukovich May 24, 2018
b60b53c
MultiFreqHorn: several tiny optimizations
grigoryfedyukovich May 27, 2018
935ba64
MultiFreqHorn: added new benchmarks
grigoryfedyukovich May 28, 2018
c6b8848
more careful handling of Z3 bugs
grigoryfedyukovich May 31, 2018
40d22ec
updated the help message; made --v3 default
grigoryfedyukovich Jun 1, 2018
a58a175
identifying and solving non-recursive systems (using BMC)
grigoryfedyukovich Jun 14, 2018
3d9f00a
support for pure smtlib2 inputs
grigoryfedyukovich Jun 17, 2018
c5f7fd5
basic support for mutual recursion
grigoryfedyukovich Jul 9, 2018
76cbb03
supported some basic reasoning about arrays
grigoryfedyukovich Aug 15, 2018
b6eb195
added more benchs with arrays
grigoryfedyukovich Aug 17, 2018
9b80f86
array invariants: a trick to sample inductive candidates
grigoryfedyukovich Aug 31, 2018
c3fdbe9
support for some systems with multiple array accesses per iteration
grigoryfedyukovich Sep 10, 2018
2077319
support for disjunctive array invariants
grigoryfedyukovich Sep 12, 2018
a4f1224
more accurate seed mining and candidate manipulation for array invari…
grigoryfedyukovich Sep 14, 2018
afe82f9
bootstrapping for array candidates
grigoryfedyukovich Sep 20, 2018
390fe6c
generalization of learned lemmas over several arrays
grigoryfedyukovich Sep 21, 2018
d5ce55e
mining array seeds deeper
grigoryfedyukovich Sep 26, 2018
bb16e54
extended the generalization method for array candidates
grigoryfedyukovich Oct 10, 2018
b3e305f
supported invariants over NIA+Arrays
grigoryfedyukovich Oct 10, 2018
b2f4568
basic support for multiple Array invariants
grigoryfedyukovich Nov 3, 2018
6c51777
more enhanced support for multiple Array invariants
grigoryfedyukovich Nov 6, 2018
44f9b76
reconsidered template generation for Arrays
grigoryfedyukovich Nov 8, 2018
1bad65f
optimized candidate propagation for Arrays
grigoryfedyukovich Nov 14, 2018
db4e948
added new benchmarks over Arrays
grigoryfedyukovich Nov 14, 2018
716019b
a prototype of lazy unroller and verifier
grigoryfedyukovich Nov 30, 2018
61323d1
handling of local variables fixed; more examples added
grigoryfedyukovich Dec 13, 2018
ba1516b
more careful preprocessing
grigoryfedyukovich Apr 14, 2019
4dce9dd
guessing and bootstrapping
grigoryfedyukovich Jul 25, 2019
7e474ac
Houdini and candidate propagation
grigoryfedyukovich Aug 1, 2019
e23db22
an option for counterexamples; help message
grigoryfedyukovich Sep 3, 2019
2e0153c
fixed the parsing bug
grigoryfedyukovich Sep 7, 2019
1a50bfb
printing invariants
grigoryfedyukovich Dec 27, 2019
f9b0a13
backward propagation and multi-abduction
grigoryfedyukovich Apr 15, 2020
342e43e
revisited forward/backward alternation; improved decomposition
grigoryfedyukovich May 5, 2020
daae6ce
better fairness implementation for the decomposition
grigoryfedyukovich May 13, 2020
c390929
Changed CMakeLists.txt to the contents at https://github.com/grigoryf…
vnkommu Jun 11, 2020
8428376
improved the simplification passes
grigoryfedyukovich Jun 16, 2020
bc08a00
arbitrary-precision arithmetic simplifications
grigoryfedyukovich Jun 25, 2020
3279d35
extended the input language; improved the preprocessing and handling …
grigoryfedyukovich Jul 1, 2020
4391345
added/moved some benchmarks
grigoryfedyukovich Jul 2, 2020
43d7273
using QE for quantifier-free array invariants
grigoryfedyukovich Jul 7, 2020
aca656f
improved preprocessing, propagation, and abduction
grigoryfedyukovich Jul 20, 2020
b840567
more precise select/store handling
grigoryfedyukovich Jul 30, 2020
f12bc8f
repaired the counterexample generation; added benchs
grigoryfedyukovich Aug 6, 2020
600ef24
Changes related to maximal specification synthesis PLDI'21 paper (#19)
sumanthsprabhu Jun 7, 2021
0cd94f7
PLDI21 benchmarks
Jun 8, 2021
0384d46
change binary name; make maximal default; add an option to specify sy…
Jun 15, 2021
e61ada8
polished the command-line interface a bit; formatted the code
grigoryfedyukovich Jun 16, 2021
c956685
updated the Z3 version
grigoryfedyukovich Jun 24, 2021
fbb296d
fixed MAX variable namings/types
grigoryfedyukovich Aug 1, 2021
e1c0c03
SMT Parse switch to Nonliner [partial solution]
izlatkin May 16, 2022
cee0d04
Nonliner parse update + simplification + rid from rnrlinearVX solution
izlatkin May 20, 2022
f760b7b
TGTree.hpp added to explore nonlines paths
izlatkin May 21, 2022
a950790
TGTree.hpp updated to maintain duplicates chcs rules + pertial-integr…
izlatkin Jun 3, 2022
b6af2ad
TGTree.hpp updated to store and track chc_index. Multiple queries are…
izlatkin Jun 6, 2022
c9dda06
draft of the Tree->SSA convertor
grigoryfedyukovich Jun 6, 2022
dfcfc79
TGTree.hpp support early trees return for getNext(): if the tree has …
izlatkin Jun 16, 2022
006169c
small ToDo: add chc_index for Termination nodes
izlatkin Jun 17, 2022
f36e9cc
pruning decls that have false-interpretations
grigoryfedyukovich Jun 23, 2022
4f72bdc
fixed arg types
grigoryfedyukovich Jun 23, 2022
b3c15d3
switch z3 to latest build, TGTree - add trees deallocation
izlatkin Jun 30, 2022
c5ccec9
index_cycle_chc added in ruleManage to identify the cycle start index…
izlatkin Jul 1, 2022
458059b
re-generation of queries; new skeleton
grigoryfedyukovich Jul 2, 2022
43c45fe
fillTodos implementation, fill skeleton of the new implementation
izlatkin Jul 3, 2022
d2f37d8
get model, find bnd-variables for sat cases
izlatkin Jul 8, 2022
568aa5b
tree generation bug fix
izlatkin Jul 10, 2022
f5f4d94
README.md actualized
izlatkin Jul 10, 2022
eaf37c7
filter names, precise test printing
grigoryfedyukovich Jul 12, 2022
276bb9d
contracts signature added as --keys parameter
izlatkin Jul 14, 2022
6157e7b
using contracts signature for tests printing
grigoryfedyukovich Jul 14, 2022
80ceb00
fillTodos added two conditions
izlatkin Jul 19, 2022
80d3870
dump query to the smt2 file (tg_query.smt2); add time stamps for each…
izlatkin Sep 9, 2022
250cbcf
dot.file for SAT queries
izlatkin Sep 21, 2022
8294885
fixed query generation
grigoryfedyukovich Sep 23, 2022
752e1f2
fix in mkNewQuery to handle switch between different cur_bnb numbers +
izlatkin Sep 27, 2022
1c878b0
proper fix for `mkNewQuery`
grigoryfedyukovich Sep 27, 2022
e374142
duplication trees bug fix, adjustment of number of quires for each bn…
izlatkin Sep 28, 2022
9ec33ac
fixed the interface/constructor handling
grigoryfedyukovich Sep 29, 2022
21ab929
printing constructor calls in test file
grigoryfedyukovich Oct 4, 2022
631b9cf
another fix for test printing
grigoryfedyukovich Oct 10, 2022
0595834
tiny fix multiple contract case
izlatkin Nov 7, 2022
d10500f
CHC-ADT: tests
BritikovKI Aug 22, 2023
979796e
ADT-CHC: merged most of the ADT-CHC changes into tg-nonlin
BritikovKI Aug 22, 2023
47bdeec
ADT-CHC: quickfix in progress
BritikovKI Aug 22, 2023
9f7472e
ADT-CHC: Fixes for compilation
BritikovKI Aug 23, 2023
5cf545e
ADT-CHC: Fixes for compilation
BritikovKI Aug 23, 2023
1a201eb
ADT-CHC: merged tg-nonlin with adt-chc to building condition
BritikovKI Aug 24, 2023
64e68af
ADT-CHC: merged tg-nonlin with adt-chc to building condition
BritikovKI Aug 24, 2023
f13abbd
ADT-CHC: parse fix, maybe smth missed
BritikovKI Aug 24, 2023
8835acc
TG-NONLIN: fixes for nonlin inputs
BritikovKI Aug 24, 2023
812baa3
TG-NONLIN: fixes for nonlin inputs
BritikovKI Aug 24, 2023
f049da6
TG-NONLIN: fixes for nonlin inputs
BritikovKI Aug 24, 2023
e096376
Optimization: additional restrictions based on transition invs
BritikovKI Aug 31, 2023
6a3b890
ADT-CHC: getting closer to an error
BritikovKI Sep 11, 2023
fdd699b
ADT-CHC: Horn Nonlin solver pops chcs
BritikovKI Sep 12, 2023
94c6da0
ADT-CHC: Horn Nonlin solver's not crashing anymore
BritikovKI Sep 13, 2023
c585ef0
ADT-CHC: Removed non-necessary prints
BritikovKI Sep 20, 2023
676fe58
ADT-CHC: Debugging
BritikovKI Sep 20, 2023
ad112e7
ADT-CHC: Removed Debugging
BritikovKI Sep 25, 2023
38d77ed
ADT-CHC: Removed Debugging
BritikovKI Sep 26, 2023
d78e3e2
ADT-CHC: Removed Debugging
BritikovKI Sep 26, 2023
cf96abc
DAG-fix: printouts
BritikovKI Oct 25, 2023
570cfd2
TGNolnlin: utilising latest parse
BritikovKI Nov 3, 2023
16620cc
TG-Nonlin: same numbers of decls & CHCs, diff in the invVars
BritikovKI Nov 12, 2023
4a534a4
Testgen: fixed few bugs, now adt-chc and tgnonlin work propperly
BritikovKI Dec 6, 2023
2be6586
generating models for ADTs via accessors
grigoryfedyukovich Dec 27, 2023
e13cc77
improved the test printing
grigoryfedyukovich Dec 29, 2023
ba3818a
more elaborated processing of array models
grigoryfedyukovich Jan 4, 2024
17ffa0d
further processing of array models
grigoryfedyukovich Jan 4, 2024
af788b0
Quick if fix
BritikovKI Feb 16, 2024
5a24613
Added support of the multiple contracts
BritikovKI Feb 29, 2024
a4037b8
Added support of the multiple contracts
BritikovKI Feb 29, 2024
c1ec1a8
INT2BV support
BritikovKI Mar 14, 2024
2c28015
INT2BV support
BritikovKI Apr 4, 2024
f7095df
TgNonlin: optimized tree building(removed unnecessary checks)
BritikovKI Aug 2, 2024
a50015c
Simplified tree checks, fixed bug for set of benchmarks
BritikovKI Aug 9, 2024
cc682dc
Added logical constraints, so possible test-generating trees are stil…
BritikovKI Aug 12, 2024
13760b0
Z3 bytevecs: ZExprConverter
BritikovKI Sep 30, 2024
4577fbc
Z3 bytevecs: marshaling
BritikovKI Oct 3, 2024
b14e652
Z3 bytevecs: marshaling fix
BritikovKI Oct 3, 2024
1d02c65
Z3 bytevecs: marshaling fix
BritikovKI Oct 3, 2024
042f1e7
Z3 bytevecs: abstracting BVs away
BritikovKI Oct 4, 2024
e9512c8
BV siplification: simplification put in place
BritikovKI Nov 4, 2024
0ead9e5
Func summarization (#11)
BritikovKI Jan 22, 2025
69d80ac
Refactoring: removed benchmark archives
BritikovKI Jan 23, 2025
b44c4f1
Refactoring: Remove DS_Store
BritikovKI Jan 23, 2025
92e6f92
Nested Loops: removed side files
BritikovKI Jan 23, 2025
e843de3
Refactoring: Removed a lot of not needed files
BritikovKI Jan 23, 2025
32f8351
Refactoring: Removed comments and useless code
BritikovKI Jan 23, 2025
01b9564
Refactoring: Few more removals
BritikovKI Jan 29, 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
26 changes: 26 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,29 @@
/llvm-seahorn/
/seahorn-llvm/
/gtags.files

.mypy_cache
.vscode
.sync
.tags
.tags1
.ipynb_checkpoints
terraform.tfstate
terraform.tfstate.backup*
tools/deep_bench/windows/files/ice.zip
tools/deep_bench/windows/files/mcmc.zip
tools/deep_bench/**/.terraform
tools/deep_bench/**/playbook.retry
tools/deep_bench/**/playbook.retry
tools/deep_bench/windows/clusterjobs.log
tools/deep_bench/windows/out-*.tar.gz

# Benchmarks

bench/
bench_adt/
bench_horn_adt/
bench_sim/

# .idea files
cmake-build-debug/
185 changes: 68 additions & 117 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,35 +1,33 @@
cmake_minimum_required(VERSION 2.8.11)

project (SeaHorn)
set (SeaHorn_VERSION_MAJOR 0)
set (SeaHorn_VERSION_MINOR 1)
set (SeaHorn_VERSION_PATCH 0)
set (SeaHorn_VERSION_TWEAK "rc3")
project (FreqHorn)
set (FreqHorn_VERSION_MAJOR 0)
set (FreqHorn_VERSION_MINOR 5)

if (NOT PACKAGE_VERSION)
set(PACKAGE_VERSION
"${SeaHorn_VERSION_MAJOR}.${SeaHorn_VERSION_MINOR}.${SeaHorn_VERSION_PATCH}")
if (DEFINED SeaHorn_VERSION_TWEAK)
set (PACKAGE_VERSION "${PACKAGE_VERSION}-${SeaHorn_VERSION_TWEAK}")
"${FreqHorn_VERSION_MAJOR}.${FreqHorn_VERSION_MINOR}.${FreqHorn_VERSION_PATCH}")
if (DEFINED FreqHorn_VERSION_TWEAK)
set (PACKAGE_VERSION "${PACKAGE_VERSION}-${FreqHorn_VERSION_TWEAK}")
endif()
set (SeaHorn_VERSION_INFO ${PACKAGE_VERSION})
set (FreqHorn_VERSION_INFO ${PACKAGE_VERSION})
endif()


if (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR )
message (FATAL_ERROR
"In-source builds are not allowed. Please clean your source tree and try again.")
"In-source builds are not allowed. Please clean your source tree and try again.")
endif()

enable_testing()
include (CTest)

# Add path for custom modules
list (APPEND CMAKE_MODULE_PATH
"${CMAKE_CURRENT_SOURCE_DIR}/cmake")
"${CMAKE_CURRENT_SOURCE_DIR}/cmake")


option (SEAHORN_STATIC_EXE "Static executable." OFF)
option (FreqHorn_STATIC_EXE "Static executable." OFF)

set (CUSTOM_BOOST_ROOT "" CACHE PATH "Path to custom boost installation.")
if (CUSTOM_BOOST_ROOT)
Expand All @@ -46,41 +44,42 @@ set (BOOST_COMPONENTS system)
if (UNIT_TESTS)
set (BOOST_COMPONENTS ${BOOST_COMPONENTS} unit_test_framework)
endif()
find_package (Boost 1.55 REQUIRED COMPONENTS ${BOOST_COMPONENTS})
find_package (Boost 1.71 REQUIRED COMPONENTS ${BOOST_COMPONENTS})
if (Boost_FOUND)
include_directories (${Boost_INCLUDE_DIRS})
endif ()

include(ExternalProject)
set_property(DIRECTORY PROPERTY EP_STEP_TARGETS configure build test)

set (Z3_TAG "origin/spacer3" CACHE STRING "Z3 git tag to use")
set (Z3_REPO "https://bitbucket.org/spacer/code.git" CACHE STRING "Z3 repo")
set (Z3_TAG "z3-4.8.17" CACHE STRING "Z3 git tag to use")
set (Z3_REPO "https://github.com/Z3Prover/z3.git" CACHE STRING "Z3 repo")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set (Z3_DEBUG "-d")
else()
set (Z3_DEBUG "")
endif()

ExternalProject_Add(z3
GIT_REPOSITORY ${Z3_REPO}
GIT_TAG ${Z3_TAG}
BUILD_IN_SOURCE 1
INSTALL_DIR ${CMAKE_BINARY_DIR}/run
CONFIGURE_COMMAND env CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER}
./configure -p <INSTALL_DIR> -b build --staticlib ${Z3_DEBUG}
BUILD_COMMAND make -j3 -C build
INSTALL_COMMAND make -C build install
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_LIST_FILE}
LOG_CONFIGURE 1
LOG_INSTALL 1
LOG_BUILD 1)

find_package(Z3 4.3.2)
GIT_REPOSITORY ${Z3_REPO}
GIT_TAG ${Z3_TAG}
BUILD_IN_SOURCE 1
INSTALL_DIR ${CMAKE_BINARY_DIR}/run
CONFIGURE_COMMAND env CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER}
./configure -p <INSTALL_DIR> -b build --staticlib ${Z3_DEBUG}
BUILD_COMMAND make -j3 -C build
INSTALL_COMMAND make -C build install
COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_LIST_FILE}
LOG_CONFIGURE 1
LOG_INSTALL 1
LOG_BUILD 1)

find_package(Z3 4.8.17)
if (NOT Z3_FOUND)
ExternalProject_Get_Property (z3 INSTALL_DIR)
set(Z3_ROOT ${INSTALL_DIR} CACHE PATH "Forced location of Z3" FORCE)
message(WARNING "No Z3 found. Run \n\tcmake --build . && cmake ${CMAKE_SOURCE_DIR}")
return()
else()
set_target_properties(z3 PROPERTIES EXCLUDE_FROM_ALL ON)
include_directories(${Z3_INCLUDE_DIR})
Expand All @@ -89,86 +88,28 @@ else()
install (PROGRAMS ${Z3_EXECUTABLE} DESTINATION bin)
endif()

ExternalProject_Add (llvm
SVN_REPOSITORY http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_360/final/
SOURCE_DIR ${CMAKE_SOURCE_DIR}/ext/llvm
INSTALL_DIR ${CMAKE_BINARY_DIR}/run
CMAKE_ARGS
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
-DLLVM_TARGETS_TO_BUILD:STRING=X86 -DWITH_POLY:BOOL=OFF
-DLLVM_ENABLE_PEDANTIC=OFF
-DLLVM_ENABLE_PIC=ON -DLLVM_REQUIRES_RTTI:BOOL=TRUE
TEST_AFTER_INSTALL 1
TEST_COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_LIST_FILE}
LOG_CONFIGURE 1
LOG_BUILD 1
LOG_INSTALL 1)

find_package (LLVM 3.6.0 CONFIG NO_DEFAULT_PATH)
if (NOT LLVM_FOUND)
ExternalProject_Get_Property (llvm INSTALL_DIR)
set (LLVM_ROOT ${INSTALL_DIR})
set (LLVM_DIR ${LLVM_ROOT}/share/llvm/cmake CACHE PATH
"Forced location of LLVM cmake config" FORCE)
message (WARNING "No llvm found. Run \n\tcmake --build . && cmake ${CMAKE_SOURCE_DIR}")
return()
else()
set_target_properties(llvm PROPERTIES EXCLUDE_FROM_ALL ON)

message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")

# We incorporate the CMake features provided by LLVM:
list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
include(AddLLVM)
include(HandleLLVMOptions)
set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/bin)
set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/lib)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${LLVM_CXXFLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LLVM_LDFLAGS}")

set(LLVM_REQUIRES_RTTI TRUE)
set(LLVM_REQUIRES_EH TRUE)

include_directories(${LLVM_INCLUDE_DIRS})
link_directories(${LLVM_LIBRARY_DIRS})
add_definitions(${LLVM_DEFINITIONS})

endif()


install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.md DESTINATION .)
# install all the licenses
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/license.txt
DESTINATION share/doc/seahorn
RENAME seahorn_license.txt)
DESTINATION share/doc/FreqHorn
RENAME FreqHorn_license.txt)

if (EXISTS z3-prefix/src/z3/LICENSE.txt)
install (
FILES
${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/LICENSE.txt
DESTINATION share/doc/seahorn
RENAME z3_license.txt)
endif()

if (EXISTS ${CMAKE_CURRENT_BINARY_DIR}/llvm-prefix/src/llvm-build/bin/clang-3.6)
install (
PROGRAMS
${CMAKE_CURRENT_BINARY_DIR}/llvm-prefix/src/llvm-build/bin/clang-3.6
DESTINATION bin)
FILES
${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/LICENSE.txt
DESTINATION share/doc/FreqHorn
RENAME z3_license.txt)
endif()

if (EXISTS ${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/build)
file(GLOB z3py
${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/build/*.py?
${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/build/*.py?
${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/build/*.so
${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/build/*.dylib
${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/build/*.dll
)
${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/build/*.py?
${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/build/*.py?
${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/build/*.so
${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/build/*.dylib
${CMAKE_CURRENT_BINARY_DIR}/z3-prefix/src/z3/build/*.dll
)
install(FILES ${z3py} DESTINATION lib/z3py)
endif()

Expand All @@ -182,31 +123,41 @@ else()
endif()

find_package(OpenMP)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
if (OPENMP_FOUND)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
endif()

find_package(Armadillo)
if (ARMADILLO_FOUND)
add_definitions(-DHAVE_ARMADILLO)
include_directories(${ARMADILLO_INCLUDE_DIR})
endif()

install(DIRECTORY include/
DESTINATION include
FILES_MATCHING
PATTERN "*.hpp"
PATTERN "*.hh"
PATTERN "*.h"
PATTERN ".svn" EXCLUDE
)
DESTINATION include
FILES_MATCHING
PATTERN "*.hpp"
PATTERN "*.hh"
PATTERN "*.h"
PATTERN ".svn" EXCLUDE
)

install(DIRECTORY ${CMAKE_BINARY_DIR}/include/
DESTINATION include
FILES_MATCHING
PATTERN "*.hpp"
PATTERN "*.hh"
PATTERN "*.h"
PATTERN "CMakeFiles" EXCLUDE
PATTERN ".svn" EXCLUDE
)
DESTINATION include
FILES_MATCHING
PATTERN "*.hpp"
PATTERN "*.hh"
PATTERN "*.h"
PATTERN "CMakeFiles" EXCLUDE
PATTERN ".svn" EXCLUDE
)

set(CMAKE_CXX_EXTENSIONS ON)
add_definitions(-Wno-redeclared-class-member -Wno-sometimes-uninitialized)
add_definitions(-Wno-covered-switch-default)
add_definitions(-Wno-inconsistent-missing-override)
set(CMAKE_CXX_STANDARD 11)
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
add_definitions( -Wno-unused-local-typedefs)
endif ()
Expand All @@ -217,7 +168,7 @@ include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/include)
### add our include directories to the front, overriding directories
### specified by external packages.
include_directories(BEFORE
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_BINARY_DIR}/include)
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_CURRENT_BINARY_DIR}/include)

add_subdirectory(tools)
47 changes: 34 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,34 @@
#About#

Skolemizer for AE-formulas in LIA/LRA based on the <a href="http://seahorn.github.io/">SeaHorn</a> verification framework and the <a href="https://github.com/Z3Prover/z3">Z3</a> SMT solver. This is the main computational engine used in the Incremental Model Checking (<a href="http://www.inf.usi.ch/phd/fedyukovich/simabs_paper.pdf">LPAR'15</a>, <a href="http://www.inf.usi.ch/phd/fedyukovich/pde_paper.pdf">CAV'16</a>) and in the Program Synthesis from Assume-Guarantee contracts (<a href="https://arxiv.org/abs/1610.05867">preprint</a>).

#Installation#

* `cd aeval ; mkdir build ; cd build`
* `cmake ../`
* `make` to build dependencies (Z3 and LLVM)
* `make` to build AE-VAL

The binary of AE-VAL can be found in `build/tools/aeval/`

TG-nonlin
========

Maximizing Branch Coverage with Constrained Horn Clauses
for Solidity Language

Installation
============

Assumes preinstalled Boost (e.g., 1.75.0) and Gmp (e.g. 10.4.0) packages.

* `git clone https://github.com/izlatkin/aeval`
* `cd aeval`
* `git checkout tg-nonlin`
* `mkdir build ; cd build`
* `cmake ../`
* `cmake --build . && cmake {PATH_TO_REPO}/aeval`
* `make` (again) to build TG

The binary of TG-nonlin can be found at `build/tools/nonlin/tgnonlin`.
Note that TG-nonlin comes with its own version of Z3

HowTo
==========
`./tools/nonlin/tgnonlin <options> file.smt2`
generated raw tests dumped to `testgen.txt` file

Benchmarks
==========

Collection of the Solidity files
https://github.com/leonardoalt/cav_2022_artifact/tree/main/regression
sol files should be encoded to smt2 format (see: https://github.com/izlatkin/solidity_testgen)

Loading