Cardinality Abstraction for Declarative Networking Applications

Declarative Networking is a recent, viable approach to make distributed programming easier, which is becoming increasingly popular in systems and networking community. It offers the programmer a declarative, rule-based language, called P2, for writing distributed applications in an abstract, yet expressive way. This approach, however, imposes new challenges on analysis and verification methods when they are applied to P2 programs. Reasoning about P2 computations is beyond the scope of existing tools since it requires handling of program states defined in terms of collections of relations, which store the application data, together with multisets of tuples, which represent communication events in-flight. In this paper, we propose a cardinality abstraction technique that can be used to analyze and verify P2 programs. It keeps track of the size of relations (together with projections thereof) and multisets defining P2 states, and provides an appropriate treatment of declarative operations, e.g., indexing, unification, variable binding, and negation. Our cardinality abstraction-based verifier successfully proves critical safety properties of a P2 implementation of the Byzantine fault tolerance protocol Zyzzyva, which is a representative and complex declarative networking application.

[1]  Amin Vahdat,et al.  Life, death, and the critical transition: finding liveness bugs in systems code , 2007 .

[2]  Manuel V. Hermenegildo,et al.  Program Development Using Abstract Interpretation (And The Ciao System Preprocessor) , 2003, SAS.

[3]  Leslie Lamport,et al.  The part-time parliament , 1998, TOCS.

[4]  Philip Levis,et al.  The design and implementation of a declarative sensor network system , 2007, SenSys '07.

[5]  Atul Singh,et al.  Using queries for distributed monitoring and forensics , 2006, EuroSys.

[6]  Patrick Cousot,et al.  Abstract Interpretation and Application to Logic Programs , 1992, J. Log. Program..

[7]  Miguel Oom Temudo de Castro,et al.  Practical Byzantine fault tolerance , 1999, OSDI '99.

[8]  Roberto Bagnara,et al.  The Parma Polyhedra Library: Toward a complete set of numerical abstractions for the analysis and verification of hardware and software systems , 2006, Sci. Comput. Program..

[9]  Nicolas Halbwachs,et al.  Automatic discovery of linear restraints among variables of a program , 1978, POPL.

[10]  Edmund M. Clarke,et al.  Counterexample-guided abstraction refinement , 2003, 10th International Symposium on Temporal Representation and Reasoning, 2003 and Fourth International Conference on Temporal Logic. Proceedings..

[11]  Maurice Bruynooghe,et al.  A Practical Framework for the Abstract Interpretation of Logic Programs , 1991, J. Log. Program..

[12]  Andreas Podelski,et al.  Terminator: Beyond Safety , 2006, CAV.

[13]  Sriram K. Rajamani,et al.  The SLAM project: debugging system software via static analysis , 2002, POPL '02.

[14]  Hassen Saïdi,et al.  Construction of Abstract State Graphs with PVS , 1997, CAV.

[15]  Peter W. O'Hearn,et al.  Scalable Shape Analysis for Systems Code , 2008, CAV.

[16]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[17]  Andrey Rybalchenko,et al.  Operational Semantics for Declarative Networking , 2009, PADL.

[18]  Antoine Mid The Octagon Abstract Domain , 2001 .

[19]  Sumit Gulwani,et al.  A combination framework for tracking partition sizes , 2009, POPL '09.

[20]  Ion Stoica,et al.  Implementing declarative overlays , 2005, SOSP '05.

[21]  David Chu,et al.  Evita raced: metacompilation for declarative networks , 2008, Proc. VLDB Endow..

[22]  Amir Pnueli,et al.  Liveness with (0, 1, infty)-Counter Abstraction , 2002, CAV.

[23]  Robin Milner,et al.  On Observing Nondeterminism and Concurrency , 1980, ICALP.

[24]  Ion Stoica,et al.  Declarative networking: language, execution and optimization , 2006, SIGMOD Conference.

[25]  Amin Vahdat,et al.  Mace: language support for building distributed systems , 2007, PLDI '07.

[26]  Pascal Van Hentenryck,et al.  Cardinality Analysis of Prolog , 1994, ILPS.

[27]  Atul Singh,et al.  BFT Protocols Under Fire , 2008, NSDI.

[28]  Amir Pnueli,et al.  Parameterized Verification with Automatically Computed Inductive Assertions , 2001, CAV.

[29]  A. Prasad Sistla,et al.  Reasoning about systems with many processes , 1992, JACM.

[30]  Patrick Cousot,et al.  A static analyzer for large safety-critical software , 2003, PLDI.

[31]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[32]  Prithwish Basu,et al.  Declarative Network Verification , 2009, PADL.

[33]  Amir Pnueli,et al.  Invisible Safety of Distributed Protocols , 2006, ICALP.

[34]  François Gobert,et al.  Towards putting abstract interpretation of prolog into practice: design, implementation, and evaluation of a tool to verify and optimise prolog programs , 2008 .

[35]  Amir Pnueli,et al.  Automatic Deductive Verification with Invisible Invariants , 2001, TACAS.

[36]  Ion Stoica,et al.  Declarative networking , 2009, Commun. ACM.

[37]  Thomas W. Reps,et al.  Revamping TVLA: Making Parametric Shape Analysis Competitive , 2007, CAV.

[38]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[39]  Henny B. Sipma,et al.  Linear Invariant Generation Using Non-linear Constraint Solving , 2003, CAV.

[40]  Dawson R. Engler,et al.  Model Checking Large Network Protocol Implementations , 2004, NSDI.

[41]  Thomas A. Henzinger,et al.  The software model checker B last : Applications to software engineering , 2007 .

[42]  Dawson R. Engler,et al.  Proceedings of the 5th Symposium on Operating Systems Design and Implementation Cmc: a Pragmatic Approach to Model Checking Real Code , 2022 .

[43]  Antoine Miné,et al.  The octagon abstract domain , 2001, High. Order Symb. Comput..

[44]  Reinhard Wilhelm,et al.  Parametric shape analysis via 3-valued logic , 1999, POPL '99.

[45]  Thomas A. Henzinger,et al.  The software model checker Blast , 2007, International Journal on Software Tools for Technology Transfer.