VLDB 2026 Research / reviewers in the wild / expert
Davide Ancona
dblp:a/DAncona
· DBLP profile ↗
59ranked-venue papers
50as first author
6since 2021 · last 2024
0000-0002-6297-2011ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 48 · 42 first-author · 3 since 2021Theory of computation · 11 · 9 first-author · 2 since 2021Artificial intelligence and machine learning · 2 · 1 first-author · 1 since 2021
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2024 | Checking equivalence of corecursive streams: An inductive procedureabstractIn recent work, non-periodic streams have been defined corecursively, by representing them with finitary equational systems built on top of various operators, besides the standard constructor. When only the stream constructor is allowed in equations, only periodic streams can be represented, and the structures of periodic streams and infinite regular trees are isomorphic. Therefore, one can use the theory of regular trees to get a sound and complete procedure to decide whether two equational systems are equivalent, that is, define the same streams. However, such an isomorphism no longer exists if one allows other operators in equations; in particular, there exist systems of equations which have the same unique solution as streams, but not as regular trees. Hence, equality of regular trees becomes stronger then equality of streams, with a negative impact on termination of functions whose definition is based on the equivalence of the representation of streams as finitary equational systems. To overcome this problem, we provide a weaker definition of equivalence, and prove its soundness and relative completeness. This definition is coinductive, hence non-algorithmic. However, we show that it can be turned into an equivalent inductive procedure. Davide Ancona, Pietro Barbieri, Elena Zucca |
Theor. Comput. Sci. | 1 |
| 2023 | Runtime Verification of Hash Code in Mutable ClassesabstractMost mainstream object-oriented languages provide a notion of equality between objects which can be customized to be weaker than reference equality, and which is coupled with the customizable notion of object hash code. This feature is so pervasive in object-oriented code that incorrect redefinition or use of equality and hash code may have a serious impact on software reliability and safety. Davide Ancona, Angelo Ferrando 0001, Viviana Mascardi |
FTfJP@ECOOP | 1 |
| 2023 | Checked corecursive streams: Expressivity and completeness
Davide Ancona, Pietro Barbieri, Elena Zucca |
Theor. Comput. Sci. | 1 |
| 2022 | Mind the Gap! Runtime Verification of Partially Observable MASs with Probabilistic Trace Expressions
Davide Ancona, Angelo Ferrando 0001, Viviana Mascardi |
EUMAS | 1 |
| 2021 | RML: Theory and practice of a domain specific language for runtime verification
Davide Ancona, Luca Franceschini, Angelo Ferrando 0001, Viviana Mascardi |
Sci. Comput. Program. | 1 |
| 2021 | Toward a Holistic Approach to Verification and Validation of Autonomous Cognitive SystemsabstractWhen applying formal verification to a system that interacts with the real world, we must use a model of the environment. This model represents an abstraction of the actual environment, so it is necessarily incomplete and hence presents an issue for system verification. If the actual environment matches the model, then the verification is correct; however, if the environment falls outside the abstraction captured by the model, then we cannot guarantee that the system is well behaved. A solution to this problem consists in exploiting the model of the environment used for statically verifying the system’s behaviour and, if the verification succeeds, using it also for validating the model against the real environment via runtime verification. The article discusses this approach and demonstrates its feasibility by presenting its implementation on top of a framework integrating the Agent Java PathFinder model checker. A high-level Domain Specific Language is used to model the environment in a user-friendly way; the latter is then compiled to trace expressions for both static formal verification and runtime verification. To evaluate our approach, we apply it to two different case studies: an autonomous cruise control system and a simulation of the Mars Curiosity rover. Angelo Ferrando 0001, Louise A. Dennis, Rafael C. Cardoso 0001, Michael Fisher 0001, Davide Ancona, Viviana Mascardi |
ACM Trans. Softw. Eng. Methodol. | 5 |
| 2020 | Sound Regular Corecursion in coFJabstractThe aim of the paper is to provide solid foundations for a programming paradigm natively supporting the creation and manipulation of cyclic data structures. To this end, we describe coFJ, a Java-like calculus where objects can be infinite and methods are equipped with a codefinition (an alternative body). We provide an abstract semantics of the calculus based on the framework of inference systems with corules. In coFJ with this semantics, FJ recursive methods on finite objects can be extended to infinite objects as well, and behave as desired by the programmer, by specifying a codefinition. We also describe an operational semantics which can be directly implemented in a programming language, and prove the soundness of such semantics with respect to the abstract one. Davide Ancona, Pietro Barbieri, Francesco Dagnino, Elena Zucca |
ECOOP | 1 |
| 2020 | A Big Step from Finite to Infinite Computations (SCICO Journal-first)abstractThe known is finite, the unknown infinite - Thomas Henry Huxley The behaviour of programs can be described by the final results of computations, and/or their interactions with the context, also seen as observations. For instance, a function call can terminate and return a value, as well as have output effects during its execution. Here, we deal with semantic definitions covering both results and observations. Often, such definitions are provided for finite computations only. Notably, in big-step style, infinite computations are simply not modelled, hence diverging and stuck terms are not distinguished. This becomes even more unsatisfactory if we have observations, since a non-terminating program may have significant infinite behaviour. Recently, examples of big-step semantics modeling divergence have been provided [Davide Ancona et al., 2017; Davide Ancona et al., 2018] by means of generalized inference systems [Davide Ancona et al., 2017; Francesco Dagnino, 2019], which allow corules to control coinduction. Indeed, modeling infinite behaviour by a purely coinductive interpretation of big-step rules would lead to spurious results [Xavier Leroy and Hervé Grall, 2009] and undetermined observation, whereas, by adding appropriate corules, we can correctly get divergence (∞) as the only result, and a uniquely determined observation. This approach has been adopted in [Davide Ancona et al., 2017; Davide Ancona et al., 2018] to design big-step definitions including infinite behaviour for lambda-calculus and a simple imperative Java-like language. However, in such works the designer of the semantics is in charge of finding the appropriate corules, and this is a non-trivial task. In this paper, we show a general construction that extends a given big-step semantics, modeling finite computations, to include infinite behaviour as well, notably by generating appropriate corules. The construction consists of two steps: 1) Starting from a monoid O modeling finite observations (e.g., finite traces), we construct an ω-monoid ⟨O, O_∞⟩ also modeling infinite observations (e.g., infinite traces). The latter structure is a variation of the notion of ω-semigroup [Dominique Perrin and Jean-Eric Pin, 2004], including a mixed product composing a finite with a possibly infinite observation, and an infinite product mapping an infinite sequence of finite observations into a single one (possibly infinite). 2) Starting from an inference system defining a big-step judgment c⇒⟨r, o⟩, with c denoting a configuration, r ∈ R a result, and o ∈ O a finite observation, we construct an inference system with corules defining an extended big-step judgment c⇒c ⇒ ⟨r_∞, o_∞⟩ with r_∞ ∈ R_∞ = R+{∞}, and o_∞ ∈ O_∞ a "possibly infinite" observation. The construction generates additional rules for propagating divergence, and corules for introducing divergence in a controlled way. The exact corules added in the construction depend on the type of observations that one starts with. To show the effectiveness of our approach, we provide several instances of the framework, with different kinds of (finite) observations. Finally, we prove a correctness result for the construction. To this end, we assume the original big-step semantics to be equivalent to (finite sequences of steps in) a reference small-step semantics, and we show that, by applying the construction, we obtain an extended big-step semantics which is still equivalent to the small-step semantics, where we consider possibly infinite sequences of steps.} As hypotheses, rather than {just} equivalence in the finite case {(which would be not enough)}, we assume a set of equivalence conditions between individual big-step rules and the small-step relation. This proof of equivalence holds for deterministic semantics; issues arising in the non-deterministic case and a possible solution are sketched in the conclusion of the full paper. Davide Ancona, Francesco Dagnino, Jurriaan Rot, Elena Zucca |
ECOOP | 1 |
| 2020 | A big step from finite to infinite computations
Davide Ancona, Francesco Dagnino, Jurriaan Rot, Elena Zucca |
Sci. Comput. Program. | 1 |
| 2020 | Flexible coinductive logic programmingabstractAbstract Recursive definitions of predicates are usually interpreted either inductively or coinductively. Recently, a more powerful approach has been proposed, called flexible coinduction, to express a variety of intermediate interpretations, necessary in some cases to get the correct meaning. We provide a detailed formal account of an extension of logic programming supporting flexible coinduction. Syntactically, programs are enriched by coclauses, clauses with a special meaning used to tune the interpretation of predicates. As usual, the declarative semantics can be expressed as a fixed point which, however, is not necessarily the least, nor the greatest one, but is determined by the coclauses. Correspondingly, the operational semantics is a combination of standard SLD resolution and coSLD resolution. We prove that the operational semantics is sound and complete with respect to declarative semantics restricted to finite comodels. Francesco Dagnino, Davide Ancona, Elena Zucca |
Theory Pract. Log. Program. | 2 |
| 2019 | Comparing Testing and Runtime Verification of IoT Systems: A Preliminary Evaluation based on a Case StudyabstractAssuring the quality of Internet of Things (IoT) systems is of paramount importance, and guaranteeing their reliability and compliance with the requirements is mandatory, but few attempts have been made so far. In previous works, we proposed two approaches for acceptance testing and runtime verification of IoT systems. Both works rely on a UML state machine to specify the system expected behaviour. In the acceptance testing approach, the interesting paths to exercise are identified and translated into executable test scripts. In the runtime verification approach, the relevant events during the system execution are monitored and compared against a formal specification derived from the UML state machine. In this paper, we compare the effectiveness of our two approaches, by applying them to a mobile health IoT system for the management of diabetic patients, employing over 100 mutated versions of the original system and analysing more than 1000 different executions. Results show that both approaches are effective in different ways in detecting bugs. While the acceptance testing approach is more effective to detect the bugs affecting the user interface, the runtime verification approach tracks better the subtle deviations from the system expected behaviour, in particular those concerning network issues. Maurizio Leotta, Diego Clerissi, Luca Franceschini, Dario Olianas, Davide Ancona, Filippo Ricca, Marina Ribaudo |
ENASE | 5 |
| 2019 | Preface: Special Issue on Verification of Objects at Runtime Execution
Davide Ancona |
Sci. Comput. Program. | 1 |
| 2018 | Modeling Infinite Behaviour by CorulesabstractGeneralized inference systems have been recently introduced, and used, among other applications, to define semantic judgments which uniformly model terminating computations and divergence. We show that the approach can be successfully extended to more sophisticated notions of infinite behaviour, that is, to express that a diverging computation produces some possibly infinite result. This also provides a motivation to smoothly extend the theory of generalized inference systems to include, besides coaxioms, also corules, a more general notion for which significant examples were missing until now. We first illustrate the approach on a lambda-calculus with output effects, for which we also provide an alternative semantics based on standard notions, and a complete proof of the equivalence of the two semantics. Then, we consider a more involved example, that is, an imperative Java-like language with I/O primitives. Davide Ancona, Francesco Dagnino, Elena Zucca |
ECOOP | 1 |
| 2018 | Verifying and Validating Autonomous Systems: Towards an Integrated Approach
Angelo Ferrando 0001, Louise A. Dennis, Davide Ancona, Michael Fisher 0001, Viviana Mascardi |
RV | 3 |
| 2018 | Preface
Marco Maratea, Viviana Mascardi, Davide Ancona, Alberto Pettorossi |
Fundam. Informaticae | 3 |
| 2018 | An acceptance testing approach for Internet of Things systemsabstractInternet of things (IoT) systems are becoming ubiquitous and assuring their quality is fundamental. Unfortunately, a few proposals for testing these complex, and often safety‐critical, systems are present in the literature. The authors propose an approach for acceptance testing of IoT systems adopting graphical user interfaces as a principal way of interaction. Acceptance testing is a type of black box testing based on test scenarios, i.e. sequences of steps/actions performed by the user or the system. In their approach, test scenarios are derived from a state machine that expresses the behaviour of the system under test, and test cases are derived from them by specifying the actual data and assertions and made executable by implementing the corresponding test scripts. As a case study, they selected a mobile health IoT system for diabetes management composed of local sensors/actuators, smartphones, and a remote cloud‐based system. The effectiveness of the approach has been evaluated by measuring the capability of two test suites implemented using different localisation strategies (visual and structure‐based) in detecting mutants of the original m‐health system. Results show the effectiveness of the test suites implemented by following the proposed approach since 93% of the generated mutants have been detected. Maurizio Leotta, Diego Clerissi, Dario Olianas, Filippo Ricca, Davide Ancona, Giorgio Delzanno, Luca Franceschini, Marina Ribaudo |
IET Softw. | 5 |
| 2017 | Parametric Trace Expressions for Runtime Verification of Java-Like ProgramsabstractParametric trace expressions are a formalism expressly designed for parametric runtime verification (RV) which has been introduced and successfully employed in the context of runtime monitoring of multiagent systems. Davide Ancona, Angelo Ferrando 0001, Luca Franceschini, Viviana Mascardi |
FTfJP@ECOOP | 1 |
| 2017 | Generalizing Inference Systems by Coaxioms
Davide Ancona, Francesco Dagnino, Elena Zucca |
ESOP | 1 |
| 2017 | Type safe incremental rebindingabstractWe extend the simply-typed lambda-calculus with a mechanism for dynamic and incremental rebinding of code. Fragments of open code which can be dynamically rebound are values. Differently from standard static binding, which is done on a positional basis, rebinding is done on a nominal basis, that is, free variables in open code are associated with names which do not obey α-equivalence. Moreover, rebinding is incremental, that is, just a subset of names can be rebound, making possible code specialization, and rebinding can even introduce new names. Finally, rebindings, which are associations between names and terms, are first-class values, and can be manipulated by operators such as overriding and renaming. We define a type system in which the type for a rebinding, in addition to specify an association between names and types (similarly to record types), is also annotated. The annotation says whether or not the domain of the rebinding having this type may contain more names than the ones that are specified in the type. We show soundness of the type system. Davide Ancona, Paola Giannini, Elena Zucca |
Math. Struct. Comput. Sci. | 1 |
| 2017 | Reasoning on divergent computations with coaxiomsabstractCoaxioms have been recently introduced to enhance the expressive power of inference systems, by supporting interpretations which are neither purely inductive, nor coinductive. This paper proposes a novel approach based on coaxioms to capture divergence in semantic definitions by allowing inductive and coinductive semantic rules to be merged together for defining a unique semantic judgment. In particular, coinduction is used to derive a special result which models divergence. In this way, divergent, terminating, and stuck computations can be properly distinguished even in semantic definitions where this is typically difficult, as in big-step style. We show how the proposed approach can be applied to several languages; in particular, we first illustrate it on the paradigmatic example of the λ-calculus, then show how it can be adopted for defining the big-step semantics of a simple imperative Java-like language. We provide proof techniques to show classical results, including equivalence with small-step semantics, and type soundness for typed versions of both languages. Davide Ancona, Francesco Dagnino, Elena Zucca |
Proc. ACM Program. Lang. | 1 |
| 2017 | Preface to the special section on Object-Oriented Programming and Systems (OOPS 2015)
Davide Ancona |
Sci. Comput. Program. | 1 |
| 2016 | A formal account of SSA in Java-like languages
Davide Ancona, Andrea Corradi |
FTfJP@ECOOP | 1 |
| 2016 | Towards a model of corecursion with default
Davide Ancona, Francesco Dagnino, Elena Zucca |
FTfJP@ECOOP | 1 |
| 2016 | Semantic subtyping for imperative object-oriented languagesabstractSemantic subtyping is an approach for defining sound and complete procedures to decide subtyping for expressive types, including union and intersection types; although it has been exploited especially in functional languages for XML based programming, recently it has been partially investigated in the context of object-oriented languages, and a sound and complete subtyping algorithm has been proposed for record types, but restricted to immutable fields, with union and recursive types interpreted coinductively to support cyclic objects. In this work we address the problem of studying semantic subtyping for imperative object-oriented languages, where fields can be mutable; in particular, we add read/write field annotations to record types, and, besides union, we consider intersection types as well, while maintaining coinductive interpretation of recursive types. In this way, we get a richer notion of type with a flexible subtyping relation, able to express a variety of type invariants useful for enforcing static guarantees for mutable objects. The addition of these features radically changes the defi- nition of subtyping, and, hence, the corresponding decision procedure, and surprisingly invalidates some subtyping laws that hold in the functional setting. We propose an intuitive model where mutable record val- ues contain type information to specify the values that can be correctly stored in fields. Such a model, and the correspond- ing subtyping rules, require particular care to avoid circularity between coinductive judgments and their negations which, by duality, have to be interpreted inductively. A sound and complete subtyping algorithm is provided, together with a prototype implementation. Davide Ancona, Andrea Corradi |
OOPSLA | 1 |
| 2015 | A three-valued type system for true positives detection in Java-like languagesabstractSoundness of type systems is an important property to guarantee the absence of certain kinds of runtime errors, that is, no false negatives can occur. Davide Ancona, Federico Frassetto |
FTfJP@ECOOP | 1 |
| 2015 | A Theoretical Perspective of Coinductive Logic ProgrammingabstractIn this paper we study the semantics of Coinductive Logic Programming and clarify its intrinsic computational limits, which prevent, in particular, the definition of a complete, computable, operational semantics. We propose a new operational semantics that allows a simple correctness result and the definition of a simple meta-interpreter. We compare, and prove the equivalence, with the operational semantics defined and used in other papers on this topic. Davide Ancona, Agostino Dovier |
Fundam. Informaticae | 1 |
| 2015 | Preface to the special section on Object-Oriented Programming and Systems (OOPS 2010)
Davide Ancona |
Sci. Comput. Program. | 1 |
| 2014 | How to prove type soundness of Java-like languages without forgoing big-step semanticsabstractSmall-step operational semantics is the most commonly employed formalism for proving type soundness of statically typed programming languages, because of its ability to distinguish stuck from non-terminating computations, as opposed to big-step operational semantics. Davide Ancona |
FTfJP@ECOOP | 1 |
| 2014 | Sound and Complete Subtyping between Coinductive Types for Object-Oriented Languages
Davide Ancona, Andrea Corradi |
ECOOP | 1 |
| 2014 | A Coalgebraic Foundation for Coinductive Union Types
Marcello M. Bonsangue, Jurriaan Rot, Davide Ancona, Frank S. de Boer, Jan Rutten |
ICALP (2) | 3 |
| 2014 | CooL-AgentSpeak: Endowing AgentSpeak-DL agents with plan exchange and ontology servicesabstractIn this paper we present CooL-AgentSpeak, an extension of AgentSpeak-DL with plan exchange and ontology services. In CooL-AgentSpeak, the search for an ontologically relevant plan is no longer limited to the agent's local plan library but is carried Viviana Mascardi, Davide Ancona, Matteo Barbieri, Rafael H. Bordini, Alessandro Ricci |
Web Intell. Agent Syst. | 2 |
| 2013 | Safe corecursion in coFJabstractIn previous work we have presented coFJ, an extension to Featherweight Java that promotes coinductive programming, a sub-paradigm expressly devised to ease high-level programming and reasoning with cyclic data structures. Davide Ancona, Elena Zucca |
FTfJP@ECOOP | 1 |
| 2013 | Regular corecursion in Prolog
Davide Ancona |
Comput. Lang. Syst. Struct. | 1 |
| 2013 | Preface to the special section on Object-Oriented Programming and Systems (OOPS 2009), a special track at the 24th ACM Symposium on Applied Computing
Davide Ancona |
Sci. Comput. Program. | 1 |
| 2013 | co-LP: Back to the Roots
Davide Ancona, Agostino Dovier |
Theory Pract. Log. Program. | 1 |
| 2013 | Attribute Global Types for Dynamic Checking of Protocols in Logic-based Multiagent Systems
Viviana Mascardi, Davide Ancona |
Theory Pract. Log. Program. | 2 |
| 2012 | Soundness of Object-Oriented Languages with Coinductive Big-Step Semantics
Davide Ancona |
ECOOP | 1 |
| 2012 | Corecursive Featherweight JavaabstractDespite cyclic data structures occur often in many application domains, object-oriented programming languages provide poor abstraction mechanisms for dealing with cyclic objects. Davide Ancona, Elena Zucca |
FTfJP@ECOOP | 1 |
| 2011 | Coinductive big-step operational semantics for type soundness of Java-like languagesabstractWe define a coinductive semantics for a simple Java-like language by simply interpreting coinductively the rules of a standard big-step operational semantics. Davide Ancona |
FTfJP@ECOOP | 1 |
| 2010 | Complete coinductive subtyping for abstract compilation of object-oriented languagesabstractCoinductive abstract compilation is a novel technique, which has been recently introduced, for defining precise type systems for object-oriented languages. In this approach, type inference consists in translating the program to be analyzed into a Horn formula f, and in resolving a certain goal w.r.t. the coinductive (that is, the greatest) Herbrand model of f. Davide Ancona, Giovanni Lagorio |
FTfJP@ECOOP | 1 |
| 2010 | Preface to the Special Issue on Object-Oriented Programming Languages and Systems (OOPS 2008), A Special Track at the 23rd ACM Symposium on Applied Computing
Davide Ancona, Alex Buckley |
Sci. Comput. Program. | 1 |
| 2009 | Coinductive Type Systems for Object-Oriented Languages
Davide Ancona, Giovanni Lagorio |
ECOOP | 1 |
| 2007 | RPython: a step towards reconciling dynamically and statically typed OO languagesabstractAlthough the C-based interpreter of Python is reasonably fast, implementations on the CLI or the JVM platforms offers some advantages in terms of robustness and interoperability. Unfortunately, because the CLI and JVM are primarily designed to execute statically typed, object-oriented languages, most dynamic language implementations cannot use the native bytecodes for common operations like method calls and exception handling; as a result, they are not able to take full advantage of the power offered by the CLI and JVM. Davide Ancona, Massimo Ancona, Antonio Cuni, Nicholas D. Matsakis |
DLS | 1 |
| 2007 | A provenly correct translation of Fickle into JavaabstractWe present a translation from Fickle , a small object-oriented language allowing objects to change their class at runtime, into Java. The translation is provenly correct in the sense that it preserves the static and dynamic semantics. Moreover, it is compatible with separate compilation, since the translation of a Fickle class does not depend on the implementation of used classes. Based on the formal system, we have developed an implementation. The translation turned out to be a more subtle problem than we expected. In this article, we discuss four possible approaches we considered for the design of the translation and to justify our choice, we present formally the translation and proof of preservation of the static and dynamic semantics, and discuss the prototype implementation. Moreover, we outline an alternative translation based on generics that avoids most of the casts (but not all) needed in the previous translation. The language Fickle has undergone and is still undergoing several phases of development. In this article we are discussing the translation of Fickle II . Davide Ancona, Ferruccio Damiani, Sophia Drossopoulou, Paola Giannini, Elena Zucca |
ACM Trans. Program. Lang. Syst. | 1 |
| 2005 | Polymorphic bytecode: compositional compilation for Java-like languagesabstractWe define compositional compilation as the ability to typecheck source code fragments in isolation, generate We define compositional compilation as the ability to typecheck source code fragments in isolation, generate corresponding binaries,and link together fragments whose mutual assumptions are satisfied, without reinspecting the code. Even though compositional compilation is a highly desirable feature, in Java-like languages it can hardly be achieved. This is due to the fact that the bytecode generated for a fragment (say, a class) is not uniquely determined by its source code, but also depends on the compilation context.We propose a way to obtain compositional compilation for Java, by introducing a polymorphic form of bytecode containing type variables (ranging over class names) and equipped with a set of constraints involving type variables. Thus, polymorphic bytecode provides a representation for all the (standard) bytecode that can be obtained by replacing type variables with classes satisfying the associated constraints.We illustrate our proposal by developing a typing and a linking algorithm. The typing algorithm compiles a class in isolation generating the corresponding polymorphic bytecode fragment and constraints on the classes it depends on. The linking algorithm takes a collection of polymorphic bytecode fragments, checks their mutual consistency, and possibly simplifies and specializes them. In particular, linking a self-contained collection of fragments either fails, or produces standard bytecode (the same as would have been produced by standard compilation of all fragments). Davide Ancona, Ferruccio Damiani, Sophia Drossopoulou, Elena Zucca |
POPL | 1 |
| 2004 | A Fresh Calculus for Name Management
Davide Ancona, Eugenio Moggi |
GPCE | 1 |
| 2004 | Principal typings for Java-like languagesabstractThe contribution of the paper is twofold. First, we define a general notion of type system equipped with an entailment relation between type environments; this generalisation serves as a pattern for instantiating type systems able to support separate compilation and inter-checking of Java-like languages, and allows a formal definition of soundess and completeness of inter-checking w.r.t. global compilation. These properties are important in practice since they allow selective recompilation. In particular, we show that they are guaranteed when the type system has principal typings and provides sound and complete entailment relation between type environments.The second contribution is more specific, and is an instantiation of the notion of type system previously defined for Featherweight Java with method overloading and field hiding. The aim is to show that it is possible to define type systems for Java-like languages, which, in contrast to those used by standard compilers, have principal typings, hence can be used as a basis for selective recompilation. Davide Ancona, Elena Zucca |
POPL | 1 |
| 2003 | Mixin Modules and Computational Effects
Davide Ancona, Sonia Fagorzi, Eugenio Moggi, Elena Zucca |
ICALP | 1 |
| 2003 | Jam - designing a Java extension with mixinsabstractIn this paper we present Jam, an extension of the Java language supporting mixins , that is, parametric heir classes. A mixin declaration in Jam is similar to a Java heir class declaration, except that it does not extend a fixed parent class, but simply specifies the set of fields and methods a generic parent should provide. In this way, the same mixin can be instantiated on many parent classes, producing different heirs, thus avoiding code duplication and largely improving modularity and reuse. Moreover, as happens for classes and interfaces, mixin names are reference types, and all the classes obtained by instantiating the same mixin are considered subtypes of the corresponding type, and hence can be handled in a uniform way through the common interface. This possibility allows a programming style where different ingredients are "mixed" together in defining a class; this paradigm is somewhat similar to that based on multiple inheritance, but avoids its complication.The language has been designed with the main objective in mind to obtain, rather than a new theoretical language, a working and smooth extension of Java. That means, on the design side, that we have faced the challenging problem of integrating the Java overall principles and complex type system with this new notion; on the implementation side, it means that we have developed a Jam-to-Java translator which makes Jam sources executable on every Java Virtual Machine. Davide Ancona, Giovanni Lagorio, Elena Zucca |
ACM Trans. Program. Lang. Syst. | 1 |
| 2002 | A Formal Framework for Java Separate Compilation
Davide Ancona, Giovanni Lagorio, Elena Zucca |
ECOOP | 1 |
| 2002 | True separate compilation of Java classesabstractWe define a type system modeling true separate compilation for a small but significant Java subset, in the sense that a single class declaration can be intra-checked (following the Cardelli's terminology) and compiled providing a minimal set of type requirements on missing classes. These requirements are specified by a local type environment associated with each single class, while in the existing formal definitions of the Java type system classes are typed in a global type environment containing all the type information on a closed program. We also provide formal rules for static interchecking and relate our approach with compilation of closed programs, by proving that we get the same results. Davide Ancona, Giovanni Lagorio, Elena Zucca |
PPDP | 1 |
| 2002 | A calculus of module systemsabstractWe present CMS , a simple and powerful calculus of modules supporting mutual recursion and higher order features, which can be instantiated over an arbitrary core calculus satisfying standard assumptions. The calculus allows expression of a large variety of existing mechanisms for combining software components, including parameterized modules similar to ML functors, extension with overriding as in object-oriented programming, mixin modules and extra-linguistic mechanisms like those provided by a linker. Hence CMS can be used as a paradigmatic calculus for modular languages, in the same spirit the lambda calculus is used for functional programming. We first present an untyped version of the calculus and then a type system; we prove confluence, progress, and subject reduction properties. Then, we define a derived calculus of mixin modules directly in terms of CMS and show how to encode other primitive calculi into CMS (the lambda calculus and the Abadi-Cardelli object calculus). Finally, we consider the problem of introducing a subtype relation for module types. Davide Ancona, Elena Zucca |
J. Funct. Program. | 1 |
| 2002 | A Theory of Mixin Modules: Algebraic Laws and Reduction SemanticsabstractMixins are modules that may contain deferred components, that is, components not defined in the module itself; moreover, in contrast to parameterised modules (like ML functors), they can be mutually dependent and allow their definitions to be overridden. In a preceding paper we defined a syntax and denotational semantics of a kernel language of mixin modules. Here, we take instead an axiomatic approach, giving a set of algebraic laws expressing the expected properties of a small set of primitive operators on mixins. Interpreting axioms as rewriting rules, we get a reduction semantics for the language and prove the existence of normal forms. Moreover, we show that the model defined in the earlier paper satisfies the given axiomatisation. Davide Ancona, Elena Zucca |
Math. Struct. Comput. Sci. | 1 |
| 2001 | True Modules for Java-like Languages
Davide Ancona, Elena Zucca |
ECOOP | 1 |
| 2001 | A Core Calculus for Java ExceptionsabstractIn this paper we present a simple calculus (called CJE) in ourder to fully investigate the exception mechanism of Java, and in particular its interaction with inheritance, which turns out to be non trivial. Moreover, we show that the type system for the calculus directly dirven by the Java language specification (called FULL) uses too many types, in the sense that there are different types which rpovide exactly the same information. Hence, we obtain from FULL a simplified type system called MIN where equivalent types have been identified. We show that is useful both for type-checking optimization and for clarifying the static semantics of the language. The two type systems are proved to satisfy the subject reduction property Davide Ancona, Giovanni Lagorio, Elena Zucca |
OOPSLA | 1 |
| 2000 | Jam - A Smooth Extension of Java with Mixins
Davide Ancona, Giovanni Lagorio, Elena Zucca |
ECOOP | 1 |
| 1999 | A Formal Framework with Late Binding
Davide Ancona, Maura Cerioli, Elena Zucca |
FASE | 1 |
| 1999 | A Primitive Calculus for Module Systems
Davide Ancona, Elena Zucca |
PPDP | 1 |
| 1998 | A Theory of Mixin Modules: Basic and Derived Operators
Davide Ancona, Elena Zucca |
Math. Struct. Comput. Sci. | 1 |