7 CONCLUSIONS
Partial verification is an approach to verification
where on analysis failing, its partial results are used
to produce a simpler residual problem for subse-
quent passes. In this paper we have presented an
event-based framework that can be used as the basis
to produce residuals verification problems, while we
have presented novel residual operators that analyse
the program intraprocedurally to identify unnecessary
event instrumentation, property transitions, and prop-
erty event guards. We evaluated this with a Solid-
ity smart contract, showing some gains depending on
how much of a property was proven.
We are working on an implementation
8
of this
approach for CONTRACTLARVA (Azzopardi et al.,
2018), a tool for runtime verification on the Ethereum
blockchain. A next logical step is to consider exten-
sions of our work to when parts of the program are
unknown or dynamic at runtime. We believe our ap-
proach to dealing with intraprocedural analysis, i.e.
by considering call states as chaotic, can be re-used
for this purpose. Missing from literature is also resid-
uals of temporal logic based specifications, which are
popular formalisms for verification.
REFERENCES
Ahrendt, W., Pace, G. J., and Schneider, G. (2012). A
unified approach for static and runtime verification:
Framework and applications. In Margaria, T. and
Steffen, B., editors, Leveraging Applications of For-
mal Methods, Verification and Validation - 5th Inter-
national Symposium, ISoLA 2012, Heraklion, Crete,
Greece, Proceedings, Part I, volume 7609 of LNCS,
pages 312–326. Springer-Verlag.
Azzopardi, S., Colombo, C., and Pace, G. (2019). A tech-
nique for automata-based verification with residual
reasoning. Technical Report CS-2019-02, Department
of Computer Science, University of Malta.
Azzopardi, S., Colombo, C., and Pace, G. J. (2017).
Control-flow residual analysis for symbolic automata.
In Francalanza, A. and Pace, G. J., editors, Proceed-
ings Second International Workshop on Pre- and Post-
Deployment Verification Techniques, Torino, Italy, 19
September 2017, volume 254 of Electronic Proceed-
ings in Theoretical Computer Science, pages 29–43.
Open Publishing Association.
Azzopardi, S., Colombo, C., and Pace, G. J. (2020).
CLARVA: Model-based residual verification of java
programs. In Model-Driven Engineering and Software
Development - 8th International Conference, MOD-
ELSWARD 2020, Valletta, Malta, February 25-27,
2020.
8
https://www.github.com/shaunazzopardi/solidity-
static-analysis
Azzopardi, S., Ellul, J., and Pace, G. J. (2018). Monitoring
smart contracts: CONTRACTLARVA and open chal-
lenges beyond. In The 18th International Conference
on Runtime Verification.
Beyer, D., Henzinger, T. A., Keremoglu, M. E., and
Wendler, P. (2012). Conditional model checking: A
technique to pass information between verifiers. In
Proceedings of the ACM SIGSOFT 20th International
Symposium on the Foundations of Software Engineer-
ing, FSE ’12, pages 57:1–57:11, New York, NY, USA.
ACM.
Beyer, D., Jakobs, M.-C., Lemberger, T., and Wehrheim,
H. (2018). Reducer-based construction of conditional
verifiers. In Proceedings of the 40th International
Conference on Software Engineering, ICSE ’18, pages
1182–1193, New York, NY, USA. ACM.
Bodden, E. (2010). Efficient hybrid typestate analysis by
determining continuation-equivalent states. In ICSE
’10: International Conference on Software Engineer-
ing, pages 5–14, New York, NY, USA. ACM.
Bodden, E. and Lam, P. (2010). Clara: Partially Evaluat-
ing Runtime Monitors at Compile Time. In 1st In-
ternational Conference on Runtime Verification (RV),
volume 6418 of LNCS, pages 183–197. Springer. Tu-
torial.
de Moura, L. and Bjørner, N. (2008). Z3: An efficient smt
solver. In Ramakrishnan, C. R. and Rehof, J., editors,
Tools and Algorithms for the Construction and Anal-
ysis of Systems, pages 337–340, Berlin, Heidelberg.
Springer Berlin Heidelberg.
Dwyer, M. B. and Purandare, R. (2007). Residual dynamic
typestate analysis exploiting static analysis: Results
to reformulate and reduce the cost of dynamic analy-
sis. In Proceedings of the Twenty-second IEEE/ACM
International Conference on Automated Software En-
gineering, ASE ’07, pages 124–133, New York, NY,
USA. ACM.
Dwyer, M. B. and Purandare, R. (2008). Residual checking
of safety properties. In Havelund, K., Majumdar, R.,
and Palsberg, J., editors, Model Checking Software,
pages 1–2, Berlin, Heidelberg. Springer Berlin Hei-
delberg.
Falcone, Y., Krsti
´
c, S., Reger, G., and Traytel, D. (2018). A
taxonomy for classifying runtime verification tools. In
Colombo, C. and Leucker, M., editors, Runtime Verifi-
cation, pages 241–262, Cham. Springer International
Publishing.
Lal, A., Kidd, N., Reps, T., and Touili, T. (2007). Abstract
error projection. In Proceedings of the 14th Interna-
tional Conference on Static Analysis, SAS’07, pages
200–217, Berlin, Heidelberg. Springer-Verlag.
Reps, T., Lal, A., and Kidd, N. (2007). Program analy-
sis using weighted pushdown systems. In Arvind, V.
and Prasad, S., editors, FSTTCS 2007: Foundations
of Software Technology and Theoretical Computer
Science, pages 23–51, Berlin, Heidelberg. Springer
Berlin Heidelberg.
Vardi, M. Y. (2007). Automata-theoretic model checking
revisited. In Proceedings of the 8th International Con-
ference on Verification, Model Checking, and Abstract
Interpretation, VMCAI’07, pages 137–150, Berlin,
Heidelberg. Springer-Verlag.
Wood, G. (2014). Ethereum: A secure decentralised gen-
eralised transaction ledger. Ethereum Project Yellow
Paper, 151:1–32.
MODELSWARD 2020 - 8th International Conference on Model-Driven Engineering and Software Development
248