Leonardo Alt
83ef34f41d
[SMTChecker] Fix SMT name for function identifiers
2019-09-24 11:23:10 +02:00
Leonardo Alt
ed9674be8d
[SMTChecker] Add as const function to SMTLib2Interface
2019-09-18 22:57:14 +02:00
chriseth
5b3efee93b
Merge pull request #7442 from ethereum/develop
...
Merge develop into develop_060
2019-09-17 12:16:27 +02:00
Leonardo Alt
e1c238e25f
[SMTChecker] Add loop support
2019-09-13 12:40:53 +02:00
Daniel Kirchner
4782c800ec
Initial introduction of array slices with partial implementation for dynamic calldata arrays.
2019-09-13 10:57:53 +02:00
Leonardo Alt
a51577facf
Fix Windows build
2019-09-02 22:37:30 +02:00
Leonardo Alt
a774b2d905
[SMTChecker] Zero-initialize arrays
2019-09-02 22:37:30 +02:00
Leonardo Alt
214e5c6369
[SMTChecker] Fix index access type type error
2019-08-27 16:39:19 +02:00
Leonardo Alt
1a70a46f9b
[CHC] Add function blocks and check asserts
2019-08-15 12:25:15 +02:00
Leonardo
cbac3a4208
Merge pull request #7107 from ethereum/smt_chc_constructor_interface
...
[SMTChecker] Add CHC constructor/interface/error blocks
2019-08-12 15:06:08 +02:00
Leonardo Alt
bef6228810
[SMTChecker] Create CHC constructor/interface/error blocks
2019-08-12 12:34:57 +02:00
Leonardo Alt
360f868836
[SMTChecker] Fix literal string type mismatch
2019-08-10 21:51:46 +02:00
Leonardo Alt
4214cd1354
[SMTChecker] Fix ICE when reporting cex concerning state vars from different source files
2019-08-10 20:56:52 +02:00
Leonardo
67c855e93e
Merge pull request #7170 from ethereum/smt_fix_other_contract_state_var
...
[SMTChecker] Fix ICE when inlining functions from different source
2019-08-09 19:14:28 +02:00
Leonardo Alt
7b22496b1f
[SMTChecker] Fix ICE when inlining functions that use state vars and are in a different source
2019-08-09 17:50:52 +02:00
Leonardo Alt
11d8cf588e
[SMTChecker] Set unknown values for return variables of recursive functions
2019-08-09 17:01:08 +02:00
Leonardo Alt
369f8cd97f
[SMTChecker] CHC create function return variables
2019-08-05 12:36:51 +02:00
Leonardo
11632966c9
Merge pull request #7171 from ethereum/smt_fix_compound_bitwise
...
[SMTChecker] Fix ICE compound bitwise op inside branch
2019-08-05 12:15:01 +02:00
Leonardo Alt
d5fb8cf58a
[SMTChecker] Fix ICE compound bitwise op inside branch
2019-08-02 20:02:39 +02:00
Leonardo Alt
7b5863e583
Do not erase knowledge about storage pointers when another pointer is assigned
2019-08-02 13:09:06 +02:00
chriseth
04f298fd0e
Merge pull request #7132 from ethereum/smt_acc_solver
...
[SMTChecker] EncodingContext config flag to accumulate assertions
2019-08-01 13:04:37 +02:00
Leonardo Alt
44d7c6976a
Erase pointer knowledge properly inside loops
2019-07-30 12:47:50 +02:00
Leonardo
00accd9daa
Merge pull request #7141 from ethereum/smt_fix_json
...
[SMTChecker] Reset SSA index to 0 instead of increasing in context reset
2019-07-29 10:20:06 +02:00
Leonardo
0197a200cd
Merge pull request #7142 from ethereum/smt_init_numbers
...
[SMTChecker] Initialize all number types with 0
2019-07-29 10:19:17 +02:00
Leonardo Alt
847f574e22
[SMTChecker] Fix ICE when inlining function with tuple expression
2019-07-26 16:29:29 +02:00
Leonardo Alt
cd5a5b3686
[SMTChecker] Initialize all number types with 0
2019-07-25 15:15:18 +02:00
Leonardo Alt
6bcbeb1d23
[SMTChecker] Reset SSA index to 0 instead of increasing in context reset
2019-07-25 14:16:34 +02:00
Leonardo
264035f0dd
Merge pull request #7120 from ethereum/smt_refactor_inlining
...
[SMTChecker] Refactor function inlining
2019-07-22 14:20:32 +02:00
Leonardo Alt
b204f27047
[SMTChecker] EncodingContext config flag to accumulate assertions
2019-07-19 19:31:25 +02:00
Leonardo Alt
03cc124f32
Add CHC skeleton
2019-07-19 11:52:05 +02:00
Leonardo Alt
382df64899
[SMTChecker] Refactor function inlining
2019-07-18 13:56:48 +02:00
Leonardo Alt
71144d0d39
[CHCChecker] Add CHCSolverInterface and Z3CHCSolverInterface
2019-07-15 17:31:39 +02:00
Leonardo
75eb67c3e0
Merge pull request #7050 from ethereum/smt_set_solver
...
[SMTChecker] EncodingContext's solver needs to be set dynamically
2019-07-08 15:19:55 +02:00
Leonardo Alt
96b0c4c148
[SMTChecker] New VariableUsage flag to inline functions
2019-07-08 14:40:33 +02:00
Leonardo Alt
01570bbc8c
EncodingContext's solver needs to be set dynamically
2019-07-08 14:40:15 +02:00
chriseth
25928767b7
Merge pull request #7058 from ethereum/smt_reset_context
...
[SMTChecker] Clear encoding context before engine starts
2019-07-08 12:36:50 +02:00
Leonardo Alt
be663680d4
[SMTChecker] Clear encoding context before engine starts
2019-07-08 11:56:04 +02:00
Leonardo Alt
4aebdcc442
[SMTChecker] Allow FunctionSort to be created via sort and not type
2019-07-04 12:00:24 +02:00
Leonardo Alt
934e00d235
[SMTChecker] SymbolicVariables use EncodingContext to declare SMT vars
2019-07-03 16:05:56 +02:00
chriseth
817852c650
Merge pull request #7030 from ethereum/smt_move_solver
...
[SMTChecker] Move solver from SMTEncoder to BMC
2019-07-02 14:08:55 +02:00
chriseth
e542e46163
Merge pull request #7022 from ethereum/smt_create_expr
...
[SMTChecker] Always create symbolic expression
2019-07-02 14:07:24 +02:00
chriseth
ca10b59b25
Merge pull request #7020 from ethereum/smt_fix_callstack_message
...
[SMTChecker] Fix wrong assertion in callstack message
2019-07-02 13:47:49 +02:00
Leonardo Alt
b0818bd002
[SMTChecker] Move solver pointer from SMTEncoder to BMC
2019-07-02 12:06:52 +02:00
Leonardo Alt
fb3c85633b
Always create symbolic expression
2019-07-01 16:25:33 +02:00
Leonardo Alt
75663dc91e
[SMTChecker] Fix require with message
2019-07-01 16:17:06 +02:00
Leonardo Alt
6606a13ed2
[SMTChecker] Remove unsound assertion (too strong)
2019-07-01 16:16:39 +02:00
Leonardo Alt
3cb4ed83c1
[SMTChecker] Split SMTChecker into SMTEncoder and BMC
2019-07-01 15:05:03 +02:00
Leonardo Alt
a28b84fdc3
[SMTChecker] Add a more general VerificationTarget
2019-06-27 10:31:50 +02:00
Leonardo Alt
48d6729164
[SMTChecker] Remove overflow check for assignments
2019-06-24 17:58:56 +02:00
Leonardo Alt
ed275fd760
[SMTChecker] Collect assertions in EncodingContext
2019-06-24 15:03:00 +02:00
Leonardo Alt
1221eeebf1
[SMTChecker] Report malformed expressions more precisely
2019-06-06 11:54:29 +02:00
Leonardo Alt
f281c94b42
[SMTChecker] Test that non-Boolean literals are actually integers
2019-06-05 10:51:05 +02:00
Leonardo
3a3316393e
Merge pull request #6897 from ethereum/smt_check_pragma_earlier
...
[SMTChecker] Exit early if no pragma
2019-06-05 10:26:25 +02:00
Leonardo
c39ea56f93
Merge pull request #6896 from ethereum/smt_use_portfolio
...
[SMTChecker] Use SMTPortfolio directly
2019-06-05 10:26:05 +02:00
Leonardo
155af48b9d
Merge pull request #6895 from ethereum/smt_keep_assertions
...
[SMTChecker] Keep a copy of assertions that are added to the solvers
2019-06-05 10:25:45 +02:00
Leonardo Alt
4de1e20954
[SMTChecker] Exit early if no pragma
2019-06-04 17:12:15 +02:00
Leonardo Alt
91653526bb
[SMTChecker] Use SMTPortfolio directly instead of pointer to SolverInterface
2019-06-04 17:10:52 +02:00
Leonardo Alt
31ef421fff
[SMTChecker] Keep a copy of assertions that are added to the solvers
2019-06-04 17:09:04 +02:00
Leonardo Alt
d9ce9cab99
[SMTChecker] Use smtlib's implies instead of \!a or b
2019-06-04 14:23:44 +02:00
chriseth
e08f521b7e
Merge pull request #6764 from ethereum/smt_fix_tuple_ice
...
[SMTChecker] Fix ICE in unsupported function calls with multi return values
2019-05-20 15:18:11 +02:00
Leonardo Alt
60a4f03d3d
[SMTChecker] Fix ice in unsupported functions with multi return values
2019-05-16 18:23:42 +02:00
Leonardo Alt
5493a41842
[SMTChecker] Move global variables and functions to encoding context
2019-05-16 18:11:31 +02:00
Leonardo Alt
4e430ba0ae
[SMTChecker] Move expression handling to EncodingContext
2019-05-14 15:56:43 +02:00
Leonardo Alt
ebbe03cad6
[SMTChecker] Move variable handling to EncodingContext
2019-05-13 16:59:28 +02:00
chriseth
01dd9ba2ae
Merge pull request #6717 from ethereum/smt_namespace
...
Move SMT specific code into smt namespace
2019-05-13 12:45:34 +02:00
chriseth
e5d46767f1
Merge pull request #6722 from ethereum/smt_fix_variable_usage
...
[SMTChecker] Fix VariableUsage for IndexAccess
2019-05-13 10:17:26 +02:00
Leonardo Alt
fac383a233
Move SMT specific code into smt namespace
2019-05-10 20:03:11 +02:00
chriseth
cc40e65a4b
Merge pull request #6712 from ethereum/smt_unique_ptr
...
[SMTChecker] Use unique_ptr instead of shared_ptr where applicable
2019-05-10 12:53:53 +02:00
Leonardo Alt
3ea5c112d3
[SMTChecker] Fix VariableUsage for IndexAccess
2019-05-10 11:28:10 +02:00
Leonardo Alt
8d65fd18fc
[SMTChecker] Style changes
2019-05-09 19:15:43 +02:00
chriseth
89700dbcff
Merge pull request #6665 from ethereum/smt_inline_external_this
...
[SMTChecker] Inline external function calls to `this`
2019-05-09 19:09:08 +02:00
Leonardo Alt
ef32bf185f
[SMTChecker] Inline external function calls to this.
2019-05-09 16:53:30 +02:00
Leonardo Alt
c8a017ccd6
[SMTChecker] Use unique_ptr instead of shared_ptr where applicable.
2019-05-09 16:34:22 +02:00
Leonardo Alt
6027383ae5
[SMTChecker] Fix call to function at state var init
2019-05-09 16:12:44 +02:00
Leonardo Alt
3d52a6ca68
[SMTChecker] Fix ICE in branch-inline function call-modify local variable
2019-05-09 09:15:11 +02:00
Leonardo Alt
9893cae27a
[SMTChecker] Make mergeVariables deterministic
2019-05-08 20:46:01 +02:00
Leonardo Alt
0b046897ae
[SMTChecker] Fix unsupported type assignment
2019-05-08 14:28:23 +02:00
Leonardo Alt
3c7540ceb2
[SMTChecker] Support tuples with multiple var decls
2019-05-07 16:57:27 +02:00
Leonardo Alt
2139c20776
[SMTChecker] Support delete
2019-05-06 18:32:10 +02:00
Leonardo
e99efec085
Merge pull request #6652 from ethereum/smt_tuple_function
...
[SMTChecker] Support tuples as function calls with multiple return values
2019-05-06 15:19:24 +02:00
Leonardo Alt
80712f44cb
Fix short circuit with assignments
2019-05-06 11:04:43 +02:00
Leonardo Alt
5440a53d4d
[SMTChecker] Support tuples as function calls with multiple return values
2019-05-03 06:10:22 +02:00
Leonardo Alt
204dcf1771
[SMTChecker] Support tuple assignments
2019-05-02 12:55:34 +02:00
Leonardo Alt
6c7527ac90
[SMTChecker] Support tuple type declaration
2019-05-02 12:05:21 +02:00
Leonardo Alt
66655b87b0
[SMTChecker] Fix ICE in fixed point operations
2019-05-02 10:59:23 +02:00
Leonardo Alt
dd4e938265
[SMTChecker] Fix ICE in inherited state var
2019-05-02 10:03:12 +02:00
Leonardo Alt
a6db37ac9c
[SMTChecker] Fix bad cast in base constructor modifier.
2019-04-30 18:48:13 +02:00
Leonardo Alt
e4989369d0
Refactor cast from identifier ref decl to var decl
2019-04-30 11:08:36 +02:00
Leonardo Alt
762f79f84d
Refactor assignment handling
2019-04-30 11:08:36 +02:00
Leonardo Alt
fc482de695
[SMTChecker] Support address members
2019-04-25 16:24:36 +02:00
Leonardo Alt
dd1afeba52
[SMTChecker] Support this as address
2019-04-18 17:56:52 +02:00
chriseth
fce19bde58
Merge pull request #6545 from ethereum/smt_contracts
...
[SMTChecker] Support contract type
2019-04-18 13:01:18 +02:00
Leonardo Alt
ecd89393ee
[SMTChecker] Support contract type
2019-04-17 16:30:11 +02:00
Leonardo Alt
03d18f1b98
[SMTChecker] Add note about not inlining external function calls
2019-04-17 16:14:07 +02:00
Christian Parpart
721bf367a3
[libsolidity] TypeProvider: eliminate redundant "Type" suffix in provider function signatures.
2019-04-17 14:42:07 +02:00
Christian Parpart
862b65d6e3
[libsolidity] remove ReferenceType::copyForLocationIfReference (use TypeProvider instead)
2019-04-17 13:25:03 +02:00
Christian Parpart
58a45f2cb6
[libsolidity] TypeProvider: adds explicit uint256() accessor and removes default params in integerType(...).
2019-04-16 18:28:40 +02:00
Christian Parpart
bf43eebea9
libsolidity: Introducing TypeProvider API, for clear type system ownership.
2019-04-16 18:26:45 +02:00
Leonardo Alt
07fac9e381
[SMTChecker] Allow SymbolicVariable from smt::Sort
2019-04-15 14:52:46 +02:00
chriseth
bf5792f7ca
Merge pull request #6483 from ethereum/smt_support_mod
...
[SMTChecker] Support mod
2019-04-15 13:42:18 +02:00
chriseth
73ac8f6220
Merge pull request #6421 from ethereum/smt_fix_variable_usage
...
[SMTChecker] Refactor VariableUsage
2019-04-15 13:39:10 +02:00
Leonardo Alt
af9f16e014
[SMTChecker] Support mod
2019-04-12 12:39:25 +02:00
Leonardo Alt
4fe303530a
[SMTChecker] Show unsupported warning for asm blocks
2019-04-05 16:41:15 +02:00
Leonardo Alt
79d8a4e13a
[SMTChecker] Refactor VariableUsage
2019-04-05 11:38:37 +02:00
Leonardo Alt
aa9b9aa87e
[SMTChecker] Support unary inc/dec for array/mapping access
2019-04-02 16:53:19 +02:00
chriseth
84251e5a22
Merge pull request #6405 from ethereum/smt_compound_assignment
...
[SMTChecker] Support arithmetic compound assignment operators.
2019-03-28 18:27:25 +01:00
Leonardo Alt
a7e826a224
[SMTChecker] Implement short circuit
2019-03-28 16:08:30 +01:00
Leonardo Alt
15269067b5
Support arithmetic compound assignment operators
2019-03-28 15:27:52 +01:00
Leonardo Alt
ecbf36f271
Refactor computing symbolic arithmetic operation
2019-03-28 15:27:36 +01:00
Leonardo Alt
1d63b97857
Take inlined function calls into account when collecting touched variables
2019-03-28 14:32:47 +01:00
Leonardo Alt
6f9b69ebc3
Refactor function that retrieves FunctionDefinition from FunctionCall
2019-03-28 14:32:47 +01:00
Leonardo Alt
a207d7f44c
[SMTChecker] Add callstack model to overflow checks
2019-03-21 16:25:33 +01:00
Leonardo Alt
de89733bd6
[SMTChecker] Fix nullptr deref
2019-03-21 15:46:54 +01:00
Leonardo Alt
9659f40c8d
[SMTChecker] Support modifiers
2019-03-20 11:32:20 +01:00
Leonardo Alt
3296fb3764
Add callstack to model report
2019-03-20 10:35:29 +01:00
Leonardo Alt
a8209e9899
[SMTChecker] Shortcut RationalNumber expressions
2019-03-11 12:53:49 +01:00
Leonardo Alt
02d0e609b9
[SMTChecker] Support enums
2019-03-07 15:15:12 +01:00
Leonardo Alt
29b2ab6f66
Handle aliasing
2019-03-06 11:29:54 +01:00
Leonardo Alt
467c34999f
Do not throw on string literals
2019-03-06 11:29:26 +01:00
Leonardo Alt
e74f58130e
Add SMT type support to Solidity arrays
2019-03-06 11:29:26 +01:00
Mathias Baumann
f782125463
Fix SMT Checker crash due to missing type information
2019-02-28 11:55:45 +01:00
Leonardo Alt
bbd2c91e19
[SMTChecker] Replace dynamic_cast by category check
2019-02-26 00:47:59 +01:00
Leonardo Alt
34470f3549
[SMTChecker] Only check for overflow/underflow in the end of the function
2019-02-18 23:55:58 +01:00
chriseth
cb0ad2266c
Merge pull request #6008 from ethereum/smt_fix_abstract_assignment
...
[SMTChecker] Assert type is not function when assigning
2019-02-18 14:54:20 +01:00
Leonardo Alt
22cdfb18d4
[SMTChecker] Assert type is not function when assigning
2019-02-14 13:32:56 +01:00
Daniel Kirchner
8ca6715e18
More style checks.
2019-02-14 11:41:20 +01:00
Leonardo Alt
637546850f
[SMTChecker] Add mod operator
2019-02-07 14:24:40 +01:00
Leonardo Alt
9a33367bc6
[SMTChecker] Warn when no solver was found and there are unhandled queries.
2019-01-29 14:29:07 +01:00
Leonardo Alt
7f8ceaadab
[SMTChecker] Clear state knowledge after external function calls
2019-01-21 12:58:40 +01:00
Leonardo Alt
a10db051de
[SMTChecker] Support basic typecast
2019-01-16 13:00:54 +01:00
Leonardo Alt
cce377833a
Sort includes in libsolidity/formal
2018-12-17 18:26:10 +01:00
Leonardo Alt
9199718ec0
Clear all mapping knowledge after array variable assignment
2018-12-14 12:21:53 +01:00
Leonardo Alt
6a2809a582
[SMTChecker] Support to mapping
2018-12-14 12:21:53 +01:00
Leonardo Alt
08737e43dc
[SMTChecker] Use SymbolicFunctionVariable for uninterpreted functions
2018-12-11 11:28:25 +01:00
Leonardo Alt
de46bb2c42
[SMTChecker] Introduce SymbolicFunctionVariable
2018-12-10 11:34:29 +01:00
Kevin Kelley
fb6fd1b3c2
add a 'readable' format for large hex values
2018-12-05 22:15:02 +01:00
Leonardo Alt
b9f424e373
[SMTChecker] Simplify symbolic variables
2018-12-05 09:56:52 +01:00
Leonardo Alt
8069bb61da
[SMTChecker] Loops are unrolled once
2018-12-04 12:35:19 +01:00
Leonardo Alt
6d41ffb4a5
[SMTChecker] Remove unary plus operator
2018-12-03 10:35:38 +01:00
Leonardo Alt
2f6de12e8c
[SMTChecker] Make smt::Sort::operator== virtual
2018-11-30 10:41:15 +01:00
chriseth
9e9250c961
Fix move bug.
2018-11-29 15:32:38 +01:00
Leonardo Alt
aaaa92012c
[SMTChecker] Unknown answer for constant condition check should not do anything
2018-11-26 12:54:02 +01:00
Leonardo Alt
6251a289dd
Testing with smtlib2 interface always there
2018-11-23 09:43:49 +01:00
Leonardo Alt
dee0c4ded8
Error message stays in the SMTChecker
2018-11-23 09:43:49 +01:00
Leonardo Alt
f3c2309c73
Display better error message in SMTLib2
2018-11-23 09:43:49 +01:00
chriseth
54bed454f6
Rename function and warn if responses are supplied for Z3.
2018-11-23 09:43:49 +01:00
chriseth
bb10be789c
Inject SMTLIB2 queries and responses via standard-json-io.
2018-11-23 09:43:49 +01:00
chriseth
d686807153
Style
2018-11-22 21:13:02 +01:00
Leonardo Alt
ec84a7dc9b
[SMTChecker] Refactor setZeroValue and setUnknownValue
2018-11-22 16:42:51 +01:00
Leonardo Alt
20accf1a90
[SMTChecker] Add ArraySort and array operations
2018-11-22 14:04:20 +01:00
Leonardo Alt
13a142b039
[SMTChecker] Add FunctionSort and refactors the solver interface to create variables
2018-11-22 10:04:04 +01:00
Christian Parpart
d67322a186
Introduce namespace langutil
in liblangutil directory.
...
Also:
- Use {}-style list initialisation for SourceLocation construction
- Introduce new system includes
- Changes the API of the Scanner to take source as value (with move) as opposed to as a reference
2018-11-21 19:13:44 +00:00
Christian Parpart
87821c53c3
Isolating files shared between Yul- and Solidity language frontend.
2018-11-21 18:58:12 +00:00
Alex Beregszaszi
2c6e1888eb
Merge pull request #5466 from ethereum/smt_refactor_sort_patch1
...
[SMTChecker] Refactor smt::Sort and its usage
2018-11-21 15:17:58 +00:00
Leonardo Alt
01ce43e51b
[SMTChecker] Refactor smt::Sort and its usage
2018-11-21 15:46:47 +01:00
mordax
ea8b7d803e
Removing redundant virtual from override function declaration
...
Remove trailing whitespace
Remove changelog change
2018-11-21 14:37:32 +00:00
Leonardo Alt
06c3f0953a
[SMTChecker] Support bound function calls
2018-11-19 15:29:00 +01:00
Leonardo Alt
70bb0eaf95
[SMTChecker] Implement uninterpreted functions and use it for blockhash()
2018-11-15 09:12:42 +01:00
Leonardo Alt
9a4fd946c3
Add Scanner function that prints source based on SourceLocation
2018-11-13 13:49:29 +01:00
Leonardo Alt
d8cbf321da
Grouping of symbolic variables in the same file and support to FixedBytes
2018-10-25 09:30:48 +02:00
chriseth
01566c2e1a
Merge pull request #5272 from ethereum/smt_special_vars
...
[SMTChecker] Support msg.*, tx.*, block.*, gasleft and blockhash
2018-10-24 14:34:17 +02:00
Leonardo Alt
e2cf5f6ed9
Add gasleft constraint and use full member access name
2018-10-22 18:19:11 +02:00
Christian Parpart
f112377dd4
Refactor solidity::Token
into an enum class
with TokenTraits
helper namespace
2018-10-22 17:00:51 +02:00
Leonardo Alt
b46b827c30
[SMTChecker] Support msg.*, tx.*, block.*, gasleft and blockhash
2018-10-19 15:52:16 +02:00
Leonardo Alt
070471d8d4
Fix possibly effectless map emplace
2018-10-17 19:00:38 +02:00
Leonardo Alt
c92d3b537d
[SMTChecker] Refactor expressions such that they also use SymbolicVariable
2018-10-17 18:36:24 +02:00
Leonardo
3db1ce0e14
Merge pull request #5235 from ethereum/smt_refactor_types
...
[SMTChecker] Refactoring types
2018-10-17 18:35:48 +02:00
Bhargava Shastry
67fd3ca4a7
Retained move/copy semantics; removed const qualifier from Expression's members name (of type std::string) and arguments (of type std::vector<Expression>)
2018-10-17 16:46:18 +02:00
Bhargava Shastry
546b08c158
Fix compiler warning: clang-8 warns of explicitly-defined op implicitly deleted for Expression object's copy and move constructors
2018-10-17 16:42:51 +02:00
Leonardo Alt
afe83cc28b
Refactor SymbolicAddressVariable and SymbolicVariable allocation
2018-10-17 15:58:13 +02:00
Leonardo Alt
aa23326e06
Consistent renaming of 'counters' and 'sequence' to 'index'
2018-10-17 15:58:13 +02:00
Leonardo Alt
ec39fdcb3c
[SMTChecker] Refactoring types
2018-10-17 15:58:13 +02:00
chriseth
2384947521
Merge pull request #5209 from ethereum/smt_ssa_refactor
...
[SMTChecker] Refactor SSAVariable such that it only uses Type and not Declaration
2018-10-15 16:49:47 +02:00
Leonardo Alt
e4851cf59e
[SMTChecker] Inline calls to internal functions
2018-10-15 15:11:21 +02:00
Leonardo Alt
4a4620ac95
Refactor SSAVariable such that it only uses Type and not Declaration
2018-10-15 14:20:54 +02:00
Alex Beregszaszi
fa0ce6a7e7
Use empty() instead of size() == 0
2018-10-09 04:29:37 +01:00
Anurag Dashputre
3321000f67
Removing extra default cases to force compile time error, instead of runtime.
2018-09-30 12:40:38 +05:30
Daniel Kirchner
87804b6419
Split IntegerType into IntegerType and AddressType.
2018-09-05 12:19:14 +02:00
Daniel Kirchner
9b4546c487
Add workarounds for building against CVC4 on ArchLinux.
2018-08-08 19:02:59 +02:00
Alex Beregszaszi
f024efb7ab
SMT: do not crash on referencing MagicVariableDeclaration
2018-08-07 20:43:20 +01:00
Alex Beregszaszi
6003ed2abd
Merge pull request #4603 from ethereum/smtlib2
...
[SMTLib2] Fix repeated declarations
2018-08-02 12:04:58 +01:00
Leonardo Alt
90f319615f
SMT model variables are sorted and printed as secondary source location
2018-08-01 23:27:46 +02:00
Leonardo Alt
b6a2655513
Replace "value" by "<result>" in the SMT model
2018-08-01 23:27:11 +02:00
Leonardo Alt
41ac3d6cfb
Remove repeated declarations in Z3 and CVC4 as well
2018-08-01 11:12:56 +02:00
Alex Beregszaszi
179427fd65
Import dev::solidity namespace in SMTPortfolio
2018-07-27 23:17:17 +01:00
Leonardo Alt
f249f9c86f
[SMTLib2] Fix repeated declarations
2018-07-27 17:34:44 +01:00
Alex Beregszaszi
dea0567e06
Fix unterminated parentheses typo in SMTLib2
...
Found by @leonardoalt
2018-07-27 17:33:53 +01:00
Leonardo Alt
55c1fb60b4
[SMTChecker] Add CheckResult::CONFLICTING
2018-07-27 16:16:26 +01:00
Leonardo Alt
87a38e1abe
[SMTChecker] SMTPortfolio: use all SMT solvers available
2018-07-27 16:15:34 +01:00
Leonardo Alt
b356f6a7f9
Setting timeout to Z3 and CVC4
2018-07-27 16:01:48 +02:00
Leonardo Alt
06dbcb3afe
Only ask for a model if it's SAT
2018-07-27 14:13:22 +02:00
Alex Beregszaszi
ae15b52d93
Merge pull request #4565 from ethereum/smt-stringutils-crash
...
Add assert for both branches in mergeVariables in SMTChecker
2018-07-25 11:08:47 +01:00
Alex Beregszaszi
a5a61a0b77
More consistent catch statements
...
Also take const& in all cases.
2018-07-25 01:18:09 +01:00
Alex Beregszaszi
d30a6de942
Add better warning on binary operation on non-integer types in SMT Checker
2018-07-24 23:23:54 +01:00
Alex Beregszaszi
278372c13d
Add assert for both branches in mergeVariables in SMTChecker
2018-07-24 22:43:05 +01:00
Cryptomental
140dbfdbd8
Code, Changelog, ReleaseChecklist: Fix typos.
...
Refs: #4442
2018-07-11 00:26:23 +02:00
Leonardo Alt
207d5859d1
Refactoring Declaration -> VariableDeclaration (more precise)
2018-06-12 10:58:50 +02:00
Leonardo Alt
48652c88af
Review comments
2018-06-12 10:58:50 +02:00
Leonardo Alt
678a769cd7
Refactoring how storage and local variables are managed.
2018-06-12 10:58:50 +02:00
Leonardo Alt
0b6eea0c55
Bool variables should not allow arithmetic comparison
2018-05-16 18:32:47 +02:00
Leonardo Alt
4117e859eb
[SMTChecker] Declaring all state vars before any function is visited
2018-05-15 14:28:08 +02:00
Leonardo Alt
2dbb35d4a8
[SMTChecker] Support to integer and Bool storage vars
2018-05-15 14:22:50 +02:00
chriseth
8debded743
Revert "BREAKING: Bool variables should not allow arithmetic comparison"
2018-05-02 15:56:59 +02:00
chriseth
42289b642f
Merge pull request #4003 from ethereum/bool_vars_comparison
...
BREAKING: Bool variables should not allow arithmetic comparison
2018-05-02 15:56:06 +02:00
Alexander Arlt
f94b793472
Add virtual destructors on base classes.
2018-05-02 13:29:16 +02:00
Leonardo Alt
ab251c7e7d
Bool variables should not allow arithmetic comparison
2018-04-27 11:35:58 +02:00
Leonardo Alt
ba3d16fc58
[SMTChecker] Remove 'information is erase' message for if-else
2018-04-19 09:28:44 +02:00
Leonardo Alt
78ba34608f
[SMTChecker] Using solUnimplementedAssert instead of solAssert when applicable
2018-04-18 13:17:59 +02:00
Leonardo Alt
ae3350ae03
[SMTChecker] Integration with CVC4
2018-04-17 12:26:58 +01:00
Leonardo Alt
8d087d1889
[SMTChecker] Removing usage of UFs to access SSA indices
2018-04-05 12:48:58 +02:00
Leonardo Alt
9b64dc501d
[SMTChecker_Bool] Fix PR review comments: method renaming and solAssert
2018-03-12 20:16:47 +01:00
Leonardo Alt
c2d26eb6a2
[SMTChecker_Bool] Fix PR comments; Add support to gt, ge, lt, le. and tests.
2018-03-12 20:16:47 +01:00
Leonardo Alt
6a940f0a99
[SMTChecker] Support to Bool variables
2018-03-12 20:16:47 +01:00
Leonardo Alt
5d74b862a3
This z3 option is necessary for good solving performance
2018-03-04 14:42:36 +01:00
Leonardo Alt
8b1b4b78c0
Fix PR comments
2018-02-28 18:31:11 +01:00
Leonardo Alt
cff0836c03
Fix PR comments
2018-02-28 18:05:20 +01:00
Leonardo Alt
21c6b80fc9
Supported types listed in SSAVariable
2018-02-28 18:05:20 +01:00
Leonardo Alt
3b2851ee41
Integer min and max values placed under SymbolicIntVar instead of SMTChecker
2018-02-28 18:05:20 +01:00
Leonardo Alt
f41591b3dd
[SMTChecker] A little refactoring on SSA vars
2018-02-28 18:05:20 +01:00
Leonardo Alt
d0abc5359b
[SMTChecker] Variables are merged after branches (ite variables)
2018-01-04 18:20:12 +01:00
Leonardo Alt
b588134840
[SMTChecker] Fix typo in the code (satisifable->satisfiable)
2017-12-18 17:31:27 +01:00
Leonardo Alt
a1e296e392
[SMTChecker] Helper functions to add an expression to the solver conjoined with or implied by the current path conditions
2017-12-13 17:59:36 +01:00
Leonardo Alt
2af4d7c7dd
[SMTChecker] Keep track of current path conditions
2017-12-13 17:39:10 +01:00
chriseth
a256983320
Fix expression creation problems.
2017-11-30 01:20:21 +01:00
chriseth
d160ec8595
Fix signed division.
2017-11-30 01:20:21 +01:00
chriseth
19e067465a
Unary operators and division.
2017-11-30 01:20:21 +01:00
chriseth
0e2a9658d2
Explain IntIntFun and merge assertion.
2017-11-23 19:02:47 +01:00
chriseth
762d591a47
Introduce sorts for smt expressions.
2017-11-22 15:20:26 +01:00
chriseth
8538a25f8d
Fix problem with non-value-typed variables.
2017-11-22 02:35:34 +00:00
chriseth
19d5c42429
For loop.
2017-11-22 02:35:34 +00:00
chriseth
95a65dc04c
Fix boolean constants.
2017-11-22 02:35:34 +00:00
chriseth
22c689d516
Check for conditions being constant.
2017-11-22 02:35:34 +00:00
chriseth
e5de4a66ed
Tests.
2017-11-22 02:35:34 +00:00
chriseth
b37377641d
Track usage of variables.
2017-11-22 02:35:34 +00:00
chriseth
f62caf587e
Handle branches.
2017-11-22 02:35:34 +00:00
chriseth
7d0e46bf59
Merge pull request #3030 from ethereum/smt-variable-types
...
SMT enforce variable types
2017-10-20 16:55:09 +02:00
Alex Beregszaszi
7a4c165518
Remove unused variable in Z3
2017-10-18 23:18:11 +01:00
chriseth
153ae98878
Catch exception in Z3.
...
Note: This exception might not be the result of resource limitation,
it might also hint towards usage error.
2017-10-17 18:30:10 +01:00
Alex Beregszaszi
a71c6faf0f
Remove duplicate >= in Z3
2017-10-17 18:30:07 +01:00
chriseth
1f97c1ea8f
Rename variables in SMT checker.
2017-10-17 18:29:53 +01:00
Alex Beregszaszi
18ae0c3d78
SMT enforce variable types
2017-10-05 12:29:20 +01:00
Alex Beregszaszi
10529e994f
SMT should not crash on typecast/structs
2017-10-05 11:41:11 +01:00
Alex Beregszaszi
66b188cce9
Merge pull request #3022 from ethereum/assert
...
Use solAssert and not assert
2017-10-04 14:11:43 +01:00
Alex Beregszaszi
a9847c9551
Use solAssert and not assert
2017-10-04 13:05:55 +01:00
chriseth
5ee3ceaef7
Remove leftover couts.
2017-09-29 12:44:39 +02:00
Alex Beregszaszi
1c0c5d923a
Mark constructors explicit
2017-09-20 01:23:21 +01:00
chriseth
9e63710b8e
Remove parameter names for defaulted functions.
2017-08-31 12:16:41 +02:00
chriseth
cf5e1d6120
Review changes.
2017-08-23 17:37:35 +02:00
chriseth
c93f0434cd
Use experimental feature pragma for SMT checker.
2017-08-23 17:37:35 +02:00
chriseth
75f09f2a84
Partial support for if statements.
2017-08-23 17:37:35 +02:00