Skip to main content
Alberto Pettorossi

    Alberto Pettorossi

    These lecture notes present some basic notions and results on Automata Theory, Formal Languages Theory, Computability Theory, and Parsing Theory. I prepared these notes for a course on Automata, Languages, and Translators which I am... more
    These lecture notes present some basic notions and results on Automata Theory, Formal Languages Theory, Computability Theory, and Parsing Theory. I prepared these notes for a course on Automata, Languages, and Translators which I am teaching at the University of Roma Tor Vergata. More material on these topics and on parsing techniques for context-free languages can be found in standard textbooks such as~\cite{Ah&86,Har78,HoU79}. The reader is encouraged to look at those books.
    This book introduces the reader to the basic ideas of first order predicate calculus and logic programming.
    Belief revision: A vade-mecum.- Metaprogramming through intensional deduction: Some examples.- An autoepistemic analysis of metalevel reasoning in logic programming.- An introduction to partial deduction.- Tutorial on termination of logic... more
    Belief revision: A vade-mecum.- Metaprogramming through intensional deduction: Some examples.- An autoepistemic analysis of metalevel reasoning in logic programming.- An introduction to partial deduction.- Tutorial on termination of logic programs.- Definable naming relations in meta-level systems.- Meta for modularising logic programming.- Compiler optimizations for low-level redundancy elimination: An application of meta-level prolog primitives.- Reflective agents in metalogic programming.- Logic meta-programming facilities in 'LOG.- The Pandora deadlock handler meta-level relation.- Object-oriented programming in Godel: An experiment.- A sensible least Herbrand semantics for untyped vanilla meta-programming and its extension to a limited form of amalgamation.- A complete resolution method for logical meta-programming languages.- Model theoretic semantics for Demo.- Hierarchical meta-logics: Intuitions, proof theory and semantics.- Negation and control in automatically generated logic programs.- Transforming normal programs by replacement.- Meta-programming for reordering literals in deductive databases.- Propagation: a new operation in a framework for abstract interpretation of logic programs.- CLP({ie308-01}) for proving interargument relations.- Representation of fragmentary multilayered knowledge.- Metaprograms for change, assumptions, objects, and inheritance.
    <jats:p>In this paper we consider combinators as tree transducers: this approach is based on the one-to-one correspondence between terms of Combinatory Logic and trees, and on the fact that combinators may be considered as... more
    <jats:p>In this paper we consider combinators as tree transducers: this approach is based on the one-to-one correspondence between terms of Combinatory Logic and trees, and on the fact that combinators may be considered as transformers of terms. Since combinators are terms themselves, we will deal with trees as objects to be transformed and tree transformers as well. Methods for defining and studying tree rewriting systems inside Combinatory Weak Reduction Systems and Weak Combinatory Logic are also analyzed and particular attention is devoted to the problem of finiteness and infinity of the generated tree languages (here defined). This implies the study of the termination of the rewriting process (i.e. reduction) for combinators.</jats:p>
    It is well-known that: (i) every context-free language over a singleton terminal alphabet is regular [4], and (ii) the class of languages that satisfy the Pumping Lemma is a proper super-class of the context-free languages. We show that... more
    It is well-known that: (i) every context-free language over a singleton terminal alphabet is regular [4], and (ii) the class of languages that satisfy the Pumping Lemma is a proper super-class of the context-free languages. We show that any language in this super-class over a singleton terminal alphabet is regular. Our proof is based on a transformational approach and does not rely on Parikh’s Theorem [6]. Our result extends previously known results because there are languages that are not context-free, do satisfy the Pumping Lemma, and do not satisfy the hypotheses of Parikh’s Theorem [7].
    We address the problem of verifying that the functions of a program meet their contracts, specified by pre/postconditions. We follow an approach based on constrained Horn clauses (CHCs) by which the verification problem is reduced to the... more
    We address the problem of verifying that the functions of a program meet their contracts, specified by pre/postconditions. We follow an approach based on constrained Horn clauses (CHCs) by which the verification problem is reduced to the problem of checking satisfiability of a set of clauses derived from the given program and contracts. We consider programs that manipulate algebraic data types (ADTs) and a class of contracts specified by catamorphisms, that is, functions defined by simple recursion schemata on the given ADTs. We show by several examples that state-of-the-art CHC satisfiability tools are not effective at solving the satisfiability problems obtained by direct translation of the contracts into CHCs. To overcome this difficulty, we propose a transformation technique that removes the ADT terms from CHCs and derives new sets of clauses that work on basic sorts only, such as integers and booleans. Thus, when using the derived CHCs there is no need for induction rules on AD...
    In the literature there are various papers which illustrate the relationship between the unfold/fold program transformation techniques and the proofs of program properties both in the case of logic programs and in the case of functional... more
    In the literature there are various papers which illustrate the relationship between the unfold/fold program transformation techniques and the proofs of program properties both in the case of logic programs and in the case of functional programs.In this paper we illustrate that relationship in the case of constraint logic programs. We build up on results already presented, i.e.,where we have considered logic programs with locally stratified negation. The constraint logic programming paradigm significantly extends the logic-programming paradigm by allowing some of the atoms to denote constraints in a suitably chosen constraint domain. By using those constraints it is often possible to get simple and direct formulations of problem solutions.
    <jats:p>Various languages, formalisms and algebraic structures have been recently proposed for denoting parallel computations and communications among processes. As in [LaP 83] we restrict our attention to the CCS [Mil 80] and CSP... more
    <jats:p>Various languages, formalisms and algebraic structures have been recently proposed for denoting parallel computations and communications among processes. As in [LaP 83] we restrict our attention to the CCS [Mil 80] and CSP [Hoa 78] languages. We provide categorical models for their basic constructs and operations. The parallel composition and other kinds of interactions among computing processes will be interpreted as categorical constructions in suitable categories.</jats:p>
    We present a method for verifying the correctness of imperative programs which is based on the automated transformation of their specifications. Given a program prog, we con-sider a partial correctness specification of the form {ϕ} prog... more
    We present a method for verifying the correctness of imperative programs which is based on the automated transformation of their specifications. Given a program prog, we con-sider a partial correctness specification of the form {ϕ} prog {ψ}, where the assertions ϕ and ψ are predicates defined by a set Spec of possibly recursive Horn clauses with linear arithmetic (LA) constraints in their premise (also called constrained Horn clauses). The verification method consists in constructing a set PC of constrained Horn clauses whose satisfiability implies that {ϕ} prog {ψ} is valid. We highlight some limitations of state-of-the-art constrained Horn clause solving methods, here called LA-solving methods, which prove the satisfiability of the clauses by looking for linear arithmetic interpretations of the predicates. In particular, we prove that there exist some specifications that cannot be proved valid by any of those LA-solving methods. These specifications require the proof of satisfiabi...
    Abstract. In this paper we present an overview of the unfold/fold proof method, a method for prov-ing theorems about programs, based on program transformation. As a metalanguage for specifying programs and program properties we adopt... more
    Abstract. In this paper we present an overview of the unfold/fold proof method, a method for prov-ing theorems about programs, based on program transformation. As a metalanguage for specifying programs and program properties we adopt constraint logic programming (CLP), and we present a set of transformation rules (including the familiar unfolding and folding rules) which preserve the semantics of CLP programs. Then, we show how program transformation strategies can be used, similarly to theorem proving tactics, for guiding the application of the transformation rules and inferring the properties to be proved. We work out three examples: (i) the proof of predicate equiv-alences, applied to the verification of equality between CCS processes, (ii) the proof of first order formulas via an extension of the quantifier elimination method, and (iii) the proof of temporal prop-erties of infinite state concurrent systems, by using a transformation strategy that performs program specialization.
    We address the problem of verifying safety properties of infinite state reactive systems that use unbounded integer variables. We consider systems specified by using linear constraints over the integers and we assume that, for verifying... more
    We address the problem of verifying safety properties of infinite state reactive systems that use unbounded integer variables. We consider systems specified by using linear constraints over the integers and we assume that, for verifying safety properties of these systems, one uses reachability analysis techniques. Our method improves the effectiveness of forward and backward reacha-bility analyses by preprocessing the system specification. For forward reachability our method consists in: (i) transforming the system specification into an equivalent one (with respect to the safety property of interest) by a constraint propagation technique that works backward from the constraints representing the unsafe states, and then (ii) applying to the transformed system specification a reachability analysis that works forward from the constraints representing the initial states. For backward reachability our method works as for forward reachability, by inter-changing the roles of the initial sta...
    In a previous paper of ours [Pettorossi-Skowron 87] we have introduced the higher order generalization strategy (also called lambda abstraction strategy) and we have indicated through some examples its use for the automatic derivation of... more
    In a previous paper of ours [Pettorossi-Skowron 87] we have introduced the higher order generalization strategy (also called lambda abstraction strategy) and we have indicated through some examples its use for the automatic derivation of programs. Here we study that strategy in more detail and we analyze its capabilities for obtaining highly efficient programs, considering also some cases in which other known strategies for program development do not work.
    It is well-known that: (i) every context-free language over a singleton terminal alphabet is regular, and (ii) the class of languages that satisfy the Pumping Lemma is a proper super-class of the context-free languages. We show that any... more
    It is well-known that: (i) every context-free language over a singleton terminal alphabet is regular, and (ii) the class of languages that satisfy the Pumping Lemma is a proper super-class of the context-free languages. We show that any language in this superclass over a singleton terminal alphabet is regular. Our proof is based on a transformational approach and does not rely on Parikh's Theorem. Our result extends previously known results because there are languages that are not context-free, do satisfy the Pumping Lemma, and do not satisfy the hypotheses of Parikh's Theorem.
    We present a method for verifying the correctness of an imperative program with respect to a specification defined in terms of a set of possibly recursive Horn clauses. Given a program prog, we consider a partial correctness specification... more
    We present a method for verifying the correctness of an imperative program with respect to a specification defined in terms of a set of possibly recursive Horn clauses. Given a program prog, we consider a partial correctness specification of the form {φ} prog {ψ}, where the assertions φ and ψ are predicates defined by a set Spec of Horn clauses. The verification method consists in: (i) encoding the function computed by the program prog (according to the semantics of the imperative language) as a set OpSem of clauses, and then (ii) constructing a set PC of Horn clauses and a predicate p such that if p is false in the least model of PC, that is, M(PC) 6|= p, then {φ} prog {ψ} is valid. We also present an extension of the verification method for showing total correctness of programs. Then we present a general proof technique based on unfold/fold transformations of Horn clauses, for checking whether or not M(PC) |= p holds. We also outline a strategy for guiding the application of the u...
    Horn clauses and constraints are very popular formalisms for specifying and verifying properties of programs written in a variety of programming languages, including imperative, functional, objectoriented, and concurrent languages. We... more
    Horn clauses and constraints are very popular formalisms for specifying and verifying properties of programs written in a variety of programming languages, including imperative, functional, objectoriented, and concurrent languages. We briefly present an approach to the verification of imperative programs based on transformations of Horn clauses with constraints, also called Constrained Horn Clauses. The approach is to a large extent parametric with respect to the programming language and allows us to exploit the very effective techniques and tools that have been developed in the fields of logic programming and constraint solving.
    The main goal of this paper is to provide a common foundation to the theoriesof correctness of program transformations for a large variety of programming languages.We consider the notion of rule set and the notion of inductive set which... more
    The main goal of this paper is to provide a common foundation to the theoriesof correctness of program transformations for a large variety of programming languages.We consider the notion of rule set and the notion of inductive set which is denedby a rule set. We also consider a class of transformations of rule sets, called rulereplacements , which replace an
    In these lecture notes we present a few basic approaches to the definition of the semantics of programming languages. In particular, we present: (i) the operational semantics and the axiomatic semantics for a simple imperative language,... more
    In these lecture notes we present a few basic approaches to the definition of the semantics of programming languages. In particular, we present: (i) the operational semantics and the axiomatic semantics for a simple imperative language, and (ii)~the operational semantics and the denotational semantics for some first order and higher order, typed functional languages. We then present some basic techniques for proving properties of imperative, functional, and concurrent programs. We closely follow the presentation of the subject matter done by Glynn Winskel in~\cite{Win93}.
    These lecture notes are intended to introduce the reader to the basic notions of nondeterministic and concurrent programming. We start by giving the operational semantics of a simple deterministic language and the operational semantics of... more
    These lecture notes are intended to introduce the reader to the basic notions of nondeterministic and concurrent programming. We start by giving the operational semantics of a simple deterministic language and the operational semantics of a simple nondeterministic language based on guarded commands. Then we consider concurrent computations based on: (i) vectorization, (ii) shared variables, and (iii) handshaking communications a la CCS (Calculus for Communicating Systems) [16]. We also address the problem of mutual exclusion and for its solution we analyze various techniques such as those based on semaphores, critical regions, conditional critical regions, and monitors. Finally, we study the problem of detecting distributed termination and the problem of the serializability of database transactions. Sections 1, 2, and 6 are based on [16,22]. The material of Sections 3 and 4 is derived from [1,2,4,5,7,8,13,18,20]. Section 5 is based on [10] and is devoted to programming examples writ...

    And 152 more