src/Doc/Datatypes/Datatypes.thy
changeset 57988 030ff4ceb6c3
parent 57984 cbe9a16f8e11
child 58000 52181f7b4468
equal deleted inserted replaced
57987:ecb227b40907 57988:030ff4ceb6c3
   533 The syntactic entity \synt{name} denotes an identifier, \synt{mixfix} denotes
   533 The syntactic entity \synt{name} denotes an identifier, \synt{mixfix} denotes
   534 the usual parenthesized mixfix notation, and \synt{typefree} denotes fixed type
   534 the usual parenthesized mixfix notation, and \synt{typefree} denotes fixed type
   535 variable (@{typ 'a}, @{typ 'b}, \ldots) \cite{isabelle-isar-ref}.
   535 variable (@{typ 'a}, @{typ 'b}, \ldots) \cite{isabelle-isar-ref}.
   536 
   536 
   537 The optional names preceding the type variables allow to override the default
   537 The optional names preceding the type variables allow to override the default
   538 names of the set functions (@{text set1_t}, \ldots, @{text setM_t}). Type
   538 names of the set functions (@{text set\<^sub>1_t}, \ldots, @{text set\<^sub>m_t}). Type
   539 arguments can be marked as dead by entering ``@{text dead}'' in front of the
   539 arguments can be marked as dead by entering ``@{text dead}'' in front of the
   540 type variable (e.g., ``@{text "(dead 'a)"}''); otherwise, they are live or dead
   540 type variable (e.g., ``@{text "(dead 'a)"}''); otherwise, they are live or dead
   541 (and a set function is generated or not) depending on where they occur in the
   541 (and a set function is generated or not) depending on where they occur in the
   542 right-hand sides of the definition. Declaring a type argument as dead can speed
   542 right-hand sides of the definition. Declaring a type argument as dead can speed
   543 up the type definition but will prevent any later (co)recursion through that
   543 up the type definition but will prevent any later (co)recursion through that
   645 
   645 
   646 \begin{tabular}{@ {}ll@ {}}
   646 \begin{tabular}{@ {}ll@ {}}
   647 Case combinator: &
   647 Case combinator: &
   648   @{text t.case_t} (rendered using the familiar @{text case}--@{text of} syntax) \\
   648   @{text t.case_t} (rendered using the familiar @{text case}--@{text of} syntax) \\
   649 Discriminators: &
   649 Discriminators: &
   650   @{text "t.is_C\<^sub>1"}$, \ldots, $@{text "t.is_C\<^sub>n"} \\
   650   @{text t.is_C\<^sub>1}$, \ldots, $@{text t.is_C\<^sub>n} \\
   651 Selectors: &
   651 Selectors: &
   652   @{text t.un_C\<^sub>11}$, \ldots, $@{text t.un_C\<^sub>1k\<^sub>1} \\
   652   @{text t.un_C\<^sub>11}$, \ldots, $@{text t.un_C\<^sub>1k\<^sub>1} \\
   653 & \quad\vdots \\
   653 & \quad\vdots \\
   654 & @{text t.un_C\<^sub>n1}$, \ldots, $@{text t.un_C\<^sub>nk\<^sub>n} \\
   654 & @{text t.un_C\<^sub>n1}$, \ldots, $@{text t.un_C\<^sub>nk\<^sub>n} \\
   655 Set functions: &
   655 Set functions: &
   656   @{text t.set1_t}, \ldots, @{text t.setm_t} \\
   656   @{text t.set\<^sub>1_t}, \ldots, @{text t.set\<^sub>m_t} \\
   657 Map function: &
   657 Map function: &
   658   @{text t.map_t} \\
   658   @{text t.map_t} \\
   659 Relator: &
   659 Relator: &
   660   @{text t.rel_t} \\
   660   @{text t.rel_t} \\
   661 Recursor: &
   661 Recursor: &
   858 
   858 
   859 \item[@{text "t."}\hthm{set} @{text "[simp, code]"}\rm:] ~ \\
   859 \item[@{text "t."}\hthm{set} @{text "[simp, code]"}\rm:] ~ \\
   860 @{thm list.set(1)[no_vars]} \\
   860 @{thm list.set(1)[no_vars]} \\
   861 @{thm list.set(2)[no_vars]}
   861 @{thm list.set(2)[no_vars]}
   862 
   862 
   863 \item[@{text "t."}\hthm{set_cases}\rm:] ~ \\
   863 \item[@{text "t."}\hthm{set_cases} @{text "[consumes 1, cases set: set\<^sub>i_t]"}\rm:] ~ \\
   864 @{thm list.set_cases[no_vars]}
   864 @{thm list.set_cases[no_vars]}
   865 
   865 
   866 \item[@{text "t."}\hthm{set_empty}\rm:] ~ \\
   866 \item[@{text "t."}\hthm{set_empty}\rm:] ~ \\
   867 @{thm list.set_empty[no_vars]}
   867 @{thm list.set_empty[no_vars]}
   868 
   868