equal
deleted
inserted
replaced
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 |