doc-src/TutorialI/Recdef/Nested0.thy
author wenzelm
Sun, 15 Oct 2000 19:50:35 +0200
changeset 10220 2a726de6e124
parent 10186 499637e8f2c6
child 10885 90695f46440b
permissions -rw-r--r--
proper symbol markup with \isamath, \isatext; support sub/super scripts:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9645
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
     1
(*<*)
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
     2
theory Nested0 = Main:
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
     3
(*>*)
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
     4
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
     5
text{*
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
     6
In \S\ref{sec:nested-datatype} we defined the datatype of terms
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
     7
*}
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
     8
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
     9
datatype ('a,'b)"term" = Var 'a | App 'b "('a,'b)term list"
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
    10
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
    11
text{*\noindent
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
    12
and closed with the observation that the associated schema for the definition
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
    13
of primitive recursive functions leads to overly verbose definitions. Moreover,
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
    14
if you have worked exercise~\ref{ex:trev-trev} you will have noticed that
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
    15
you needed to reprove many lemmas reminiscent of similar lemmas about
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
    16
@{term"rev"}. We will now show you how \isacommand{recdef} can simplify
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
    17
definitions and proofs about nested recursive datatypes. As an example we
9754
a123a64cadeb *** empty log message ***
nipkow
parents: 9645
diff changeset
    18
choose exercise~\ref{ex:trev-trev}:
9645
20ae97cd2a16 *** empty log message ***
nipkow
parents:
diff changeset
    19
*}
10186
499637e8f2c6 *** empty log message ***
nipkow
parents: 9754
diff changeset
    20
499637e8f2c6 *** empty log message ***
nipkow
parents: 9754
diff changeset
    21
consts trev  :: "('a,'b)term \<Rightarrow> ('a,'b)term"
499637e8f2c6 *** empty log message ***
nipkow
parents: 9754
diff changeset
    22
(*<*)end(*>*)