Simcheck: a Contract Type System for Simulink


Roy, P., Shankar, N. SimCheck: a contract type system for Simulink. Innovations Syst Softw Eng 7, 73–83 (2011).


Matlab Simulink™ is a member of a class of visual languages that are used for modeling and simulating physical and cyber-physical system. A Simulink model consists of blocks with input and output ports connected using links that carry signals. We provide a contract-based type system of Simulink with annotations and dimensions/units associated with ports and links. These contract types can capture invariants on signals as well as relations between signals. We define a contract-based verifier that checks the well formedness of Simulink blocks with respect to these contracts. This verifier generates proof obligations that are solved by SRI’s Yices solver for satisfiability modulo theories (SMT). This translation can be used to detect basic type errors and violation of contracts, demonstrate counterexamples, generate test cases, or prove the absence of contract-based type errors. Our work is an initial step toward the symbolic analysis of Matlab Simulink models.

Keywords: Matlab, Simulink, Satisfiability modulo theories (SMT), Dependent types, Units, Dimension checking, Contract-based type-checking

Read more from SRI