Dorel Lucanu - Profile on Academia.edu (original) (raw)
Papers by Dorel Lucanu
On bisimimulation in hiddenCCS
Classes and Objects in Hidden Algebra
A Logical Foundation of the OWL Languages
The k primer (version 3.3)
On Abstractions for Timing Analysis in the\ mathbb {K} Framework
ABSTRACT Low-level WCET analysis consists of two subproblems: the path analysis and the processor... more ABSTRACT Low-level WCET analysis consists of two subproblems: the path analysis and the processor behavior analysis. A successful approach uses an integer linear programming (ILP) solution for the former and an abstract interpretation (AI) solution for the latter. This paper advocates, for this particular ILP + AI approach, the use of a specialized rewrite-based framework, called 𝕂. We define this methodology in 𝕂, starting from the formal executable semantics of the language and the concrete, parametric, description of the underlying micro-architecture (i.e. instruction cache). The latter is designed to facilitate specification reusability in the abstraction definition. We also analyze the definitional methodology of the ILP + AI approach, from the design perspective.
A new method is introduced to concurrently compose an object from already verified objects. The m... more A new method is introduced to concurrently compose an object from already verified objects. The most important new feature of our method is that the verification of the composed object can be done by re-using the verifications of component objects. That is, the verification of composed object is also composable. This is not always true. We can show this can be achieved under some practically reasonable restrictions.
The K primer (version 2.5)
CinK–an exercise on how to think in K
The K primer (version 2.5)
Language-Independent Program Verification Using Symbolic Execution
K Semantics for OCL-a Proposal for a Formal Definition for OCL
Model checking recursive programs interacting via the heap
Science of Computer Programming, 2015
ABSTRACT Almost all modern imperative programming languages include operations for dynamically ma... more ABSTRACT Almost all modern imperative programming languages include operations for dynamically manipulating the heap, for example by allocating and deallocating objects, and by updating reference fields. In the presence of recursive procedures and local variables, the interactions of a program with the heap can become rather complex, as an unbounded number of objects can be allocated either on the call stack using local variables, or, anonymously, on the heap using reference fields. As such, a static analysis for recursive programs with dynamic manipulation of the heap is, in general, undecidable.
Bounded Model Checking of Recursive Programs with Pointers in K
Lecture Notes in Computer Science, 2013
Electronic Proceedings in Theoretical Computer Science, 2012
Almost all modern imperative programming languages include operations for dynamically manipulatin... more Almost all modern imperative programming languages include operations for dynamically manipulating the heap, for example by allocating and deallocating objects, and by updating reference fields. In the presence of recursive procedures and local variables the interactions of a program with the heap can become rather complex, as an unbounded number of objects can be allocated either on the call stack using local variables, or, anonymously, on the heap using reference fields. As such a static analysis is, in general, undecidable.
Behavioral Rewrite Systems and Behavioral Productivity
Lecture Notes in Computer Science, 2014
Lecture Notes in Computer Science, 2012
We propose a formal approach for the definition of domainspecific modelling languages (dsmls). Th... more We propose a formal approach for the definition of domainspecific modelling languages (dsmls). The approach uses basic Model-Driven Engineering artifacts for defining a dsml's syntax (using metamodels) and its operational semantics (using model transformations). We give formal meanings to these artifacts by mapping them to the K semantic framework. The mapping is implemented in the Rascal metaprogramming language. Since the resulting K definitions are executable, one obtains an execution engine for dsmls and gains acces to K's formal analysis tools. We illustrate the approach on xspem, a language for describing the execution of tasks constrained by time, precedence, and resources.
Lecture Notes in Computer Science, 2013
We propose a language-independent symbolic execution framework for languages endowed with a forma... more We propose a language-independent symbolic execution framework for languages endowed with a formal operational semantics based on term rewriting. Starting from a given definition of a language, a new language definition is automatically generated, which has the same syntax as the original one but whose semantics extends data domains with symbolic values and adapts semantical rules to deal with these values. Then, the symbolic execution of concrete programs is the execution of programs with the new symbolic semantics, on symbolic input data. We prove that the symbolic execution thus defined has the properties naturally expected from it. A prototype implementation of our approach was developed in the K Framework. We demonstrate the genericity of our tool by instantiating it on several languages, and show how it can be used for the symbolic execution and model checking of several programs. Id ::= domain of identifiers Int ::= domain of integer numbers (including operations) Bool ::= domain of boolean constants (including operations) AExp :: = Int | AExp / AExp [strict] | Id | AExp * AExp [strict] | (AExp) | AExp + AExp [strict] BExp :: = Bool | (BExp) | AExp <= AExp [strict] | not BExp [strict] | BExp and BExp [strict(1)] Stmt :: = skip | { Stmt } | Stmt ; Stmt | Id := AExp | while BExp do Stmt | if BExp then Stmt else Stmt [strict(1)] Code ::= Id | Int | Bool | AExp | BExp | Stmt | Code Code
Electronic Notes in Theoretical Computer Science, 2014
We give a formal definition to a significant subset of the Object Constraint Language (ocl) in th... more We give a formal definition to a significant subset of the Object Constraint Language (ocl) in the K framework. The chosen subset includes the usual arithmetical, Boolean (including quantifiers), and string expressions; collection expressions (including iterators and navigation); and pre/post conditions for methods. Being executable, our definition provides us, for free, with an interpreter for the chosen subset of ocl. It can be used for free in K definitions of languages having ocl as a component We illustrate some of the advantages of K by comparing our semantical definition of ocl with the official semantics from the language's standard. We also report on a tool implementing our definition that users can try online.
Lecture Notes in Computer Science, 2014
The proof scores method is an interactive verification method in algebraic specification that com... more The proof scores method is an interactive verification method in algebraic specification that combines manual proof planning and reduction (automatic inference by rewriting). The proof score approach to software verification coordinates efficiently human intuition and machine automation. We are interested in applying these ideas to transition systems, more concretely, in developing the so-called OTS/CafeOBJ method, a modelling, specification, and verification method of observational transition systems. In this paper we propose a methodology that aims at developing automatically proof scores according to the rules of an entailment system. The proposed deduction rules include a set of generic rules, which can be found in other proof systems as well, together with a set of rules specific to our working context. The methodology is exhibited on the example of the alternating bit protocol, where the unreliability of channels is faithfully specified.
On bisimimulation in hiddenCCS
Classes and Objects in Hidden Algebra
A Logical Foundation of the OWL Languages
The k primer (version 3.3)
On Abstractions for Timing Analysis in the\ mathbb {K} Framework
ABSTRACT Low-level WCET analysis consists of two subproblems: the path analysis and the processor... more ABSTRACT Low-level WCET analysis consists of two subproblems: the path analysis and the processor behavior analysis. A successful approach uses an integer linear programming (ILP) solution for the former and an abstract interpretation (AI) solution for the latter. This paper advocates, for this particular ILP + AI approach, the use of a specialized rewrite-based framework, called 𝕂. We define this methodology in 𝕂, starting from the formal executable semantics of the language and the concrete, parametric, description of the underlying micro-architecture (i.e. instruction cache). The latter is designed to facilitate specification reusability in the abstraction definition. We also analyze the definitional methodology of the ILP + AI approach, from the design perspective.
A new method is introduced to concurrently compose an object from already verified objects. The m... more A new method is introduced to concurrently compose an object from already verified objects. The most important new feature of our method is that the verification of the composed object can be done by re-using the verifications of component objects. That is, the verification of composed object is also composable. This is not always true. We can show this can be achieved under some practically reasonable restrictions.
The K primer (version 2.5)
CinK–an exercise on how to think in K
The K primer (version 2.5)
Language-Independent Program Verification Using Symbolic Execution
K Semantics for OCL-a Proposal for a Formal Definition for OCL
Model checking recursive programs interacting via the heap
Science of Computer Programming, 2015
ABSTRACT Almost all modern imperative programming languages include operations for dynamically ma... more ABSTRACT Almost all modern imperative programming languages include operations for dynamically manipulating the heap, for example by allocating and deallocating objects, and by updating reference fields. In the presence of recursive procedures and local variables, the interactions of a program with the heap can become rather complex, as an unbounded number of objects can be allocated either on the call stack using local variables, or, anonymously, on the heap using reference fields. As such, a static analysis for recursive programs with dynamic manipulation of the heap is, in general, undecidable.
Bounded Model Checking of Recursive Programs with Pointers in K
Lecture Notes in Computer Science, 2013
Electronic Proceedings in Theoretical Computer Science, 2012
Almost all modern imperative programming languages include operations for dynamically manipulatin... more Almost all modern imperative programming languages include operations for dynamically manipulating the heap, for example by allocating and deallocating objects, and by updating reference fields. In the presence of recursive procedures and local variables the interactions of a program with the heap can become rather complex, as an unbounded number of objects can be allocated either on the call stack using local variables, or, anonymously, on the heap using reference fields. As such a static analysis is, in general, undecidable.
Behavioral Rewrite Systems and Behavioral Productivity
Lecture Notes in Computer Science, 2014
Lecture Notes in Computer Science, 2012
We propose a formal approach for the definition of domainspecific modelling languages (dsmls). Th... more We propose a formal approach for the definition of domainspecific modelling languages (dsmls). The approach uses basic Model-Driven Engineering artifacts for defining a dsml's syntax (using metamodels) and its operational semantics (using model transformations). We give formal meanings to these artifacts by mapping them to the K semantic framework. The mapping is implemented in the Rascal metaprogramming language. Since the resulting K definitions are executable, one obtains an execution engine for dsmls and gains acces to K's formal analysis tools. We illustrate the approach on xspem, a language for describing the execution of tasks constrained by time, precedence, and resources.
Lecture Notes in Computer Science, 2013
We propose a language-independent symbolic execution framework for languages endowed with a forma... more We propose a language-independent symbolic execution framework for languages endowed with a formal operational semantics based on term rewriting. Starting from a given definition of a language, a new language definition is automatically generated, which has the same syntax as the original one but whose semantics extends data domains with symbolic values and adapts semantical rules to deal with these values. Then, the symbolic execution of concrete programs is the execution of programs with the new symbolic semantics, on symbolic input data. We prove that the symbolic execution thus defined has the properties naturally expected from it. A prototype implementation of our approach was developed in the K Framework. We demonstrate the genericity of our tool by instantiating it on several languages, and show how it can be used for the symbolic execution and model checking of several programs. Id ::= domain of identifiers Int ::= domain of integer numbers (including operations) Bool ::= domain of boolean constants (including operations) AExp :: = Int | AExp / AExp [strict] | Id | AExp * AExp [strict] | (AExp) | AExp + AExp [strict] BExp :: = Bool | (BExp) | AExp <= AExp [strict] | not BExp [strict] | BExp and BExp [strict(1)] Stmt :: = skip | { Stmt } | Stmt ; Stmt | Id := AExp | while BExp do Stmt | if BExp then Stmt else Stmt [strict(1)] Code ::= Id | Int | Bool | AExp | BExp | Stmt | Code Code
Electronic Notes in Theoretical Computer Science, 2014
We give a formal definition to a significant subset of the Object Constraint Language (ocl) in th... more We give a formal definition to a significant subset of the Object Constraint Language (ocl) in the K framework. The chosen subset includes the usual arithmetical, Boolean (including quantifiers), and string expressions; collection expressions (including iterators and navigation); and pre/post conditions for methods. Being executable, our definition provides us, for free, with an interpreter for the chosen subset of ocl. It can be used for free in K definitions of languages having ocl as a component We illustrate some of the advantages of K by comparing our semantical definition of ocl with the official semantics from the language's standard. We also report on a tool implementing our definition that users can try online.
Lecture Notes in Computer Science, 2014
The proof scores method is an interactive verification method in algebraic specification that com... more The proof scores method is an interactive verification method in algebraic specification that combines manual proof planning and reduction (automatic inference by rewriting). The proof score approach to software verification coordinates efficiently human intuition and machine automation. We are interested in applying these ideas to transition systems, more concretely, in developing the so-called OTS/CafeOBJ method, a modelling, specification, and verification method of observational transition systems. In this paper we propose a methodology that aims at developing automatically proof scores according to the rules of an entailment system. The proposed deduction rules include a set of generic rules, which can be found in other proof systems as well, together with a set of rules specific to our working context. The methodology is exhibited on the example of the alternating bit protocol, where the unreliability of channels is faithfully specified.