\<subseteq> syntax for classes/classrel/axclass/instance;
authorwenzelm
Mon, 12 Feb 2001 20:44:02 +0100
changeset 11100 34d58b1818f4
parent 11099 b301d1f72552
child 11101 014e7b5c77ba
\<subseteq> syntax for classes/classrel/axclass/instance;
doc-src/IsarRef/generic.tex
doc-src/IsarRef/isar-ref.tex
doc-src/IsarRef/pure.tex
doc-src/IsarRef/syntax.tex
--- a/doc-src/IsarRef/generic.tex	Mon Feb 12 20:43:12 2001 +0100
+++ b/doc-src/IsarRef/generic.tex	Mon Feb 12 20:44:02 2001 +0100
@@ -25,23 +25,24 @@
 \begin{rail}
   'axclass' classdecl (axmdecl prop comment? +)
   ;
-  'instance' (nameref '<' nameref | nameref '::' simplearity) comment?
+  'instance' (nameref ('<' | subseteq) nameref | nameref '::' simplearity) comment?
   ;
 \end{rail}
 
 \begin{descr}
-\item [$\AXCLASS~c < \vec c~axms$] defines an axiomatic type class as the
-  intersection of existing classes, with additional axioms holding.  Class
+\item [$\AXCLASS~c \subseteq \vec c~axms$] defines an axiomatic type class as
+  the intersection of existing classes, with additional axioms holding.  Class
   axioms may not contain more than one type variable.  The class axioms (with
   implicit sort constraints added) are bound to the given names.  Furthermore
   a class introduction rule is generated, which is employed by method
   $intro_classes$ to support instantiation proofs of this class.
   
-\item [$\INSTANCE~c@1 < c@2$ and $\INSTANCE~t :: (\vec s)c$] setup a goal
-  stating a class relation or type arity.  The proof would usually proceed by
-  $intro_classes$, and then establish the characteristic theorems of the type
-  classes involved.  After finishing the proof, the theory will be augmented
-  by a type signature declaration corresponding to the resulting theorem.
+\item [$\INSTANCE~c@1 \subseteq c@2$ and $\INSTANCE~t :: (\vec s)c$] setup a
+  goal stating a class relation or type arity.  The proof would usually
+  proceed by $intro_classes$, and then establish the characteristic theorems
+  of the type classes involved.  After finishing the proof, the theory will be
+  augmented by a type signature declaration corresponding to the resulting
+  theorem.
 \item [$intro_classes$] repeatedly expands all class introduction rules of
   this theory.  Note that this method usually needs not be named explicitly,
   as it is already included in the default proof step (of $\PROOFNAME$,
--- a/doc-src/IsarRef/isar-ref.tex	Mon Feb 12 20:43:12 2001 +0100
+++ b/doc-src/IsarRef/isar-ref.tex	Mon Feb 12 20:44:02 2001 +0100
@@ -18,6 +18,7 @@
 \newcommand{\isasymrightharpoonup}{\isamath{\rightharpoonup}}
 \newcommand{\isasymrightleftharpoons}{\isamath{\rightleftharpoons}}
 \newcommand{\isasymequiv}{\isamath{\equiv}}
+\newcommand{\isasymsubseteq}{\isamath{\subseteq}}
 
 \railterm{percent,ppercent,underscore,lbrace,rbrace,atsign}
 \railterm{ident,longident,symident,var,textvar,typefree,typevar,nat,string,verbatim,keyword}
--- a/doc-src/IsarRef/pure.tex	Mon Feb 12 20:43:12 2001 +0100
+++ b/doc-src/IsarRef/pure.tex	Mon Feb 12 20:44:02 2001 +0100
@@ -159,17 +159,18 @@
 \begin{rail}
   'classes' (classdecl comment? +)
   ;
-  'classrel' nameref '<' nameref comment?
+  'classrel' nameref ('<' | subseteq) nameref comment?
   ;
   'defaultsort' sort comment?
   ;
 \end{rail}
 
 \begin{descr}
-\item [$\isarkeyword{classes}~c<\vec c$] declares class $c$ to be a subclass
-  of existing classes $\vec c$.  Cyclic class structures are ruled out.
-\item [$\isarkeyword{classrel}~c@1<c@2$] states a subclass relation between
-  existing classes $c@1$ and $c@2$.  This is done axiomatically!  The
+\item [$\isarkeyword{classes}~c \subseteq \vec c$] declares class $c$ to be a
+  subclass of existing classes $\vec c$.  Cyclic class structures are ruled
+  out.
+\item [$\isarkeyword{classrel}~c@1 \subseteq c@2$] states a subclass relation
+  between existing classes $c@1$ and $c@2$.  This is done axiomatically!  The
   $\INSTANCE$ command (see \S\ref{sec:axclass}) provides a way to introduce
   proven class relations.
 \item [$\isarkeyword{defaultsort}~s$] makes sort $s$ the new default sort for
--- a/doc-src/IsarRef/syntax.tex	Mon Feb 12 20:43:12 2001 +0100
+++ b/doc-src/IsarRef/syntax.tex	Mon Feb 12 20:44:02 2001 +0100
@@ -159,10 +159,13 @@
 referring to the intersection of these classes.  The syntax of type arities is
 given directly at the outer level.
 
+\railalias{subseteq}{\isasymsubseteq}
+\railterm{subseteq}
+
 \indexouternonterm{sort}\indexouternonterm{arity}\indexouternonterm{simplearity}
 \indexouternonterm{classdecl}
 \begin{rail}
-  classdecl: name ('<' (nameref + ','))?
+  classdecl: name (('<' | subseteq) (nameref + ','))?
   ;
   sort: nameref
   ;