solidity/libsolidity/formal
Martin Blicha 3599c8c6b9 SMTChecker: Fix generation of smtlib scripts
When both CHC and BMC engines are used, the type of state variable
changes when trusted mode for external calls is used. This is because in
CHC engine, trusted mode means we pack more information into the
symbolic state. In BMC this type is always simple.

However, if BMC is run after CHC, in the current code state variables
are reset (and their declaration dumped into SMT-LIB script) before BMC
resets the type of the state variable.

The proposed solution is to simply reset the variable type before the
first variable of this type is created.
2023-06-30 15:57:51 +02:00
..
ArraySlicePredicate.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
ArraySlicePredicate.h Support array slices 2020-10-01 11:52:02 +02:00
BMC.cpp SMTChecker: Fix generation of smtlib scripts 2023-06-30 15:57:51 +02:00
BMC.h Add optional bounds to unroll loops in BMC model checker 2023-06-02 18:32:38 +02:00
CHC.cpp Add --print-smt flag to output SMTChecker SMTLIB code 2023-06-16 14:04:07 +02:00
CHC.h group unsupported warnings 2023-03-15 17:06:06 +01:00
EncodingContext.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
EncodingContext.h Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
ExpressionFormatter.cpp Add ExpressionFormatter which translates an smtutil::Expression into a Solidity-like expression string 2021-10-26 11:30:30 +02:00
ExpressionFormatter.h Add ExpressionFormatter which translates an smtutil::Expression into a Solidity-like expression string 2021-10-26 11:30:30 +02:00
Invariants.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
Invariants.h Add Invariants which traverses the proof and collects invariants for the given predicates 2021-10-26 11:30:30 +02:00
ModelChecker.cpp group unsupported warnings 2023-03-15 17:06:06 +01:00
ModelChecker.h group unsupported warnings 2023-03-15 17:06:06 +01:00
ModelCheckerSettings.cpp [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
ModelCheckerSettings.h Add --print-smt flag to output SMTChecker SMTLIB code 2023-06-16 14:04:07 +02:00
Predicate.cpp [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
Predicate.h [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
PredicateInstance.cpp [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
PredicateInstance.h [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
PredicateSort.cpp [SMTChecker] Detect errors caused by reentrancy 2020-12-28 14:32:53 +01:00
PredicateSort.h [SMTChecker] Detect errors caused by reentrancy 2020-12-28 14:32:53 +01:00
SMTEncoder.cpp Fix error in SMTChecker: Use rich indentifier instead of external identifier to ecnode member access to functions 2023-06-23 15:24:55 +02:00
SMTEncoder.h Add optional bounds to unroll loops in BMC model checker 2023-06-02 18:32:38 +02:00
SSAVariable.cpp Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
SSAVariable.h Add SPDX license identifier if not present already in source file 2020-07-17 20:24:12 +05:30
SymbolicState.cpp [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
SymbolicState.h [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
SymbolicTypes.cpp [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
SymbolicTypes.h [SMTChecker] Add a new trusted mode which assumes that code that is 2023-02-06 17:02:33 +01:00
SymbolicVariables.cpp Add std:: qualifier to move() calls 2022-08-30 11:12:15 +02:00
SymbolicVariables.h Replace TypePointer with Type const* 2021-03-23 11:47:19 +01:00
VariableUsage.cpp [SMTChecker] Correctly resolve current scope contract in VariableUsage. 2021-03-15 13:55:14 +01:00
VariableUsage.h [SMTChecker] Correctly resolve current scope contract in VariableUsage. 2021-03-15 13:55:14 +01:00