summaryrefslogtreecommitdiff
path: root/dev/doc/minicoq.tex
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: