Results 1 
7 of
7
Essential language support for generic programming
 In PLDI ’05
, 2005
"... “Concepts ” are an essential language feature needed to support generic programming in the large. Concepts allow for succinct expression of bounds on type parameters of generic algorithms, enable systematic organization of problem domain abstractions, and make generic algorithms easier to use. In th ..."
Abstract

Cited by 27 (4 self)
 Add to MetaCart
(Show Context)
“Concepts ” are an essential language feature needed to support generic programming in the large. Concepts allow for succinct expression of bounds on type parameters of generic algorithms, enable systematic organization of problem domain abstractions, and make generic algorithms easier to use. In this paper we formalize the design of a type system and semantics for concepts that is suitable for nontypeinferencing languages. Our design shares much in common with the type classes of Haskell, though our primary influence is from best practices in the C ++ community, where concepts are used to document type requirements for templates in generic libraries. The technical development in this paper defines an extension to System F and a typedirected translation from the extension back to System F. The translation is proved sound; the proof is written in the human readable but machine checkable Isar language and has been automatically verified by the Isabelle proof assistant. This document was generated directly from the Isar theory files using Isabelle’s support for literate proofs.
Integrating Computer Algebra and Reasoning through the Type System of Aldor
, 2000
"... . A number of combinations of reasoning and computer algebra systems have been proposed; in this paper we describe another, namely a way to incorporate a logic in the computer algebra system Axiom. We examine the type system of Aldor { the Axiom Library Compiler { and show that with some modicat ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
. A number of combinations of reasoning and computer algebra systems have been proposed; in this paper we describe another, namely a way to incorporate a logic in the computer algebra system Axiom. We examine the type system of Aldor { the Axiom Library Compiler { and show that with some modications we can use the dependent types of the system to model a logic, under the CurryHoward isomorphism. We give a number of example applications of the logic we construct and explain a prototype implementation of a modied typechecking system written in Haskell. 1 Introduction Symbolic mathematical { or computer algebra { systems, such as Axiom [13], Maple and Mathematica, are in everyday use by scientists, engineers and indeed mathematicians, because they provide a user with techniques of, say, integration which far exceed those of the person themselves, and make routine many calculations which would have been impossible some years ago. These systems are, moreover, taught as standar...
On Measuring and Optimizing the Performance of . . .
, 2007
"... With the introduction of support for “generic” style programming in mainstream languages, it is possible to write generic algorithms by using parametric polymorphism. Parametric polymorphism can be expressed with templates in C++, generics in Java and C# and dependent types in Aldor. Generic code i ..."
Abstract
 Add to MetaCart
With the introduction of support for “generic” style programming in mainstream languages, it is possible to write generic algorithms by using parametric polymorphism. Parametric polymorphism can be expressed with templates in C++, generics in Java and C# and dependent types in Aldor. Generic code is not as fast as specialized code, because the compilers usually do not make any optimizations based on the specific properties of the data used by the generic algorithm. In order to make generic code appealing, the performance of generic code must be similar to that of specialized code. First goal of this thesis is to understand what is the performance penalty for using generic code for scientific computing. Ideally, programmers should be able to write expressive programs while compilers should do the optimization. Most benchmarks implement algorithms as efficiently as possible by specializing the code for particular data sets and even performing some hand optimizations in the source code to eliminate the impact of wether certain optimizations are performed. We have implemented SciGMark, a benchmark with both generic and specialized code that shows us the
Mei – A Module System for Mechanized Mathematics Systems (An extended version of PH.D. Thesis) By
, 2008
"... This thesis presents several module systems, in particular Mei and DMei, designed for mechanized mathematics systems. Mei is a λcalculus style module system that supports higherorder functors in a natural way. The semantics of functor application is based on substitution. A novel coercion mechanis ..."
Abstract
 Add to MetaCart
(Show Context)
This thesis presents several module systems, in particular Mei and DMei, designed for mechanized mathematics systems. Mei is a λcalculus style module system that supports higherorder functors in a natural way. The semantics of functor application is based on substitution. A novel coercion mechanism integrates a parameter passing mechanism based on theory interpretations with simple λcalculus style higherorder functors. DMei extends Mei by supporting dependent functor types. Mei is the first module system that successfully supports both higherorder functors and a parameter passing mechanism based on theory interpretations. ii Acknowledgments I would first like to express my sincere thanks and appreciation to my supervisor, Dr. William M. Farmer, for his insight, thoughtful guidance and constant encouragement throughout my study. Thanks to the members of my Supervisor Committee: Dr. Jacques Carette, Dr. Tom Maibaum, and Dr. Jeffery I. Zucker, for many valuable discussions and comments. Thanks to all my other professors for their help in these four years. Thanks to friends in ITC 206 for the time we shared together. Thanks to my brother, Qin, for his encouraging words “You might not be born to be creative, however you can work hard to be creative.”. Thanks to my sister, Yanping, and my brother, Jianping for pushing me forward constantly. Last but not least, many thanks to my parents for their support, my daughters, Katie and Kasidy, for the happiness they brought to me, and my wife, Yan Li, for her love and encouragement. I am grateful to have been partially supported by postgraduate scholarships from
Emacs for Aldor: . . .
, 2006
"... In this thesis, I observed and established communications between Emacs, the external lexical analyzers, and the parser. There are two versions of the lexical analyzers: internal and external. The internal lexical analyzer was implemented in the programming language of EmacsLISP. The core of the ex ..."
Abstract
 Add to MetaCart
In this thesis, I observed and established communications between Emacs, the external lexical analyzers, and the parser. There are two versions of the lexical analyzers: internal and external. The internal lexical analyzer was implemented in the programming language of EmacsLISP. The core of the external lexical analyzer was implemented in Flex. For the parser, Bison and Flex were used. This thesis describes (1) details of each component; (2) comparisons of the difference between internal and external information processing; (3) experimental advantages and disadvantages of each version; (4) evaluations of the efficiencies based on running time, memory usage, features presentations, and other resources usage; (5) what needs to be done to achieve such communications; and (6) Aldor syntaxes and grammar.
On the design of a Java computer . . .
"... This paper considers Java as an implementation language for a starting part of a computer algebra library. It describes a design of basic arithmetic and multivariate polynomial interfaces and classes which are then employed in advanced parallel and distributed Groebner base algorithms and applicatio ..."
Abstract
 Add to MetaCart
This paper considers Java as an implementation language for a starting part of a computer algebra library. It describes a design of basic arithmetic and multivariate polynomial interfaces and classes which are then employed in advanced parallel and distributed Groebner base algorithms and applications. The library is typesafe due to its design with Java’s generic type parameters and threadsafe using Java’s concurrent programming facilities.