doc-src/Ref/theory-syntax.tex
author lcp
Mon, 21 Mar 1994 10:51:28 +0100
changeset 285 fd4a6585e5bf
child 295 dcde5024895d
permissions -rw-r--r--
first draft of Springer book
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
285
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     1
%% $Id$
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     2
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     3
\appendix
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     4
\newlinechar=-1  %mathsing.sty sets \newlinechar=`\|, which would cause mayhem
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     5
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     6
\chapter{Syntax of Isabelle Theories}\label{app:TheorySyntax}
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     7
\begin{itemize}
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     8
\item {\tt Typewriter font} denotes terminal symbols.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
     9
\item $id$, $tid$, $nat$, $string$ and $text$ are the lexical classes of
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    10
  identifiers, type identifiers, natural numbers, \ML\ strings (with their
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    11
  quotation marks) and arbitrary \ML\ text.  The first three are fully defined
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    12
  in the {\it Defining Logics} chapter of {\it Isabelle's Object Logics}.
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    13
\end{itemize}
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    14
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    15
\begin{rail}
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    16
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    17
theoryDef : id '=' (name + '+') ('+' extension | ());
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    18
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    19
name: id | string;
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    20
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    21
extension : classes default types arities consts trans rules 'end' ml
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    22
          ;
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    23
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    24
classes : ()
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    25
        | 'classes' ( ( id (  ()
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    26
                            | '<' (id + ',')
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    27
                           ) 
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    28
                       ) + )
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    29
        ;
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    30
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    31
default : ()
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    32
        | 'default' sort 
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    33
        ;
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    34
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    35
sort :  id
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    36
     | '\{' (id * ',') '\}'
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    37
     ;
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    38
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    39
types :  ()
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    40
      | 'types' ( ( type ( () | '(' infix ')' ) ) + )
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    41
      ;
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    42
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    43
type : ( () | tid | '(' ( tid + ',' ) ')') name ( () | '='  string );
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    44
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    45
infix : ( 'infixr' | 'infixl' ) nat;
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    46
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    47
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    48
arities :  ()
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    49
        | 'arities' ((( name + ',' ) '::' arity ) + )
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    50
        ;
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    51
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    52
arity   : ( () 
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    53
          | '(' (sort + ',') ')' 
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    54
          ) id
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    55
        ;
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    56
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    57
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    58
consts :  ()
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    59
       | 'consts' ( ( constDecl ( () | ( '(' mixfix ')' ) ) ) + )
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    60
       ;
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    61
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    62
constDecl : ( name + ',') '::' string ;
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    63
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    64
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    65
mixfix :  string ( () | ( () | ('[' (nat + ',') ']')) nat )
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    66
       | infix
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    67
       | 'binder' string nat ;
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    68
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    69
trans : ()
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    70
      | 'translations' ( pat ( '==' | '=>' | '<=' ) pat + )
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    71
      ;
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    72
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    73
pat : ( () | ( '(' id ')' ) ) string;
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    74
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    75
rules :  ()
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    76
      | 'rules' (( id string ) + )
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    77
      ;
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    78
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    79
ml :  ()
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    80
   | 'ML' text
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    81
   ;
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    82
fd4a6585e5bf first draft of Springer book
lcp
parents:
diff changeset
    83
\end{rail}