An Automatic Encoding from VeriFast Predicates into Implicit Dynamic Frames
نویسندگان
چکیده
VeriFast is a symbolic-execution-based verifier, based on separation logic specifications. Chalice is a verifier based on verification condition generation, which employs specifications in implicit dynamic frames. Recently, theoretical work has shown how the cores of these two verification logics can be formally related. However, the mechanisms for abstraction in the two tools are not obviously comparable; VeriFast employs parameterised recursive predicates in specifications, while Chalice employs recursive predicates without parameters, along with heapdependent abstraction functions. In this paper, we show how to relate a subset of VeriFast, including many common uses of separation logic recursive predicates, to the implicit dynamic frames approach. In particular, we present a prototype tool which can translate a class of VeriFast examples into Chalice examples. Our tool performs several semantic analyses of predicate definitions, and determines which of a selection of novel techniques can be applied to infer appropriate predicate and function definitions, as well as corresponding code instrumentation in a generated program. The tool is automatic, and produces programs which can themselves be directly handled by the automatic Boogie/Z3-based Chalice verifier.
منابع مشابه
ETH Library Verification Condition Generation for Permission Logics with Abstraction Functions
Abstract predicates are the primary abstraction mechanism for program logics based on access permissions, such as separation logic and implicit dynamic frames. In addition to abstract predicates, it is often useful to also support classical abstraction functions, for instance, to encode side-effect free methods of the program and use them in specifications. However, combining abstract predicate...
متن کاملVerification of Unloadable C Modules ( Extended
Programs in unsafe languages, like C and C++, may dynamically load and unload modules. For example, some operating system kernels support dynamic loading and unloading of device drivers. This causes specific difficulties in the verification of such programs and modules; in particular, it must be verified that no functions or global variables from the module are used after the module is unloaded...
متن کاملVerification of Unloadable Modules
Programs in unsafe languages, like C and C++, may dynamically load and unload modules. For example, some operating system kernels support dynamic loading and unloading of device drivers. This causes specific difficulties in the verification of such programs and modules; in particular, it must be verified that no functions or global variables from the module are used after the module is unloaded...
متن کاملThe Relationship between Separation Logic and Implicit Dynamic Frames
Separation logic is a concise method for specifying programs that manipulatedynamically allocated storage. Partially inspired by separation logic, Implicit DynamicFrames has recently been proposed, aiming at first-order tool support. In this paper,we precisely connect the semantics of these two logics. We define a logic whose syntaxsubsumes both that of a standard separation log...
متن کاملSimulation of Store Separation using Low-cost CFD with Dynamic Meshing
The simulation of the store separation using the automatic coupling of dynamic equations with flow aerodynamics is addressed. The precision and cost (calculation time) were considered as comparators. The method used in the present research decreased the calculation cost while limiting the solution error within a specific and tolerable interval. The methods applied to model the aerodynamic force...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2013