AbstractWe report our experience with exploring a new point in the design space for formal reasoning systems: the development of the programming language Ωmega. Ωmega is intended as both a practical programming language and a logic. The main goal of Ωmega is to allow programmers to describe and reason about semantic properties of programs from within the programming language itself, mainly by using a powerful type system.We illustrate the main features of Ωmega by developing an interesting meta-programming example. First, we show how to encode a set of well-typed simply typed λ-calculus terms as an Ωmega data-type. Then, we show how to implement a substitution operation on these terms that is guaranteed by the Ωmega type system to preserve ...
We show how programming language semantics and definitions of their corresponding type systems can b...
Formal reasoning in proof assistants, also known as mechanization, has high development costs. Build...
There exists an identifiable programming style based on the widespread use of type information handl...
AbstractWe report our experience with exploring a new point in the design space for formal reasoning...
By allowing the programmer to write code that can generate code at run-time, meta-programming offers...
A functional language is introduced, whose type system is defined by its meta-circular interpreter. ...
Normalizing meta-theory, or proofs about programming languages, in a proof assistant has many well-k...
AbstractIn [12] we defined the λ&-calculus, a simple extension of the typed λ-calculus to model type...
We present a foundation for a computational meta-theory of languages with bindings implemented in a ...
Various meta-languages for the manipulation and specification of programs and programming languages ...
We investigate the development of a general-purpose framework for mechanized reasoning about the met...
Mechanisation of programming language research is of growing interest, and the act of mechanising ty...
Formalizing meta-theory, or proofs about programming languages, in a proof assistant has many well-k...
Various meta-languages for the manipulation and specification of programs and programming languages ...
Formalizing meta-theory, or proofs about programming languages, in a proof assistant has many well-k...
We show how programming language semantics and definitions of their corresponding type systems can b...
Formal reasoning in proof assistants, also known as mechanization, has high development costs. Build...
There exists an identifiable programming style based on the widespread use of type information handl...
AbstractWe report our experience with exploring a new point in the design space for formal reasoning...
By allowing the programmer to write code that can generate code at run-time, meta-programming offers...
A functional language is introduced, whose type system is defined by its meta-circular interpreter. ...
Normalizing meta-theory, or proofs about programming languages, in a proof assistant has many well-k...
AbstractIn [12] we defined the λ&-calculus, a simple extension of the typed λ-calculus to model type...
We present a foundation for a computational meta-theory of languages with bindings implemented in a ...
Various meta-languages for the manipulation and specification of programs and programming languages ...
We investigate the development of a general-purpose framework for mechanized reasoning about the met...
Mechanisation of programming language research is of growing interest, and the act of mechanising ty...
Formalizing meta-theory, or proofs about programming languages, in a proof assistant has many well-k...
Various meta-languages for the manipulation and specification of programs and programming languages ...
Formalizing meta-theory, or proofs about programming languages, in a proof assistant has many well-k...
We show how programming language semantics and definitions of their corresponding type systems can b...
Formal reasoning in proof assistants, also known as mechanization, has high development costs. Build...
There exists an identifiable programming style based on the widespread use of type information handl...