doc-src/IsarRef/Thy/HOL_Specific.thy
changeset 26985 51c5acd57b75
parent 26894 1120f6cc10b0
child 27041 22dcf2fc0aa2
equal deleted inserted replaced
26984:d0e098e206f3 26985:51c5acd57b75
   411     @{command_def (HOL) "fun"} & : & \isarkeep{local{\dsh}theory} \\
   411     @{command_def (HOL) "fun"} & : & \isarkeep{local{\dsh}theory} \\
   412     @{command_def (HOL) "function"} & : & \isartrans{local{\dsh}theory}{proof(prove)} \\
   412     @{command_def (HOL) "function"} & : & \isartrans{local{\dsh}theory}{proof(prove)} \\
   413     @{command_def (HOL) "termination"} & : & \isartrans{local{\dsh}theory}{proof(prove)} \\
   413     @{command_def (HOL) "termination"} & : & \isartrans{local{\dsh}theory}{proof(prove)} \\
   414   \end{matharray}
   414   \end{matharray}
   415 
   415 
   416   \railalias{funopts}{function\_opts}  %FIXME ??
       
   417 
       
   418   \begin{rail}
   416   \begin{rail}
   419     'primrec' target? fixes 'where' equations
   417     'primrec' target? fixes 'where' equations
   420     ;
   418     ;
   421     equations: (thmdecl? prop + '|')
   419     equations: (thmdecl? prop + '|')
   422     ;
   420     ;
   423     ('fun' | 'function') (funopts)? fixes 'where' clauses
   421     ('fun' | 'function') target? functionopts? fixes 'where' clauses
   424     ;
   422     ;
   425     clauses: (thmdecl? prop ('(' 'otherwise' ')')? + '|')
   423     clauses: (thmdecl? prop ('(' 'otherwise' ')')? + '|')
   426     ;
   424     ;
   427     funopts: '(' (('sequential' | 'in' name | 'domintros' | 'tailrec' |
   425     functionopts: '(' (('sequential' | 'domintros' | 'tailrec' | 'default' term) + ',') ')'
   428     'default' term) + ',') ')'
       
   429     ;
   426     ;
   430     'termination' ( term )?
   427     'termination' ( term )?
   431   \end{rail}
   428   \end{rail}
   432 
   429 
   433   \begin{descr}
   430   \begin{descr}
   489   programming.  Note that the resulting simplification and induction
   486   programming.  Note that the resulting simplification and induction
   490   rules correspond to the transformed specification, not the one given
   487   rules correspond to the transformed specification, not the one given
   491   originally. This usually means that each equation given by the user
   488   originally. This usually means that each equation given by the user
   492   may result in several theroems.  Also note that this automatic
   489   may result in several theroems.  Also note that this automatic
   493   transformation only works for ML-style datatype patterns.
   490   transformation only works for ML-style datatype patterns.
   494 
       
   495   \item [@{text "\<IN> name"}] gives the target for the definition.
       
   496   %FIXME ?!?
       
   497 
   491 
   498   \item [@{text domintros}] enables the automated generation of
   492   \item [@{text domintros}] enables the automated generation of
   499   introduction rules for the domain predicate. While mostly not
   493   introduction rules for the domain predicate. While mostly not
   500   needed, they can be helpful in some proofs about partial functions.
   494   needed, they can be helpful in some proofs about partial functions.
   501 
   495