210 likes | 222 Views
This project aims to synthesize model-based generators that are both efficient and verified. It focuses on the translation of Stateflow meta-model to C code using various algorithm theories and problem reduction techniques.
E N D
Forges: Synthesizing Verified Generators Kestrel Institute PIs: Cordell Green, John Anton CSs: Lindsay Errington, Doug Smith, Alessandro Coglio, Stephen Westfold, Jim McDonald
Objective: synthesize model-based generators! • Produce generators quicker! • Produce generators that are verified!
Stateflow model Stateflow meta-model Meta Generator Generator translation specification C meta-model C code Overview design knowledge
Taxonomy of Algorithm Theories Problem Theory (D|I R|O) generate-and-test Constraint Satisfaction (R = set of maps) Global Structure (R = set + recursive partition) global search binary search backtrack branch-and-bound Problem Reduction Structure Local Structure (R = set + relation) genetic algorithms Linear Programming simplex method interior point primal dual Complement Reduction sieves Integer Linear Programming 0-1 methods Local Structure (R = set + relation) local search hill climbing simulated annealing tabu search Divide-and-Conquer divide-and-conquer GS-CSP (R = recursively partitioned set of maps) Problem Reduction Generators dynamic programming branch-and-bound game tree search Network Flow specialized simplex Ford-Fulkerson Local Poset Structure (R = set + partial order) GS-Horn-CSP (Horn-like Constraints) constraint propagation Monotone Deflationary Function fixed point iteration Transportation NW algorithm Local Semilattice Structure (R = semilattice) Assignment Problem Hungarian method
What’s a meta-model? • A language specification! • Static semantics • What are well formed programs in the language • Dynamic semantics • How programs behave
Elements of a Static Semantics • Abstract syntax • Characterization of well-formed terms • Type theory • Vanderbilt has a static-semantics UML meta-model for Stateflow • We translate UML into specifications in logic
Stateflow static semantics sort Event, State, Transition, Action, … op src : Transition State op dst : Transition State op event : Transition Event op action : Transition Action op children : State Or [State] | And [State] | None op parent : State State
Static semantics (cont’d) op active : State Bool active(s) parent(s) ≠undefactive(parent(s)) “the ancestors of an active state are active”
Dynamic Semantics • Many formalisms to choose from • Denotational, axiomatic, … • Action Semantics (Mosses) • Structural Operational Semantics (Plotkin) • Natural Semantics (Kahn) (used in Centaur) • Our choice: • Abstract State Machines (ASMs) aka Evolving Algebras (Gurevich)
What are Abstract State Machines? • Algebraic theories. • Sorts, operators, axioms • Rules for conditionally rewriting theories. • if b then f(t1,…,tn) := t
ASM Example sort Node op left : Node Node op right : Node Node op node : Node if left(node) undefthen left(node) := left(left(node)) right(node) := right(left(node))
Why ASMs? • ASMs support: • abstraction • refinement • composition • Comprehensible • To be shared with other MoBIES participants.
a/b b entry: f(); entry: g(); Stateflow dynamic semantics • Stateflow is event driven
Dynamic semantics (cont’d) • Event handling can be pre-empted • Need a stack! sort Frame = ExecAction | EndTransTransition | … sort Stack = [Frame] op stack : Stack startTrans(s : State, t : Transition) = active(s) := false stack := (Execaction(t)) :: (EndTranst) :: (tail stack)
Verifiability: when is the translation correct? • Conventional notion: • Program p denotes a function or relation [p] • Translation correct when the denotation is preserved: [p] = [trans(p)] • Conventional notion doesn’t work: • Stateflow diagrams are reactive – not functional – they may never terminate!
Bisimulation! • A run of a machine on a program p is a sequence of states. • We observe only the events. • p and trans(p) are equivalent when we observe the same behaviour • Formally we define a bisimulation relation between the states of p and trans(p)
C Stateflow p trans(p) e e q q’ Bisimulation … and vice versa
Bisimulation • What we won’t do: • Exhibit the bisimulation relation • What we will do: • Ensure that the translation preserves bisimulation
Status • Meta-modeling • Translation theories – getting started
Conclusions • Produce generators quicker! • By reuse of language meta-models • By capturing and exploiting design knowledge • Produce generators that are verified! • Translation preserves bisumulation
Tasks ahead • Completion of meta-models • Validation of meta-models • Abstraction of design theories