"... As a partial solution to the problem of combining static and dynamic typing in a language with parametric polymorphism, this paper introduces a new form of type expressions which represent partial type information. These expressions are meant to capture the type information statically derivable from ..."

As a partial solution to the problem of combining static and dynamic typing in a language with parametric polymorphism, this paper introduces a new form of type expressions which represent partial type information. These expressions are meant to capture the type information statically derivable from heterogeneous objects. The new ground types form a semilattice of subtypes and require type inference based on inclusion constraints. We discuss the existence and form of principal types under this extension and present a semi-decision procedure for the complete type inference problem. 1.

...-x:rs(LET) C,A I= e: T’ C, A [x: Gen(C, A, r’)] k e’: 5sC,Aklet x=e in e’:rsIn formulating typing rules for polymorphic identifiers, we follow the variant of thessystem of [6] given by Clement et al. =-=[S]-=-, which produces unique typing derivations.sAlong with a new LET rule, we need to replace the TAUT rule for identifiers with thesSPEC rule. Both new rules are given in Table 2.sExample 4.2. (int</3}, ...

"... This paper addresses the issue of safely combining computational eects and multi-stage programming. We propose a type system, which exploits a notion of closed type, to check statically that an imperative multi-stage program does not cause run-time errors. Our approach is demonstrated formally for a ..."

This paper addresses the issue of safely combining computational eects and multi-stage programming. We propose a type system, which exploits a notion of closed type, to check statically that an imperative multi-stage program does not cause run-time errors. Our approach is demonstrated formally for a core language called MiniML ref . This core language safely combines multi-stage constructs and ML-style references, and is a conservative extension of MiniML ref , a simple imperative subset of SML. In previous work, we introduced a closed type constructor , which was enough to ensure the safe execution of dynamically generated code in the pure fragment of MiniML ref .

...References In preparation for presenting our case study in Hybrid in Chapters 5 to 10, we describe the object language whose formalization is the subject of the case study. It is a variant of Mini-ML =-=[12]-=- with mutable references. This object language is taken from an example in Cervesato and Pfenning’s work on a linear logical framework [9], and we closely follow its presentation there. (Definition 4....

"... Modular monadic semantics is a high-level and modular form of denotational semantics. It is capable of capturing individual programming language features as small building blocks which can be combined to form a programming language of arbitrary complexity. Interactions between features are isolated ..."

Modular monadic semantics is a high-level and modular form of denotational semantics. It is capable of capturing individual programming language features as small building blocks which can be combined to form a programming language of arbitrary complexity. Interactions between features are isolated in such a way that the building blocks are invariant. This paper explores the theory and application of modular monadic semantics, including the building blocks for individual programming language features, equational reasoning with laws and axioms, modular proofs, program transformation, modular interpreters, and semantics-directed compilation. We demonstrate that modular monadic semantics makes programming languages easier to specify, reason about, and implement than the alternative of using conventional denotational semantics. Our contributions include: (a) the design of a fully modular interpreter based on monad transformers, including important features missing from several earlier efforts, (b) a method to lift monad operations through monad transformers, including difficult cases not achieved in earlier work, (c) a study of the semantic implications of the order of monad transformer composition, (d) a formal theory of modular monadic semantics that justifies our choice of liftings based on a notion of naturality, and (e) an implementation of our interpreter in Gofer, whose constructor classes provide just the added power over Haskell type classes to allow precise and convenient expression of our ideas. A note to reviewers: this paper is rather long. Short of resorting to “Part I / Part II”, the one way we see to shorten it would be to remove Section 4 and its Appendix B, which would amount to eliminating contribution (e) above. This would shorten the paper by about 12 pages.

...ta-language, and we prove that it is equivalent to the standard semantics. 5.2.1 Definition of a Natural Semantics We adopt Wand’s definition of a natural semantics (which differs from Kahn’s notion (=-=Clément et al., 1986-=-)) to our functional sub-language. For any source language variable name v, we assume there is a corresponding variable name v in the meta-language, and ρ is an environment that maps variable name v t...

"... ion and concretization operator from pattern list type to uniform ML list type The abstraction AbsML that maps every pattern list type scheme to a set of standard ML type scheme results from the definition of the concretization and the ordering vP on pattern list types. Property 2. The abstraction ..."

"... Highly integrated domain-specific environments are essential for the efficient design of complex physical products. However, developing such design environments is today a resource-consuming error-prone process that is largely manual. Meta-modeling and meta-programming are the key to the efficient d ..."

Highly integrated domain-specific environments are essential for the efficient design of complex physical products. However, developing such design environments is today a resource-consuming error-prone process that is largely manual. Meta-modeling and meta-programming are the key to the efficient development of such environments. The ultimate goal of our research is the development of a meta-modeling approach and its associated meta-programming methods for the synthesis of model-driven product design environments that support modeling and simulation. Such environments include model-editors, compilers, debuggers and simulators. This thesis presents several contributions towards this vision, in the context of the Modelica framework. Thus, we have first designed a meta-model for the object-oriented declarative modeling language Modelica, which facilitates the development of tools for analysis, checking, querying, documentation, transformation and management of Modelica models. We have used XML Schema for the representation of the meta-model, namely, ModelicaXML. Next, we have focused on the automatic composition, refactoring and transformation of Modelica models. We have

...has been successfully used at our department in teaching and for specifying and generating compilers from Natural Semantics for Java, Modelica (Fritzson et al. 2002 [37]), MiniML (Clément et al. 1986 =-=[25]-=-) and other languages. There are few systems implemented that compile or interpret Natural Semantics. One of these systems is Centaur (Borras et al. 1988 [19]) with its implementation of Natural Seman...

"... We consider a propositional spatial logic for finite trees. The logic includes A | B (tree composition), A ⊲ B (the implication induced by composition), and 0 (the unit of composition). We show that the satisfaction and validity problems are equivalent, and decidable. The crux of the argument is dev ..."

We consider a propositional spatial logic for finite trees. The logic includes A | B (tree composition), A ⊲ B (the implication induced by composition), and 0 (the unit of composition). We show that the satisfaction and validity problems are equivalent, and decidable. The crux of the argument is devising a finite enumeration of trees to consider when deciding whether a spatial implication is satisfied. We introduce a sequent calculus for the logic, and show it to be sound and complete with respect to an interpretation in terms of satisfaction. Finally, we describe a complete proof procedure for the sequent calculus. We envisage applications in the area of logic-based type systems for semistructured data. We describe a small programming language based on this idea. 1

"... Haskell benefits from a sophisticated type system, but implementors, programmers, and researchers suffer because it has no formal description. To remedy this shortcoming, we present a Haskell program that implements a Haskell typechecker, thus providing a mathematically rigorous specification in a n ..."

Haskell benefits from a sophisticated type system, but implementors, programmers, and researchers suffer because it has no formal description. To remedy this shortcoming, we present a Haskell program that implements a Haskell typechecker, thus providing a mathematically rigorous specification in a notation that is familiar to Haskell users. We expect this program to fill a serious gap in current descriptions of Haskell, both as a starting point for discussions about existing features of the type system, and as a platform from which to explore new proposals. 1

...ndly, the RML system is a fairly new tool for creating such specifications, and has previously been tried mainly on procedural and functional languages, such as Petrol – a mix of Pascal and C, Mini-ML=-=[2]-=- – a subset of Standard ML, and Mini-Freja – a lazy functional language. Using the system to model a modern complex object-oriented language such as Java is then a good evaluation of the system’s abil...