Abstract
This article presents \(\mathsf {Pardinus}\), an extension of the popular \(\mathsf {Kodkod}\) relational model finder with linear temporal logic (including past operators), to simplify the analysis of dynamic systems. \(\mathsf {Pardinus}\) includes a SAT-based bounded-model checking engine and an SMV-based complete model checking engine, both allowing iteration through the different instances (or counter-examples) of a specification. It also supports a decomposed parallel analysis strategy that improves the efficiency of both analysis engines on commodity multi-core machines.
Similar content being viewed by others
Notes
In practice, \(\mathsf {Kodkod}\) and \(\mathsf {Pardinus}\) are Java libraries and problems are defined programatically.
\(\mathsf {Kodkod}\) (and \(\mathsf {Pardinus}\)) also have some limited support for integers which we omit in this presentation.
The section is not used as its restricted syntax makes it a complex target for generation from \(\mathsf {Pardinus}\).
Remark that we use mathematical symbols rather than concrete SMV syntax for better readability. However, future (\({{\,\mathrm{{\mathsf {X}}}\,}}\), \({{\,\mathrm{{\mathsf {G}}}\,}}\), \({{\,\mathrm{{\mathsf {F}}}\,}}\), \(\mathbin {{\mathsf {U}}}\) and \(\mathbin {{\mathsf {R}}}\)) and past (\({{\,\mathrm{{\mathsf {Y}}}\,}}\), \({{\,\mathrm{{\mathsf {H}}}\,}}\), \({{\,\mathrm{{\mathsf {O}}}\,}}\), \(\mathbin {{\mathsf {S}}}\) and \(\mathbin {{\mathsf {T}}}\)) temporal operators follow the standard textual notation also used in \(\mathsf {SMV}\).
For instance, \(\mathsf {Pardinus}\) also implements an operation to change a segment of a path, which is used by the \(\mathsf {Alloy~6}\) \(\mathsf {Analyzer}\) to change the initial state and for forking paths.
Although omitted for simplicity, bounding expressions may also refer to concrete atoms as regular constant bounds. These are ignored during symmetry breaking.
The complete results are available online at https://bit.ly/2YF6hWL, and scripts to reproduce the results available at the \(\mathsf {Pardinus}\) repository.
References
Bagheri, H., Malek, S.: Titanium: efficient analysis of evolving Alloy specifications. In: SIGSOFT FSE, pp. 27–38. ACM (2016)
Benedetti, M., Cimatti, A.: Bounded model checking for past LTL. In: TACAS, LNCS, vol. 2619, pp. 18–33. Springer (2003)
Biere, A., Cimatti, A., Clarke, E.M., Zhu, Y.: Symbolic model checking without BDDs. In: TACAS, LNCS, vol. 1579, pp. 193–207. Springer (1999)
Bozzano, M., Cavada, R., Cimatti, A., Dorigatti, M., Griggio, A., Mariotti, A., Micheli, A., Mover, S., Roveri, M., Tonetta, S.: nuXmv 2.0.0 User Manual. FBK (2019). https://es.fbk.eu/tools/nuxmv/downloads/nuxmv-user-manual.pdf
Brunel, J., Chemouil, D., Cunha, A., Macedo, N.: The Electrum Analyzer: model checking relational first-order temporal specifications. In: ASE, pp. 884–887. ACM (2018)
Brunel, J., Chemouil, D., Cunha, A., Macedo, N.: Simulation under arbitrary temporal logic constraints. In: F-IDE@FM, EPTCS, vol. 310, pp. 63–69 (2019)
Castillos, K.C., Waeselynck, H., Wiels, V.: Show me new counterexamples: a path-based approach. In: ICST, pp. 1–10. IEEE (2015)
Cavada, R., Cimatti, A., Dorigatti, M., Griggio, A., Mariotti, A., Micheli, A., Mover, S., Roveri, M., Tonetta, S.: The nuXmv symbolic model checker. In: CAV, LNCS, vol. 8559, pp. 334–342. Springer (2014)
Cavada, R., Cimatti, A., Jochim, C.A., Keighren, G., Olivetti, E., Pistore, M., Roveri, M., Tchaltsev, A.: NuSMV 2.6 User Manual. FBK-IRST (2010). http://nusmv.fbk.eu/NuSMV/userman/v26/nusmv.pdf
Chang, E., Roberts, R.: An improved algorithm for decentralized extrema-finding in circular configurations of processes. Commun. ACM 22(5), 281–283 (1979)
Chang, F.S., Jackson, D.: Symbolic model checking of declarative relational models. In: ICSE, pp. 312–320. ACM (2006)
Chechik, M., Gurfinkel, A.: A framework for counterexample generation and exploration. Int. J. Softw. Tools Technol. Transf. 9(5–6), 429–445 (2007)
Claessen, K., Sörensson, N.: New techniques that improve MACE-style finite model finding. In: CADE-19 Workshop on Model Computation (2003)
Clarisó, R., Cabot, J.: Diverse scenario exploration in model finders using graph kernels and clustering. In: ABZ, LNCS, vol. 12071. Springer (2020)
Crawford, J.M., Ginsberg, M.L., Luks, E.M., Roy, A.: Symmetry-breaking predicates for search problems. In: KR, pp. 148–159. Morgan Kaufmann (1996)
Cunha, A.: Bounded model checking of temporal formulas with Alloy. In: ABZ, LNCS, vol. 8477, pp. 303–308. Springer (2014)
Cunha, A., Macedo, N., Guimarães, T.: Target oriented relational model finding. In: FASE, LNCS, vol. 8411, pp. 17–31. Springer (2014)
Demri, S., Goranko, V., Lange, M.: Temporal Logics in Computer Science: Finite-State Systems. Cambridge Tracts in Theoretical Computer Science, Cambridge University Press, Cambridge (2016). https://doi.org/10.1017/CBO9781139236119
Dominguez, A.L.J., Day, N.A.: Generating Multiple Diverse Counterexamples for an EFSM. Technical Report. CS-2013-06. University of Waterloo (2013)
Eisner, C., Fisman, D., Havlicek, J., Lustig, Y., McIsaac, A., Campenhout, D.V.: Reasoning with temporal logic on truncated paths. In: CAV, LNCS, vol. 2725, pp. 27–39. Springer (2003)
Frias, M.F., Galeotti, J.P., Pombo, C.L., Aguirre, N.: DynAlloy: upgrading Alloy with actions. In: ICSE, pp. 442–451. ACM (2005)
Ganov, S.R., Khurshid, S., Perry, D.E.: Annotations for Alloy: automated incremental analysis using domain specific solvers. In: ICFEM, LNCS, vol. 7635, pp. 414–429. Springer (2012)
Hölldobler, S., Manthey, N., Nguyen, V.H., Stecklina, J., Steinke, P.: A short overview on modern parallel SAT-solvers. In: ICACSIS, pp. 201–206. IEEE (2011)
Holzmann, G.J.: The model checker SPIN. IEEE Trans. Softw. Eng. 23(5), 279–295 (1997)
Jackson, D.: Software Abstractions: Logic, Language, and Analysis, 2nd edn. MIT Press, Cambridge (2016)
Kromodimoeljo, S.: Controlling the generation of multiple counterexamples in LTL model checking. PhD Thesis, The University of Queensland (2014)
Lamport, L.: The temporal logic of actions. ACM Trans. Program. Lang. Syst. 16(3), 872–923 (1994)
Lamport, L.: Specifying Systems: The \(\rm TLA^+\) Language and Tools for Hardware and Software Engineers. Addison-Wesley, Boston (2002)
Leuschel, M., Butler, M.J.: ProB: a model checker for B. In: FME, LNCS, vol. 2805, pp. 855–874. Springer (2003)
Macedo, N., Brunel, J., Chemouil, D., Cunha, A., Kuperberg, D.: Lightweight specification and analysis of dynamic systems with rich configurations. In: SIGSOFT FSE, pp. 373–383. ACM (2016)
Macedo, N., Cunha, A.: Alloy meets \({{\rm TLA}}^{+}\): an exploratory study. CoRR (2016).abs/1603.03599
Macedo, N., Cunha, A., Guimarães, T.: Exploring scenario exploration. In: FASE, LNCS, vol. 9033, pp. 301–315. Springer (2015)
Macedo, N., Cunha, A., Pessoa, E.: Exploiting partial knowledge for efficient model analysis. In: ATVA, LNCS, vol. 10482, pp. 344–362. Springer (2017)
McCune, W.: Prover9 and Mace4 (2005–2010). http://www.cs.unm.edu/~mccune/prover9/
Meng, B., Reynolds, A., Tinelli, C., Barrett, C.W.: Relational constraint solving in SMT. In: CADE, LNCS, vol. 10395, pp. 148–165. Springer (2017)
Montaghami, V., Rayside, D.: Extending Alloy with partial instances. In: ABZ, LNCS, vol. 7316, pp. 122–135. Springer (2012)
Near, J.P., Jackson, D.: An imperative extension to Alloy. In: ASM, LNCS, vol. 5977, pp. 118–131. Springer (2010)
Nelson, T., Saghafi, S., Dougherty, D.J., Fisler, K., Krishnamurthi, S.: Aluminum: principled scenario exploration through minimality. In: ICSE, pp. 232–241. IEEE (2013)
Plagge, D., Leuschel, M.: Seven at one stroke: LTL model checking for high-level specifications in B, Z, CSP, and more. Int. J. Softw. Tools Technol. Transf. 12(1), 9–21 (2010)
Ponzio, P., Aguirre, N., Frias, M.F., Visser, W.: Field-exhaustive testing. In: SIGSOFT FSE, pp. 908–919. ACM (2016)
Porncharoenwase, S., Nelson, T., Krishnamurthi, S.: CompoSAT: specification-guided coverage for model finding. In: FM, LNCS, vol. 10951, pp. 568–587. Springer (2018)
Reynolds, A., Tinelli, C., Goel, A., Krstic, S.: Finite model finding in SMT. In: CAV, LNCS, vol. 8044, pp. 640–655. Springer (2013)
Rosner, N., Pombo, C.G.L., Aguirre, N., Jaoua, A., Mili, A., Frias, M.F.: Parallel bounded verification of Alloy models by TranScoping. In: VSTTE, LNCS, vol. 8164, pp. 88–107. Springer (2013)
Rosner, N., Siddiqui, J.H., Aguirre, N., Khurshid, S., Frias, M.F.: Ranger: parallel analysis of Alloy models by range partitioning. In: ASE, pp. 147–157. IEEE (2013)
Rozier, K.Y., Vardi, M.Y.: LTL satisfiability checking. STTT 12(2), 123–137 (2010)
Saeki, T., Ishikawa, F., Honiden, S.: Automatic generation of potentially pathological instances for validating Alloy models. In: ICFEM, LNCS, vol. 10009, pp. 41–56 (2016)
Saghafi, S., Danas, R., Dougherty, D.J.: Exploring theories with a model-finding assistant. In: CADE, LNCS, vol. 9195, pp. 434–449. Springer (2015)
Serna, J., Day, N.A., Farheen, S.: DASH: a new language for declarative behavioural requirements with control state hierarchy. In: RE Workshops, pp. 64–68. IEEE Computer Society (2017)
Shlyakhter, I.: Generating effective symmetry-breaking predicates for search problems. Electron. Notes Discrete Math. 9, 19–35 (2001)
Siegel, A., Santomauro, M., Dyer, T., Nelson, T., Krishnamurthi, S.: Prototyping formal methods tools: a protocol analysis case study. In: Protocols, Logic, and Strands: Essays Dedicated to Joshua Guttman on the Occasion of his 66.66th Birthday, LNCS. Springer (2021).
Sullivan, A., Marinov, D., Khurshid, S.: Solution enumeration abstraction: a modeling idiom to enhance a lightweight formal method. In: ICFEM, LNCS, vol. 11852, pp. 336–352. Springer (2019)
Sullivan, A., Wang, K., Zaeem, R.N., Khurshid, S.: Automated test generation and mutation testing for Alloy. In: ICST, pp. 264–275. IEEE (2017)
Torlak, E., Jackson, D.: Kodkod: a relational model finder. In: TACAS, LNCS, vol. 4424, pp. 632–647. Springer (2007)
Uzuncaova, E., Khurshid, S.: Constraint prioritization for efficient analysis of declarative models. In: FM, LNCS, vol. 5014, pp. 310–325. Springer (2008)
Vakili, A., Day, N.A.: Temporal logic model checking in Alloy. In: ABZ, LNCS, vol. 7316, pp. 150–163. Springer (2012)
Zhang, J., Zhang, H.: SEM: a system for enumerating models. In: IJCAI, pp. 298–303. Morgan Kaufmann (1995)
Zheng, G., Bagheri, H., Rothermel, G., Wang, J.: Platinum: reusing constraint solutions in bounded analysis of relational logic. In: FASE, LNCS, vol. 12076, pp. 29–52. Springer (2020)
Acknowledgements
Work financed by the European Regional Development Fund (ERDF) through the Operational Programme for Competitiveness and Internationalisation (COMPETE2020) and by National Funds through the Portuguese funding agency, Fundação para a Ciência e a Tecnologia (FCT) within Project POCI-01-0145-FEDER-016826, and the French Research Agency Project FORMEDICIS ANR-16-CE25-0007.
Author information
Authors and Affiliations
Corresponding author
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
Springer Nature or its licensor holds exclusive rights to this article under a publishing agreement with the author(s) or other rightsholder(s); author self-archiving of the accepted manuscript version of this article is solely governed by the terms of such publishing agreement and applicable law.
About this article
Cite this article
Macedo, N., Brunel, J., Chemouil, D. et al. Pardinus: A Temporal Relational Model Finder. J Autom Reasoning 66, 861–904 (2022). https://doi.org/10.1007/s10817-022-09642-2
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10817-022-09642-2