Reporte Técnico RT 10-01 Representation of Metamodels
Total Page:16
File Type:pdf, Size:1020Kb
PEDECIBA Informática Instituto de Computación – Facultad de Ingeniería Universidad de la República Montevideo, Uruguay Reporte Técnico RT 10-01 Representation of metamodels using inductive types in a Type-Theoretic Framework for MDE Daniel Calegari Carlos Luna Nora Szasz Alvaro Tasistro 2010 Representation of metamodels using inductive types in a Type-Theoretic Framework for MDE Calegari, Daniel; Luna, Carlos; Szasz, Nora; Tasistro, Alvaro ISSN 0797-6410 Reporte Técnico RT 10-01 PEDECIBA Instituto de Computación – Facultad de Ingeniería Universidad de la República Montevideo, Uruguay, 2010 Representation of Metamodels using Inductive Types in a Type-Theoretic Framework for MDE Daniel Calegari∗, Carlos Lunay, Nora Szaszy, Alvaro´ Tasistroy ∗Instituto de Computacion,´ Universidad de la Republica,´ Uruguay Email: dcalegar@fing.edu.uy yFacultad de Ingenier´ıa, Universidad ORT Uruguay Email: fluna,szasz,[email protected] Abstract—We present discussions on how to apply a type- (type) and satisfying a certain (pre-)condition, an output theoretic framework –composed out by the Calculus of In- model exists which conforms to a given metamodel and ductive Constructions and its associated tool the Coq proof which stands in a certain relation with the input model. assistant– to the formal treatment of model transformations in the context of Model-Driven Engineering. We start by studying Proofs of such propositions in the CIC are constructive and how to represent models and metamodels in the mentioned therefore it is possible to automatically extract from each theory, which leads us to a formalization in which a metamodel of them a provably correct (functional) program computing is a collection of mutually defined inductive types representing the output model from any appropriate input. Alternatively, its various classes and associations. This representation has one can specify the transformation by asserting and proving been put into use for carrying out and verifying on machine the well-known case study of the Class to Relational model directly the existence of such a function. These are thus two transformation. We finally end up discussing ways in which ways in which it is possible to obtain certified zero-fault the framework can be used to obtain provably correct model transformations. transformations. The aim of this paper is to discuss how to represent Keywords-model-driven engineering, model transformations, models and metamodels in the CIC. This leads to the correctness, constructive type theory consideration of entities (e.g. classes) that mutually reference each other (e.g. through associations) and their possible I. INTRODUCTION representation by means of co-inductive or, alternatively, This paper reports ongoing work on the application of a mutually inductive types, which is the approach that we type-theoretic framework to the formal treatment of model eventually favor. This is done in section III below, after transformations in the context of Model-Driven Engineering having provided a brief outlook on the CIC in Section II. (MDE) [1]. Model transformations take as input models We have carried out our method on the well-known Class conforming to a given source metamodel and produce output to Relational model transformation [5], which we have fully models conforming to a given target metamodel. That is, developed in Coq. The corresponding code is available at [6]. metamodels specify collections of models and can thus Finally, in section IV, besides exposing some conclusions, be equated to model languages. In turn, they conform to we discuss several ways in which the type-theoretic frame- metametamodels, which can be understood as specifying work can be used either for the development of provably model languages and usually conform just to themselves. correct transformations or for the verification of pre-existing We explore the idea of using the Calculus of Inductive ones, which leads to the formulation of further work. Constructions (CIC) [2], [3] as a technical space for repre- The idea of using type theory in the context of MDE has senting and dealing with the schema above and obtaining been formulated before by Poernomo in [7], [8]. Poernomo provably correct model transformations. The choice of the formulates a type theory of his own –a variant of Martin- CIC is dictated by its very considerable expressive power Lof’s¨ constructive type theory– and outlines the methods as well as by the fact that it is supported by tools of for representing MOF [10] models as types as well as industrial strength, e.g. the Coq proof assistant [3], [4]. specifications of transformations as 89 formulæ. However, More specifically, the CIC is a type theory with dependent he requires the use of co-inductive types to treat cyclic types which allows to write logical formulæ of higher order references within metamodels, which we here avoid. An- about objects of inductive and functional types as well as other difference from Poernomo’s work is that we have fully about potentially infinite structures of co-inductive types. implemented a significant case study on machine, thanks to Within this framework, metamodels are represented as types, the choice of the CIC and the Coq tool. whilst model transformation can be specified for example Other works that propose type systems of their own by means of logical formulæ of 89 form, i.e. assertions that for object models are [11], [12], but they are oriented for every input model conforming to a given metamodel towards defining executable transformation languages and not towards reasoning about models and transformations. In inductive types, by giving the corresponding proof construc- contrast, [13], [14] explore the use of Maude (an executable tors. The type of propositions is called Prop. The logical rewriting logic language) as a formal notation for describing constants are defined accordingly, which means in particu- models and metamodels, and proving certain properties lar that each universally quantified proposition 8x:A:P (x) about them. In these works references are represented by is a type of functions taking objects a of type A into means of object identifiers, thus introducing a level of proofs of P (a), whereas existentially quantified propositions indirection. Our representation, which consists of the mutual 9x:A:P (x) are types of pairs formed by objects a of type definition of inductive types, allows for the use of induction A and proofs of P (a). In view of the latter, a formula of 89 and recursion for the purpose of navigation. Also, an im- form, i.e. 8x:AjP (x) 9y:BjQ(x; y) is proven by a function portant difference with these works is that our framework that maps input objects of type A satisfying precondition P is oriented towards the specification and formal verification to output of type B which stands in the relation Q with the of model transformations, whereas this is not considered in input, together with the proof that this latter condition holds. the former works. Then such formulæ constitute a natural way of expressing program specifications. From each proof of one such formula II. THE CALCULUS OF INDUCTIVE CONSTRUCTIONS it is possible to mechanically extract a function in the The Calculus of Inductive Constructions is a type theory, sense of ordinary functional programming languages which i.e. in brief, a higher order logic in which the individuals operates only on the input and output data and leaves the are classified into a hierarchy of types. The types work proof of the condition Q aside. The resulting program, say very much as in strongly typed functional programming f, remains provably correct with respect to the original languages which means that, to begin with, there are basic specification, i.e. for all a:A satisfying P , Q(a; f(a)) holds. elementary types, recursive types defined by induction like lists and trees (called inductive types) and function types. III. FORMALIZATION OF METAMODELS AND MODELS An example of inductive type is given by the following This section introduces the method used to describe meta- definition of the lists of elements of (parametric) type A, models and models within the CIC. Although the approach which we give in Coq notation (data types are called “Sets” does not tie itself to a specific metamodel specification in CIC): language, we use, for the sake of presentation, a simplified Inductive list : Set := version of the MOF [10] equivalent to the Kernel MetaMeta- | nil : list Model (KM3) [15]. As to the CIC, we use the syntax of the | cons : A -> list -> list. Coq proof assistant [4]. The type is defined by its constructors, in this case We use the well-known Class to Relational model trans- nil: list A and cons : A -> list A -> list A formation [5] as an example, actually in the simplified and it is understood that its elements are obtained as finite version found in the QVT Specification [16]. The transfor- combinations of the constructors. Well-founded recursion for mation describes how persistent classes of a simple UML these types is available via the Fixpoint operator. class diagram are mapped to tables of a RDBMS model. A (dependent) record type is a non-recursive inductive Here we shall focus on the representation of metamodels type with a single constructor and projection functions for and their models rather than on the transformation itself. each field of the type. Nevertheless, one version of the complete transformation When the requirement of finiteness is removed we obtain developed following our approach can be found at [6]. the possibility of defining infinite structures, as in In Figure 1 we show a metamodel of UML class diagrams. Classes can contain one or more attributes and can belong CoInductive Stream : Set := to a class hierarchy. Each attribute has a type that can Cons : A -> Stream -> Stream. be another class or a primitive datatype (string, boolean, The possibly infinite elements of coinductive types are integer, etc.).