blob: a34b03a491d1face37775cb16658647c24b6dd19 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
\documentclass{article}
\usepackage{fullpage}
\input{./macros.tex}
\newcommand{\minicoq}{\textsf{minicoq}}
\newcommand{\nonterm}[1]{\textit{#1}}
\newcommand{\terminal}[1]{\textsf{#1}}
\newcommand{\listzero}{\textit{LIST$_0$}}
\newcommand{\listun}{\textit{LIST$_1$}}
\newcommand{\sep}{\textit{SEP}}
\title{Minicoq: a type-checker for the pure \\
Calculus of Inductive Constructions}
\begin{document}
\maketitle
\section{Introduction}
\minicoq\ is a minimal toplevel for the \Coq\ kernel.
\section{Grammar of terms}
The grammar of \minicoq's terms is given in Figure~\ref{fig:terms}.
\begin{figure}[htbp]
\hrulefill
\begin{center}
\begin{tabular}{lrl}
term & ::= & identifier \\
& $|$ & \terminal{Rel} integer \\
& $|$ & \terminal{Set} \\
& $|$ & \terminal{Prop} \\
& $|$ & \terminal{Type} \\
& $|$ & \terminal{Const} identifier \\
& $|$ & \terminal{Ind} identifier integer \\
& $|$ & \terminal{Construct} identifier integer integer \\
& $|$ & \terminal{[} name \terminal{:} term
\terminal{]} term \\
& $|$ & \terminal{(} name \terminal{:} term
\terminal{)} term \\
& $|$ & term \verb!->! term \\
& $|$ & \terminal{(} \listun\ term \terminal{)} \\
& $|$ & \terminal{(} term \terminal{::} term \terminal{)} \\
& $|$ & \verb!<! term \verb!>! \terminal{Case}
term \terminal{of} \listzero\ term \terminal{end}
\\[1em]
name & ::= & \verb!_! \\
& $|$ & identifier
\end{tabular}
\end{center}
\hrulefill
\caption{Grammar of terms}
\label{fig:terms}
\end{figure}
\section{Commands}
The grammar of \minicoq's commands are given in
Figure~\ref{fig:commands}. All commands end with a dot.
\begin{figure}[htbp]
\hrulefill
\begin{center}
\begin{tabular}{lrl}
command & ::= & \terminal{Definition} identifier \terminal{:=} term. \\
& $|$ & \terminal{Definition} identifier \terminal{:} term
\terminal{:=} term. \\
& $|$ & \terminal{Parameter} identifier \terminal{:} term. \\
& $|$ & \terminal{Variable} identifier \terminal{:} term. \\
& $|$ & \terminal{Inductive} \terminal{[} \listzero\ param
\terminal{]} \listun\ inductive \sep\
\terminal{with}. \\
& $|$ & \terminal{Check} term.
\\[1em]
param & ::= & identifier
\\[1em]
inductive & ::= & identifier \terminal{:} term \terminal{:=}
\listzero\ constructor \sep\ \terminal{$|$}
\\[1em]
constructor & ::= & identifier \terminal{:} term
\end{tabular}
\end{center}
\hrulefill
\caption{Commands}
\label{fig:commands}
\end{figure}
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:
|