Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where James McKinna is active.

Publication


Featured researches published by James McKinna.


Journal of Functional Programming | 2004

The view from the left

Conor McBride; James McKinna

Pattern matching has proved an extremely powerful and durable notion in functional programming. This paper contributes a new programming notation for type theory which elaborates the notion in various ways. First, as is by now quite well-known in the type theory community, definition by pattern matching becomes a more discriminating tool in the presence of dependent types, since it refines the explanation of types as well as values. This becomes all the more true in the presence of the rich class of datatypes known as inductive families (Dybjer, 1991). Secondly, as proposed by Peyton Jones (1997) for Haskell, and independently rediscovered by us, subsidiary case analyses on the results of intermediate computations, which commonly take place on the right-hand side of definitions by pattern matching, should rather be handled on the left. In simply-typed languages, this subsumes the trivial case of Boolean guards; in our setting it becomes yet more powerful. Thirdly, elementary pattern matching decompositions have a well-defined interface given by a dependent type; they correspond to the statement of an induction principle for the datatype. More general, user-definable decompositions may be defined which also have types of the same general form. Elementary pattern matching may therefore be recast in abstract form, with a semantics given by translation. Such abstract decompositions of data generalize Wadlers (1987) notion of ‘view’. The programmer wishing to introduce a new view of a type


Journal of Automated Reasoning | 1999

Some Lambda Calculus and Type Theory Formalized

James McKinna; Robert Pollack

\mathit{T}


international conference on typed lambda calculi and applications | 1993

Pure Type Systems Formalized

James McKinna; Robert Pollack

, and exploit it directly in pattern matching, may do so via a standard programming idiom. The type theorist, looking through the Curry–Howard lens, may see this as proving a theorem, one which establishes the validity of a new induction principle for


types for proofs and programs | 2003

Inductive Families Need Not Store Their Indices

Edwin Brady; Conor McBride; James McKinna

\mathit{T}


mathematical foundations of computer science | 1993

Deliverables: A Categorial Approach to Program Development in Type Theory

James McKinna; Rod M. Burstall

. We develop enough syntax and semantics to account for this high-level style of programming in dependent type theory. We close with the development of a typechecker for the simply-typed lambda calculus, which furnishes a view of raw terms as either being well-typed, or containing an error. The implementation of this view is ipso facto a proof that typechecking is decidable.


types for proofs and programs | 1994

Checking algorithms for pure type systems

L. S. van Benthem Jutting; James McKinna; Robert Pollack

We survey a substantial body of knowledge about lambda calculus and Pure Type Systems, formally developed in a constructive type theory using the LEGO proof system. On lambda calculus, we work up to an abstract, simplified proof of standardization for beta reduction that does not mention redex positions or residuals. Then we outline the meta theory of Pure Type Systems, leading to the strengthening lemma. One novelty is our use of named variables for the formalization. Along the way we point out what we feel has been learned about general issues of formalizing mathematics, emphasizing the search for formal definitions that are convenient for formal proof and convincingly represent the intended informal concepts.


Lecture Notes in Computer Science | 2006

Eliminating Dependent Pattern Matching

Healfdene Goguen; Conor McBride; James McKinna

In doing this work of formalizing a well known body of mathematics, we spent a large amount of time solving mathematical problems, e.g. the Thinning Lemma. Another big problem was maintaining and organizing the formal knowledge, e.g. allowing two people to extend different parts of the data base at the same time, and finding the right lemma in the mass of checked material. We feel that better understanding of mathematical issues of formalization (e.g. names/namefree, intentional/extentional), and organization of formal development are the most useful areas to work on now for the long-term goal of formal mathematics.


Logical Methods in Computer Science | 2011

A focused sequent calculus framework for proof-search in pure type systems

Stéphane Lengrand; Roy Dyckhoff; James McKinna

We consider the problem of efficient representation of dependently typed data. In particular, we consider a language TT based on Dybjer’s notion of inductive families [10] and reanalyse their general form with a view to optimising the storage associated with their use. We introduce an execution language, ExTT, which allows the commenting out of computationally irrelevant subterms and show how to use properties of elimination rules to elide constructor arguments and tags in ExTT. We further show how some types can be collapsed entirely at run-time. Several examples are given, including a representation of the simply typed λ-calculus for which our analysis yields an 80% reduction in run-time storage requirements.


certified programs and proofs | 2017

Type-and-scope safe programs and their proofs

Guillaume Allais; James Chapman; Conor McBride; James McKinna

We describe a method for formally developing functional programs using the “propositions as types” paradigm. The idea is that a function together with its proof of correctness forms a morphism in a category whose objects are input/output specifications. The functionproof pairs, called “deliverables”, can be combined by the operations of a cartesian closed category, indeed by the same operations which are usually used to combine functions. The method has been implemented using the Lego proof assistant and tried on some examples.


types for proofs and programs | 2004

A few constructions on constructors

Conor McBride; Healfdene Goguen; James McKinna

We have presented efficient syntax directed presentations of two subclasses of PTS: the semi-full systems, via the ⊢ sdsf relation the functional systems, via the ⊢f relation

Collaboration


Dive into the James McKinna's collaboration.

Top Co-Authors

Avatar

Conor McBride

University of Strathclyde

View shared research outputs
Top Co-Authors

Avatar

Edwin Brady

University of St Andrews

View shared research outputs
Top Co-Authors

Avatar

Herman Geuvers

Radboud University Nijmegen

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Kevin Hammond

University of St Andrews

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Carst Tankink

Radboud University Nijmegen

View shared research outputs
Top Co-Authors

Avatar

Freek Wiedijk

Radboud University Nijmegen

View shared research outputs
Top Co-Authors

Avatar

Lionel Mamane

Radboud University Nijmegen

View shared research outputs
Researchain Logo
Decentralizing Knowledge