doc-src/TutorialI/Recdef/Nested0.thy
changeset 9645 20ae97cd2a16
child 9754 a123a64cadeb
equal deleted inserted replaced
9644:6b0b6b471855 9645:20ae97cd2a16
       
     1 (*<*)
       
     2 theory Nested0 = Main:
       
     3 (*>*)
       
     4 
       
     5 text{*
       
     6 In \S\ref{sec:nested-datatype} we defined the datatype of terms
       
     7 *}
       
     8 
       
     9 datatype ('a,'b)"term" = Var 'a | App 'b "('a,'b)term list"
       
    10 
       
    11 text{*\noindent
       
    12 and closed with the observation that the associated schema for the definition
       
    13 of primitive recursive functions leads to overly verbose definitions. Moreover,
       
    14 if you have worked exercise~\ref{ex:trev-trev} you will have noticed that
       
    15 you needed to reprove many lemmas reminiscent of similar lemmas about
       
    16 @{term"rev"}. We will now show you how \isacommand{recdef} can simplify
       
    17 definitions and proofs about nested recursive datatypes. As an example we
       
    18 chose exercise~\ref{ex:trev-trev}:
       
    19 
       
    20 FIXME: declare trev now!
       
    21 *}
       
    22 (* consts trev  :: "('a,'b)term => ('a,'b)term" *)
       
    23 (*<*)
       
    24 end
       
    25 (*>*)