389 research outputs found
Towards a Java Subtyping Operad
The subtyping relation in Java exhibits self-similarity. The self-similarity
in Java subtyping is interesting and intricate due to the existence of wildcard
types and, accordingly, the existence of three subtyping rules for generic
types: covariant subtyping, contravariant subtyping and invariant subtyping.
Supporting bounded type variables also adds to the complexity of the subtyping
relation in Java and in other generic nominally-typed OO languages such as C#
and Scala. In this paper we explore defining an operad to model the
construction of the subtyping relation in Java and in similar generic
nominally-typed OO programming languages. Operads, from category theory, are
frequently used to model self-similar phenomena. The Java subtyping operad, we
hope, will shed more light on understanding the type systems of generic
nominally-typed OO languages.Comment: 13 page
Safe Transferable Regions
There is an increasing interest in alternative memory management schemes that seek to combine the convenience of garbage collection and the performance of manual memory management in a single language framework. Unfortunately, ensuring safety in presence of manual memory management remains as great a challenge as ever. In this paper, we present a C#-like object-oriented language called Broom that uses a combination of region type system and lightweight runtime checks to enforce safety in presence of user-managed memory regions called transferable regions. Unsafe transferable regions have been previously used to contain the latency due to unbounded GC pauses. Our approach shows that it is possible to restore safety without compromising on the benefits of transferable regions. We prove the type safety of Broom in a formal framework that includes its C#-inspired features, such as higher-order functions and generics. We complement our type system with a type inference algorithm, which eliminates the need for programmers to write region annotations on types. The inference algorithm has been proven sound and relatively complete. We describe a prototype implementation of the inference algorithm, and our experience of using it to enforce memory safety in dataflow programs
Improving support for generic programming in C# with associated types and constraint propagation
Generics has recently been adopted to many mainstream object oriented languages,
such as C# and Java. As a particular design choice, generics in C# and Java
use a sub-typing relation to constraint type parameters. Failing to encapsulate type
parameters within generic interfaces and inability to encapsulate type constraints as
part of an interface definition have been identified as deficiencies in the way this design
choice has been implemented in these languages. These deficiencies can lead to
verbose and redundant code. In particular, they have been reported to affect the
development of highly generic libraries. To address these issues, extending object
oriented interfaces and sub-typing with associated types and constraint propagation
has been proposed and studied in an idealized small-scale formal setting. This thesis
builds on this previous work and provides a design and implementation of the
extensions in full C#. We also present a proof of soundness of the Featherweight
Generic Java (FGJ) formalism extended with interfaces. This property was assumed
in a proof of type safety of associated types and constraint propagation, but no proof
for the property was provided
Matlab Stability and Control Toolbox: Trim and Static Stability Module
This paper presents the technical background of the Trim and Static module of the Matlab Stability and Control Toolbox. This module performs a low-fidelity stability and control assessment of an aircraft model for a set of flight critical conditions. This is attained by determining if the control authority available for trim is sufficient and if the static stability characteristics are adequate. These conditions can be selected from a prescribed set or can be specified to meet particular requirements. The prescribed set of conditions includes horizontal flight, take-off rotation, landing flare, steady roll, steady turn and pull-up/ push-over flight, for which several operating conditions can be specified. A mathematical model was developed allowing for six-dimensional trim, adjustable inertial properties, asymmetric vehicle layouts, arbitrary number of engines, multi-axial thrust vectoring, engine(s)-out conditions, crosswind and gyroscopic effects
Structural abstraction: a mechanism for modular program construction
Abstraction mechanisms in programming languages aim to allow orthogonal pieces of functionality to be developed separately; complex software can then be constructed through the composition of these pieces. The effectiveness of such mechanisms lies in their support for modularity and reusability: The behavior of a piece of code should be reasoned about modularly---independently of the specific compositions it may participate in; the computation of a piece of code should allow specialization, so that it is reusable for different compositions. This dissertation introduces structural abstraction: a mechanism that advances the state of the art by allowing the writing of highly reusable code---code whose structure can be specialized per composition, while maintaining a high level of modularity.
Structural abstraction provides a disciplined way for code to inspect the structure of its clients in composition, and declare its own structure accordingly. The hallmark feature of structural abstraction is that, despite its emphasis on greater reusability, it still allows modular type checking: A piece of structurally abstract code can be type-checked independently of its uses in compositions---an invaluable feature for highly reusable components that will be statically composed by other programmers.
This dissertation introduces two structural abstraction techniques: static type conditions, and morphing. Static type conditions allow code to be conditionally declared based on subtyping constraints. A client of a piece of code can configure a desirable set of features by composing the code with types that satisfy the appropriate subtyping conditions. Morphing allows code to be iteratively declared, by statically reflecting over the structural members of code that it would be composed with. A morphing piece of code can mimic the structure of its clients in composition, or change its shape according to its clients in a pattern-based manner. Using either static type conditions or morphing, the structure of a piece of code is not statically determined, but can be automatically specialized by clients. Static type conditions and morphing both guarantee the modular type-safety of code: regardless of specific client configurations, code is guaranteed to be well-typed.Ph.D.Committee Chair: Yannis Smaragdakis; Committee Member: Oege de Moor; Committee Member: Richard LeBlanc; Committee Member: Santosh Pande; Committee Member: Spencer Rugabe
Towards the automation of the Local Analytic Sector subtraction
We present the state of the art of the Local Analytic Sector subtraction. The scheme is now complete at NLO in the massless case for the treatment of initial- and final-state radiations. Its flexibility has been improved by the introduction of damping factors, which can be tuned to reduce numerical instabilities, though preserving the simplicity of the algorithm. The same degree of universality has been reached at NNLO for final-state radiation, where we derived fully analytic and compact results for all integrated counterterms. This allows us to explicitly check the cancellation of the virtual infrared singularities in generic processes with massless final-state partons
University Student Equity Initiatives: An Examination of the Efficacy of Programs and Practices to Inform Best Practice
This thesis identifies “Indicators of Success” for university student equity programs funded through the Higher Education Participation and Partnerships Program (HEPPP). This research focussed on practitioner perspectives of evaluation and reporting practices for equity programs which seek to widen participation in higher education by disadvantaged groups within the community. This research has produced an “Indicators of Success” framework and good practice model, at a time of heightened discussion about the evaluation of HEPPP funded programs
- …