410 likes | 425 Views
Explore the automated generation of environment assumptions for component verification in compositional software engineering. Learn about the development, algorithms, and applications of this approach for precise verification outcomes.
E N D
Automatic Assumption Generation for Compositional Verification Dimitra Giannakopoulou (RIACS), Corina Păsăreanu (Kestrel) Automated Software Engineering NASA Ames Research Center Moffett Field, CA, USA
satisfies P? how are assumptions obtained? • Developer encodes them explicitly • Abstractions of environment, if known Component Verification • Checking component C against property P : YES: in allenvironments E : (C╞ P ) NO: in someenvironment E :¬(C╞ P ) • Typically a component is designed to satisfy its requirements in specific environments Component • Introduce environment assumption A and check: • assuming A, C╞P – assume / guarantee • E ╞ A – discharge the assumption Assumption Environment
Approach • Infer assumptions automatically • Two novel solutions developed • Algorithmic generation of assumption; knowledge of environment is notrequired • Incremental assumption computation based on counterexamples, learning and knowledge of environment
Applications • Verification produces more precise answers • true – property satisfied in all environments • false – property falsified in all environments • assumption A – property true in environments where A is true • Support for compositional verification • Property decomposition • Assumptions for assume-guarantee reasoning • Runtime monitoring of environment • assumption monitors actual environment during deployment • may trigger recovery actions • Component retrieval, sub-module construction, …
Solution 1 • in collaboration with Prof. Howard Barringer, Univ. of Manchester, UK • Giannakopoulou, D., Păsăreanu, C., and Barringer, H., “Assumption Generation for Software Component Verification”, in Proc. of the 17th IEEE International Conference on Automated Software Engineering (ASE 2002). Awards: Best paper, ACM Distinguished Paper Award
The Problem • Given component C, property P, and the interface of C with its environment, generate the weakest environment assumption A such that: assuming A, C╞ P • Weakest means that for all environments E: (E || C╞P) IFFE╞A
Implementation • Labeled Transition Systems Analyzer (LTSA) • Components modeled as labelled transition systems (LTSs) • communicate by rendezvous through shared actions • internal actions represented by action “ τ ” • Compositionalreachability analysis • hiding of internal actions • minimization w.r.t. observational equivalence • Properties also expressed as LTSs • Describe all legal behaviors • Deterministic • Completed for verification – bad behaviors lead to “error state” • Composed with components – verification is postponed until the system is “closed” • An LTS can be used as a property or an assumption
Mutual Exclusion Property: W.acquire W.enterCS E.enterCS W.enterCS W.exitCS W.release E.exitCS W.exitCS || W.exitCS E.exitCS W.enterCS W.enterCS W.exitCS E.enterCS E.enterCS E.exitCS Example Writer: || Mutex: E.acquire W.acquire W.release E.release
Property true! (all environments) Step 2: backward propagation of error with Property false! (all environments) Step 3: property extraction (subset construction and completion) Assumption Assumption Generation Step 1: composition, hiding, minimization
Composite System E.enterCS E.release E.acquire E.enterCS E.exitCS E.release E.acquire E.exitCS E.exitCS E.enterCS t E.enterCS E.exitCS E.enterCS
E.enterCS E.release E.acquire E.exitCS t E.enterCS Error Propagation (with t) E.acquire E.enterCS E.exitCS E.release E.exitCS E.enterCS E.enterCS E.exitCS
E.enterCS E.release Error Propagation (with t) E.acquire E.enterCS E.exitCS E.release E.exitCS E.enterCS E.enterCS E.exitCS
Error Propagation (with t) E.acquire E.enterCS E.exitCS E.release E.release E.exitCS E.enterCS E.enterCS E.exitCS
E.acquire, E.release E.enterCS, E.exitCS E.release E.acquire E.acquire Property Extraction E.enterCS E.acquire E.exitCS E.release E.enterCS E.exitCS E.enterCS E.release E.exitCS
E.acquire, E.release E.enterCS, E.exitCS E.release E.acquire E.acquire Generated Assumption E.enterCS E.acquire E.exitCS E.release
Ames Rover Executive • Executes flexible plans for autonomy • branching on state / temporal conditions • Multi-threaded system • communication through shared variables • synchronization through mutexes and condition variables • Systematic translation of design documents into input language of LTSA • Several synchronization issues • mutual exclusion • data races • properties specified by developer
{hiding + minimization} {hiding + minimization} Properties • First property: mutual exclusion • 426 states 18 states • assumption: 12 states • Second property: • 544 states 10 states • assumption: 6 states If the Executive thread reads the value of variable savedWakeupStruct, the ExecCondChecker thread should not read this value unless the Executive clears it first.
not displaying sink state Q1 Resulting Assumption Assumption_Property2 = Q0, Q0 = ( external.exec.lock -> Q2), Q2 = ( external.exec.unlock -> Q0 | external.savedWakeupStruct.read[1] -> Q3 | external.savedWakeupStruct.assign[0] -> Q4 | external.savedWakeupStruct.read[0] -> Q5), Q3 = ( external.savedWakeupStruct.read[1] -> Q3 | external.savedWakeupStruct.assign[0] -> Q4), Q4= ( external.exec.unlock -> Q0 | external.savedWakeupStruct.assign[0] -> Q4 | external.savedWakeupStruct.read[0] -> Q5), Q5 = ( external.savedWakeupStruct.assign[0] -> Q4 | external.savedWakeupStruct.read[0] -> Q5).
Solution 2 • in collaboration with RIACS SSRP student Jamieson Cobleigh, Univ. of Massachusetts, Amherst • Cobleigh, J.M., Giannakopoulou, D., and Pasareanu, C.S. “Learning Assumptions for Compositional Verification”, in Proc. ofthe 9th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS 2003). April 2003, Warsaw, Poland.
A satisfies P? • A M1 P • true M2 A • true M1 || M2 P The problem M1 M2 • Automate assume guarantee reasoning • Simplest assume-guarantee rule, no circularity, useful for safety properties:
Learning Our Framework Incremental Compositional Verification counterexample – strengthen assumption Model Checking false Ai 1. Ai M1 P true true P holds in M1||M2 2. true M2 Ai false real error? no yes P violated in M1||M2 counterexample – weaken assumption
Learning with L* • L* – learning algorithm by Angluin, improved by Rivest & Schapire • based on queries and counterexamples • learns an unknown regular language (U over alphabet) and produces a DFA C such that L (C) = U • constructs a sequence of DFAs C1, C2, … converging to C • needs a Teacher to answer two types of questions: • membership queries: is string sin U ? • conjectures: for a candidate DFA Ci, is L(Ci) = U ? • answers are (true) or (false + counterexample)
Characteristics: • terminates with minimal automaton C for unknown language U • each candidate Ci is smallest • any DFA consistent with table has at least as many states as Ci • |C1| < | C2| < … < |C| • produces at most n candidates, where n = |C| The L* Algorithm General method: • maintains a table that records whether strings in belong to U • makes membership queries to update it • decides to make a conjecture – uses table to build a candidate Ci • if Teacher replies true, done! • if Teacher replies false, uses counterexample to update the table
M1 M2 satisfies P? • A M1 P • true M2 A • true M1 || M2 P Learning for Assume-Guarantee Reasoning • L* learns the language of weakest assumption Aw for M1 • Alphabet = (M1P) M2 • Conjectures are intermediate assumptions Ai • Algorithm may terminate before computing Aw • Aw is not available – how do we implement the Teacher ? • Use model checking
The Teacher • Membership query: trace s • Simulate s on M1 || Perr • If it leads to error state, reply false ( s L(Aw) ) • Otherwise, reply true ( s L(Aw) ) • Conjecture:Ai • Oracle 1: performs (Step 1) Ai M1 P • If false (with counterexample c): provide c to L* (assumption is too weak) • If true: forward Ai to Oracle 2 • Oracle 2: performs (Step 2) true M2 Ai • If true: done! (P holds on M1 || M2) • If false (with counterexample c): forward c to analysis • Counterexample analysis • Simulate c on M1 || Perr • If it leads to the error state: done! (P does not hold on M1 || M2) • Otherwise, provide c to L* (assumption is too strong)
Input: Output: out send send in ack ack Example Ordererr: in out in out • We check: true Input || Output Order • M1 = Input, M2 = Output, Property = Order • Assumption’s alphabet: {send, out, ack}
Output: out send ack Yes! lL(Aw)? Membership Queries Input: Ordererr: in send in out in out ack Simulate l on Input || Ordererr S = set of prefixes E = set of suffixes
Output: out send ack Yes! lL(Aw)? Membership Queries Input: Ordererr: in send in out in out ack Simulate l on Input || Ordererr S = set of prefixes E = set of suffixes
Output: out send ack No! <out>L(Aw)? Membership Queries Input: Ordererr: in send in out in out ack Simulate<out> on Input || Ordererr S = set of prefixes E = set of suffixes
Output: out send ack No! <out>L(Aw)? Membership Queries Input: Ordererr: in send in out in out ack Simulate<out> on Input || Ordererr S = set of prefixes E = set of suffixes
Output: out send ack Membership Queries Input: Ordererr: in send in out in out ack true false true false false false S = set of prefixes E = set of suffixes
Output: out send ack ack send Candidate Construction Input: Ordererr: in send in out in out ack 2 states – error state not added to assumption true false Assumption A1: true false false false S = set of prefixes E = set of suffixes
Input: Output: out send send in Ordererr: in ack ack out in out Return to L*: cS=send,ack Counterexample: c=in,send,ack,in • Oracle 1: • A1 Input Order A1: Queries ack ack send A2: send • Oracle 2: • true Output A2 True • Oracle 1: • A2 Input Order True out • property Order holds • on Input || Output send Conjectures
Output’: out send send Ordererr: in ack out in out A2: send A1: Counterexample: c=send,send,out Oracle 2: true Output’ A2 out,send ack A4: A3: send Not a real error! Simulate cS=c on M1||Ordererr out send Return c to L* ack ack out send ack send send send ack ack,out,send ack,out,send • property Order holds • on Input || Output’ Another Example Input: send in ack
Comparisons • Pentium III, 500 MHz, 1 Gb of memory • check P on M1 || M2 • (3630 sts, 34653 trans), 0.535 secs. • using weakest assumption • 6 states • generation: (544 sts, 6314 trans), 24.623 secs • discharging assumption: (32 sts, 197 trans), 0.504 secs • using incremental assume-guarantee reasoning • 5 states • (max: 464 sts, 2500 trans), 8.639 secs
Related Work • Interface automata (de Alfaro, Henzinger) • component compatibility • Assume-guarantee frameworks • MOCHA, Calvin (extended static checking of Java), … • Interfaces for Compositional Reachability Analysis • Graf-Steffen-Lüttgen, Cheung-Kramer, Krimm-Mounier • Controller synthesis • Interface equation / sub-module construction • Merlin-Bochmann, Shields, Parrow, Larsen-Xinxin • Synthesis of deadlock-free connectors • Inverardi-Scriboni-Wolf-Yankelevich
Conclusions & Extensions • Model checking components as open systems • Assumptions can be further analyzed • do components that implement them, or the resulting system, have any useful behavior? • Incremental framework is general • relies on standard features of model checkers • experimenting with JPF • More case studies • Learning box – improve / change algorithm? • Extended properties (deadlock, liveness, fairness) • Timed systems
Contact {dimitra, pcorina} @ email.arc.nasa.gov http://ase.arc.nasa.gov/
Contact {dimitra, pcorina} @ email.arc.nasa.gov http://ase.arc.nasa.gov/