Results 1 -
7 of
7
Phantom Types
, 2003
"... Phantom types are data types with type constraints associated with dierent cases. Examples of phantom types include typed type representations and typed higher-order abstract syntax trees. These types can be used to support typed generic functions, dynamic typing, and staged compilation in highe ..."
Abstract
-
Cited by 91 (0 self)
- Add to MetaCart
Phantom types are data types with type constraints associated with dierent cases. Examples of phantom types include typed type representations and typed higher-order abstract syntax trees. These types can be used to support typed generic functions, dynamic typing, and staged compilation in higher-order, statically typed languages such as Haskell or Standard ML. In our system, type constraints can be equations between type constructors as well as type functions of higher-order kinds. We prove type soundness and decidability for a Haskell-like language extended by phantom types.
Generic programming: An introduction
- 3rd International Summer School on Advanced Functional Programming
, 1999
"... ..."
A theory of overloading
- ACM Transactions on Programming Languages and Systems (TOPLAS
, 2002
"... Abstract We introduce a novel approach for debugging ill-typed programs in the Hindley/Milner system. We map the typing problem for a program to a system of constraints each attached to program code that generates the constraints. We use reasoning about constraint satisfiability and implication to f ..."
Abstract
-
Cited by 52 (17 self)
- Add to MetaCart
Abstract We introduce a novel approach for debugging ill-typed programs in the Hindley/Milner system. We map the typing problem for a program to a system of constraints each attached to program code that generates the constraints. We use reasoning about constraint satisfiability and implication to find minimal justifications of type errors, and to explain unexpected types that arise. Through an interactive process akin to declarative debugging, a user can track down exactly where a type error occurs. We are able to capture various extensions of the Hindley/Milner system such as type annotations and Haskell-style type class overloading. The approach has been implemented as part of the Chameleon system.
A logical framework with dependently typed records
- In Proceedings of TLCA 2003, volume 2701 of LNCS
, 2003
"... ..."
Combining Testing and Proving in Dependent Type Theory
- 16th International Conference on Theorem Proving in Higher Order Logics (TPHOLs 2003
, 2003
"... We extend the proof assistant Agda/Alfa for dependent type theory with a modi ed version of Claessen and Hughes' tool QuickCheck for random testing of functional programs. In this way we combine testing and proving in one system. Testing is used for debugging programs and speci cations before ..."
Abstract
-
Cited by 12 (1 self)
- Add to MetaCart
We extend the proof assistant Agda/Alfa for dependent type theory with a modi ed version of Claessen and Hughes' tool QuickCheck for random testing of functional programs. In this way we combine testing and proving in one system. Testing is used for debugging programs and speci cations before a proof is attempted. Furthermore, we demonstrate by example how testing can be used repeatedly during proof for testing suitable subgoals. Our tool uses testdata generators which are de ned inside Agda/Alfa. We can therefore use the type system to prove properties about them, in particular surjectivity stating that all possible test cases can indeed be generated.
Programming with Dependent Types and Higher-Order Encodings
"... In this work, we propose a temporal logic with a past-time operator, show its soundness, and establish a Curry-Howard correspondence to a λ-calculus. Furthermore, we illustrate how it serves as a logical foundation for programming with dependently typed data, supports programming with higher-order a ..."
Abstract
- Add to MetaCart
In this work, we propose a temporal logic with a past-time operator, show its soundness, and establish a Curry-Howard correspondence to a λ-calculus. Furthermore, we illustrate how it serves as a logical foundation for programming with dependently typed data, supports programming with higher-order abstract syntax and hypothetical judgments. Sample programs that we discuss in this paper include bracket abstraction. Important Note: There is an updated/simplified presentation of this system available as Yale Technical Report TR-1364
Functional Calculi for Dependent Types and Higher-Order Encodings
"... Dependent-types and higher-order encodings lead to concise and elegant representations of complex data structures as evidenced by the success of the logical framework LF [HHP93]. In this work we first design a functional calculus utilizing LF to represent its data objects. To avoid problems commonly ..."
Abstract
- Add to MetaCart
Dependent-types and higher-order encodings lead to concise and elegant representations of complex data structures as evidenced by the success of the logical framework LF [HHP93]. In this work we first design a functional calculus utilizing LF to represent its data objects. To avoid problems commonly associated with using the same function space for both representation (LF objects) and computation, we separate the two as influenced by our previous work [Sch05]. We then exploit the power of the past time connective from temporal logic to design a meta-logic to reason about higherorder abstract syntax. Sample programs that we discuss in this paper include bracket abstraction and a theorem prover. It is important to note that this technical report is an enhancement/ simplification of a previous technical report [Pos06] where past-time was used as a modal operator in the meta-logic for LF. Here, we use past-time on the meta-meta-level for LF. 1

