doc-src/Tutorial/Datatype/Term.thy
author paulson
Wed, 11 Sep 2002 16:55:37 +0200
changeset 13566 52a419210d5c
parent 9255 2ceb11a2e190
permissions -rw-r--r--
Streamlined proofs of instances of Separation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5851
15ce4c1c8313 New section on advanced datatypes.
nipkow
parents:
diff changeset
     1
Term = Main +
9255
2ceb11a2e190 *** empty log message ***
nipkow
parents: 5851
diff changeset
     2
datatype
2ceb11a2e190 *** empty log message ***
nipkow
parents: 5851
diff changeset
     3
    'a aexp = IF ('a bexp) ('a aexp) ('a aexp)
2ceb11a2e190 *** empty log message ***
nipkow
parents: 5851
diff changeset
     4
            | Sum ('a aexp list)
2ceb11a2e190 *** empty log message ***
nipkow
parents: 5851
diff changeset
     5
            | Diff ('a aexp) ('a aexp)
2ceb11a2e190 *** empty log message ***
nipkow
parents: 5851
diff changeset
     6
            | Var 'a
2ceb11a2e190 *** empty log message ***
nipkow
parents: 5851
diff changeset
     7
            | Num nat
2ceb11a2e190 *** empty log message ***
nipkow
parents: 5851
diff changeset
     8
and 'a bexp = Less ('a aexp) ('a aexp)
2ceb11a2e190 *** empty log message ***
nipkow
parents: 5851
diff changeset
     9
            | And ('a bexp) ('a bexp)
2ceb11a2e190 *** empty log message ***
nipkow
parents: 5851
diff changeset
    10
            | Neg ('a bexp)
5851
15ce4c1c8313 New section on advanced datatypes.
nipkow
parents:
diff changeset
    11
datatype ('a,'b)term = Var 'a | App 'b ((('a,'b)term)list)
15ce4c1c8313 New section on advanced datatypes.
nipkow
parents:
diff changeset
    12
consts
15ce4c1c8313 New section on advanced datatypes.
nipkow
parents:
diff changeset
    13
   subst  :: ('a => ('a,'b)term) => ('a,'b)term      => ('a,'b)term
15ce4c1c8313 New section on advanced datatypes.
nipkow
parents:
diff changeset
    14
   substs :: ('a => ('a,'b)term) => ('a,'b)term list => ('a,'b)term list
15ce4c1c8313 New section on advanced datatypes.
nipkow
parents:
diff changeset
    15
primrec
15ce4c1c8313 New section on advanced datatypes.
nipkow
parents:
diff changeset
    16
  "subst s (Var x) = s x"
15ce4c1c8313 New section on advanced datatypes.
nipkow
parents:
diff changeset
    17
  "subst s (App f ts) = App f (substs s ts)"
15ce4c1c8313 New section on advanced datatypes.
nipkow
parents:
diff changeset
    18
  "substs s [] = []"
15ce4c1c8313 New section on advanced datatypes.
nipkow
parents:
diff changeset
    19
  "substs s (t # ts) = subst s t # substs s ts"
15ce4c1c8313 New section on advanced datatypes.
nipkow
parents:
diff changeset
    20
end