2,211 research outputs found
Semantic subtyping for objects and classes
In this paper we propose an integration of structural subtyping with boolean
connectives and semantic subtyping to define a Java-like programming language
that exploits the benefits of both techniques. Semantic subtyping is an approach
for defining subtyping relation based on set-theoretic models, rather than syntactic
rules. On the one hand, this approach involves some non trivial mathematical
machinery in the background. On the other hand, final users of the language need
not know this machinery and the resulting subtyping relation is very powerful and
intuitive. While semantic subtyping is naturally linked to the structural one, we
show how our framework can also accommodate the nominal subtyping. Several
examples show the expressivity and the practical advantages of our proposal
Covariance and Controvariance: a fresh look at an old issue (a primer in advanced type systems for learning functional programmers)
Twenty years ago, in an article titled "Covariance and contravariance:
conflict without a cause", I argued that covariant and contravariant
specialization of method parameters in object-oriented programming had
different purposes and deduced that, not only they could, but actually they
should both coexist in the same language.
In this work I reexamine the result of that article in the light of recent
advances in (sub-)typing theory and programming languages, taking a fresh look
at this old issue.
Actually, the revamping of this problem is just an excuse for writing an
essay that aims at explaining sophisticated type-theoretic concepts, in simple
terms and by examples, to undergraduate computer science students and/or
willing functional programmers.
Finally, I took advantage of this opportunity to describe some undocumented
advanced techniques of type-systems implementation that are known only to few
insiders that dug in the code of some compilers: therefore, even expert
language designers and implementers may find this work worth of reading
Variable types for meaning assembly: a logical syntax for generic noun phrases introduced by most
This paper proposes a way to compute the meanings associated with sentences
with generic noun phrases corresponding to the generalized quantifier most. We
call these generics specimens and they resemble stereotypes or prototypes in
lexical semantics. The meanings are viewed as logical formulae that can
thereafter be interpreted in your favourite models. To do so, we depart
significantly from the dominant Fregean view with a single untyped universe.
Indeed, our proposal adopts type theory with some hints from Hilbert
\epsilon-calculus (Hilbert, 1922; Avigad and Zach, 2008) and from medieval
philosophy, see e.g. de Libera (1993, 1996). Our type theoretic analysis bears
some resemblance with ongoing work in lexical semantics (Asher 2011; Bassac et
al. 2010; Moot, Pr\'evot and Retor\'e 2011). Our model also applies to
classical examples involving a class, or a generic element of this class, which
is not uttered but provided by the context. An outcome of this study is that,
in the minimalism-contextualism debate, see Conrad (2011), if one adopts a type
theoretical view, terms encode the purely semantic meaning component while
their typing is pragmatically determined
Mixin Composition Synthesis based on Intersection Types
We present a method for synthesizing compositions of mixins using type
inhabitation in intersection types. First, recursively defined classes and
mixins, which are functions over classes, are expressed as terms in a lambda
calculus with records. Intersection types with records and record-merge are
used to assign meaningful types to these terms without resorting to recursive
types. Second, typed terms are translated to a repository of typed combinators.
We show a relation between record types with record-merge and intersection
types with constructors. This relation is used to prove soundness and partial
completeness of the translation with respect to mixin composition synthesis.
Furthermore, we demonstrate how a translated repository and goal type can be
used as input to an existing framework for composition synthesis in bounded
combinatory logic via type inhabitation. The computed result is a class typed
by the goal type and generated by a mixin composition applied to an existing
class
Modelling the Semantic Web using a Type System
We present an approach for modeling the Semantic Web as a type system. By
using a type system, we can use symbolic representation for representing linked
data. Objects with only data properties and references to external resources
are represented as terms in the type system. Triples are represented
symbolically using type constructors as the predicates. In our type system, we
allow users to add analytics that utilize machine learning or knowledge
discovery to perform inductive reasoning over data. These analytics can be used
by the inference engine when performing reasoning to answer a query.
Furthermore, our type system defines a means to resolve semantic heterogeneity
on-the-fly
- …