scholarly journals Verified Software Units

Author(s):  
Lennart Beringer

AbstractModularity - the partitioning of software into units of functionality that interact with each other via interfaces - has been the mainstay of software development for half a century. In case of the C language, the main mechanism for modularity is the compilation unit / header file abstraction. This paper complements programmatic modularity for C with modularity idioms for specification and verification in the context of Verifiable C, an expressive separation logic for CompCert . Technical innovations include (i) abstract predicate declarations – existential packages that combine Parkinson & Bierman’s abstract predicates with their client-visible reasoning principles; (ii) residual predicates, which help enforcing data abstraction in callback-rich code; and (iii) an application to pure (Smalltalk-style) objects that connects code verification to model-level reasoning about features such as subtyping, self, inheritance, and late binding. We introduce our techniques using concrete example modules that have all been verified using the Coq proof assistant and combine to fully linked verified programs using a novel, abstraction-respecting component composition rule for Verifiable C.

Author(s):  
Yang Gao ◽  
◽  
Xia Yang ◽  
Wensheng Guo ◽  
Xiutai Lu

MILS partition scheduling module ensures isolation of data between different domains completely by enforcing secure strategies. Although small in size, it involves complicated data structures and algorithms that make monolithic verification of the scheduling module difficult using traditional verification logic (e.g., separation logic). In this paper, we simplify the verification task by dividing data representation and data operation into different layers and then to link them together by composing a series of abstraction layers. The layered method also supports function calls from higher implementation layers into lower abstraction layers, allowing us to ignore implementation details in the lower implementation layers. Using this methodology, we have verified a realistic MILS partition scheduling module that can schedule operating systems (Ubuntu 14.04, VxWorks 6.8 and RTEMS 11.0) located in different domains. The entire verification has been mechanized in the Coq Proof Assistant.


Author(s):  
RALF JUNG ◽  
ROBBERT KREBBERS ◽  
JACQUES-HENRI JOURDAN ◽  
ALEŠ BIZJAK ◽  
LARS BIRKEDAL ◽  
...  

Iris is a framework for higher-order concurrent separation logic, which has been implemented in the Coq proof assistant and deployed very effectively in a wide variety of verification projects. Iris was designed with the express goal of simplifying and consolidating the foundations of modern separation logics, but it has evolved over time, and the design and semantic foundations of Iris itself have yet to be fully written down and explained together properly in one place. Here, we attempt to fill this gap, presenting a reasonably complete picture of the latest version of Iris (version 3.1), from first principles and in one coherent narrative.


2021 ◽  
Vol 5 (ICFP) ◽  
pp. 1-29
Author(s):  
Lars Birkedal ◽  
Thomas Dinsdale-Young ◽  
Armaël Guéneau ◽  
Guilhem Jaber ◽  
Kasper Svendsen ◽  
...  

Separation logic specifications with abstract predicates intuitively enforce a discipline that constrains when and how calls may be made between a client and a library. Thus a separation logic specification of a library intuitively enforces a protocol on the trace of interactions between a client and the library. We show how to formalize this intuition and demonstrate how to derive "free theorems" about such interaction traces from abstract separation logic specifications. We present several examples of free theorems. In particular, we prove that a so-called logically atomic concurrent separation logic specification of a concurrent module operation implies that the operation is linearizable. All the results presented in this paper have been mechanized and formally proved in the Coq proof assistant using the Iris higher-order concurrent separation logic framework.


2015 ◽  
Vol 25 (5) ◽  
pp. 1040-1070 ◽  
Author(s):  
JEREMY AVIGAD ◽  
KRZYSZTOF KAPULKIN ◽  
PETER LEFANU LUMSDAINE

Working in homotopy type theory, we provide a systematic study of homotopy limits of diagrams over graphs, formalized in the Coq proof assistant. We discuss some of the challenges posed by this approach to the formalizing homotopy-theoretic material. We also compare our constructions with the more classical approach to homotopy limits via fibration categories.


2013 ◽  
Vol 756-759 ◽  
pp. 1860-1864
Author(s):  
Yao Wen Xia

Software development method based on component is currently a popular software production technology, its core around the component development and assembly technology. But how to combine the practical application requirements implementation based on component composition software development process is a worth studying further. According to the development of component technology, put forward a kind of network learning platform development framework based on component assembly, and study the website of component development and assembly method, apply this technology to the development of our online learning platform, results show the effectiveness of the proposed method.


2010 ◽  
Vol 121-122 ◽  
pp. 232-236 ◽  
Author(s):  
Hong Jiang Ma ◽  
Xiang Bing Zhou ◽  
Xing Jiang Yang

Component-Based Software Development is widely used in the software development, which focus on component composition and reutilization, but some problems such as compatibility and consistency always impact on component composition. Thus, we proposed a pipeline approach for component composition, which establish pipeline management mechanisms included different workshop section, workshop , monitoring and coordination, then ontology is interposed different workshop to implement component composition. Finally, it is analyzed by application example to show that the approach is feasible.


2012 ◽  
Vol 22 (4-5) ◽  
pp. 529-573 ◽  
Author(s):  
ANDREW J. KENNEDY ◽  
DIMITRIOS VYTINIOTIS

AbstractWe show how the binary encoding and decoding of typed data and typed programs can be understood, programmed and verified with the help of question–answer games. The encoding of a value is determined by the yes/no answers to a sequence of questions about that value; conversely, decoding is the interpretation of binary data as answers to the same question scheme. We introduce a general framework for writing and verifying game-based codecs. We present games in Haskell for structured, recursive, polymorphic and indexed types, building up to a representation of well-typed terms in the simply-typed λ-calculus with polymorphic constants. The framework makes novel use of isomorphisms between types in the definition of games. The definition of isomorphisms together with additional simple properties make it easy to prove that codecs derived from games never encode two distinct values using the same code, never decode two codes to the same value and interpret any bit sequence as a valid code for a value or as a prefix of a valid code. Formal properties of the framework have been proved using the Coq proof assistant.


2013 ◽  
Vol 662 ◽  
pp. 875-878
Author(s):  
Bo Liang Liu ◽  
Ning Sun ◽  
Zhu Xiu Chen

The location of vehicle license plate is the important component of realization intelligent traffic system.While programming locaton of car license plate.Visual C++ language,a software development platform,is widely used.Matlab Compiler language is simple and easy to use and has strong ability of Graphics processing. Accordingly ,This paper presents a new method based on the Visual C++ and Matlab mixed programming of image processing,Image processing for vehicle license plate. And introduced the way to achieve application of this method in the image processing.Experimental evidence,this method has great application value.


Sign in / Sign up

Export Citation Format

Share Document