A Type Checker for a Logical Framework with Union and Intersection Types

We present the syntax, semantics, and typing rules of Bull, a prototype theorem prover based on the Delta-Framework, i.e. a fully-typed lambda-calculus decorated with union and intersection types, as described in previous papers by the authors. Bull also implements a subtyping algorithm for the Type...

Full description

Bibliographic Details
Main Authors: Liquori, Luigi, Stolze, Claude
Format: Article in Journal/Newspaper
Language:unknown
Published: arXiv 2020
Subjects:
Online Access:https://dx.doi.org/10.48550/arxiv.2002.10803
https://arxiv.org/abs/2002.10803
id ftdatacite:10.48550/arxiv.2002.10803
record_format openpolar
spelling ftdatacite:10.48550/arxiv.2002.10803 2023-05-15T15:41:56+02:00 A Type Checker for a Logical Framework with Union and Intersection Types Liquori, Luigi Stolze, Claude 2020 https://dx.doi.org/10.48550/arxiv.2002.10803 https://arxiv.org/abs/2002.10803 unknown arXiv arXiv.org perpetual, non-exclusive license http://arxiv.org/licenses/nonexclusive-distrib/1.0/ Logic in Computer Science cs.LO Programming Languages cs.PL FOS Computer and information sciences F.3.1; F.4.1 Article CreativeWork article Preprint 2020 ftdatacite https://doi.org/10.48550/arxiv.2002.10803 2022-03-10T16:01:48Z We present the syntax, semantics, and typing rules of Bull, a prototype theorem prover based on the Delta-Framework, i.e. a fully-typed lambda-calculus decorated with union and intersection types, as described in previous papers by the authors. Bull also implements a subtyping algorithm for the Type Theory Xi of Barbanera-Dezani-de'Liguoro. Bull has a command-line interface where the user can declare axioms, terms, and perform computations and some basic terminal-style features like error pretty-printing, subexpressions highlighting, and file loading. Moreover, it can typecheck a proof or normalize it. These terms can be incomplete, therefore the typechecking algorithm uses unification to try to construct the missing subterms. Bull uses the syntax of Berardi's Pure Type Systems to improve the compactness and the modularity of the kernel. Abstract and concrete syntax are mostly aligned and similar to the concrete syntax of Coq. Bull uses a higher-order unification algorithm for terms, while typechecking and partial type inference are done by a bidirectional refinement algorithm, similar to the one found in Matita and Beluga. The refinement can be split into two parts: the essence refinement and the typing refinement. Binders are implemented using commonly-used de Bruijn indices. We have defined a concrete language syntax that will allow the user to write Delta-terms. We have defined the reduction rules and an evaluator. We have implemented from scratch a refiner which does partial typechecking and type reconstruction. We have experimented Bull with classical examples of the intersection and union literature, such as the ones formalized by Pfenning with his Refinement Types in LF. We hope that this research vein could be useful to experiment, in a proof theoretical setting, forms of polymorphism alternatives to Girard's parametric one. Article in Journal/Newspaper Beluga Beluga* DataCite Metadata Store (German National Library of Science and Technology) Lambda ENVELOPE(-62.983,-62.983,-64.300,-64.300)
institution Open Polar
collection DataCite Metadata Store (German National Library of Science and Technology)
op_collection_id ftdatacite
language unknown
topic Logic in Computer Science cs.LO
Programming Languages cs.PL
FOS Computer and information sciences
F.3.1; F.4.1
spellingShingle Logic in Computer Science cs.LO
Programming Languages cs.PL
FOS Computer and information sciences
F.3.1; F.4.1
Liquori, Luigi
Stolze, Claude
A Type Checker for a Logical Framework with Union and Intersection Types
topic_facet Logic in Computer Science cs.LO
Programming Languages cs.PL
FOS Computer and information sciences
F.3.1; F.4.1
description We present the syntax, semantics, and typing rules of Bull, a prototype theorem prover based on the Delta-Framework, i.e. a fully-typed lambda-calculus decorated with union and intersection types, as described in previous papers by the authors. Bull also implements a subtyping algorithm for the Type Theory Xi of Barbanera-Dezani-de'Liguoro. Bull has a command-line interface where the user can declare axioms, terms, and perform computations and some basic terminal-style features like error pretty-printing, subexpressions highlighting, and file loading. Moreover, it can typecheck a proof or normalize it. These terms can be incomplete, therefore the typechecking algorithm uses unification to try to construct the missing subterms. Bull uses the syntax of Berardi's Pure Type Systems to improve the compactness and the modularity of the kernel. Abstract and concrete syntax are mostly aligned and similar to the concrete syntax of Coq. Bull uses a higher-order unification algorithm for terms, while typechecking and partial type inference are done by a bidirectional refinement algorithm, similar to the one found in Matita and Beluga. The refinement can be split into two parts: the essence refinement and the typing refinement. Binders are implemented using commonly-used de Bruijn indices. We have defined a concrete language syntax that will allow the user to write Delta-terms. We have defined the reduction rules and an evaluator. We have implemented from scratch a refiner which does partial typechecking and type reconstruction. We have experimented Bull with classical examples of the intersection and union literature, such as the ones formalized by Pfenning with his Refinement Types in LF. We hope that this research vein could be useful to experiment, in a proof theoretical setting, forms of polymorphism alternatives to Girard's parametric one.
format Article in Journal/Newspaper
author Liquori, Luigi
Stolze, Claude
author_facet Liquori, Luigi
Stolze, Claude
author_sort Liquori, Luigi
title A Type Checker for a Logical Framework with Union and Intersection Types
title_short A Type Checker for a Logical Framework with Union and Intersection Types
title_full A Type Checker for a Logical Framework with Union and Intersection Types
title_fullStr A Type Checker for a Logical Framework with Union and Intersection Types
title_full_unstemmed A Type Checker for a Logical Framework with Union and Intersection Types
title_sort type checker for a logical framework with union and intersection types
publisher arXiv
publishDate 2020
url https://dx.doi.org/10.48550/arxiv.2002.10803
https://arxiv.org/abs/2002.10803
long_lat ENVELOPE(-62.983,-62.983,-64.300,-64.300)
geographic Lambda
geographic_facet Lambda
genre Beluga
Beluga*
genre_facet Beluga
Beluga*
op_rights arXiv.org perpetual, non-exclusive license
http://arxiv.org/licenses/nonexclusive-distrib/1.0/
op_doi https://doi.org/10.48550/arxiv.2002.10803
_version_ 1766374807372300288