src/HOL/Lambda/Eta.thy
author berghofe
Fri, 24 Jul 1998 13:19:38 +0200
changeset 5184 9b8547a9496a
parent 5146 1ea751ae62b2
child 6307 fdf236c98914
permissions -rw-r--r--
Adapted to new datatype package.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1269
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
     1
(*  Title:      HOL/Lambda/Eta.thy
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
     2
    ID:         $Id$
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
     3
    Author:     Tobias Nipkow
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
     4
    Copyright   1995 TU Muenchen
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
     5
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
     6
Eta-reduction and relatives.
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
     7
*)
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
     8
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
     9
Eta = ParRed + Commutation +
2159
e650a3f6f600 Used nat_trans_tac. New Eta. various smaller changes.
nipkow
parents: 1900
diff changeset
    10
consts free :: dB => nat => bool
e650a3f6f600 Used nat_trans_tac. New Eta. various smaller changes.
nipkow
parents: 1900
diff changeset
    11
       decr :: dB => dB
e650a3f6f600 Used nat_trans_tac. New Eta. various smaller changes.
nipkow
parents: 1900
diff changeset
    12
       eta  :: "(dB * dB) set"
1269
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    13
2159
e650a3f6f600 Used nat_trans_tac. New Eta. various smaller changes.
nipkow
parents: 1900
diff changeset
    14
syntax  "-e>", "-e>>", "-e>=" , "->=" :: [dB,dB] => bool (infixl 50)
1269
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    15
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    16
translations
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    17
  "s -e>  t" == "(s,t) : eta"
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    18
  "s -e>> t" == "(s,t) : eta^*"
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    19
  "s -e>= t" == "(s,t) : eta^="
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    20
  "s ->=  t" == "(s,t) : beta^="
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    21
5184
9b8547a9496a Adapted to new datatype package.
berghofe
parents: 5146
diff changeset
    22
primrec
1900
c7a869229091 Simplified primrec definitions.
berghofe
parents: 1789
diff changeset
    23
  "free (Var j) i = (j=i)"
5146
nipkow
parents: 2159
diff changeset
    24
  "free (s $ t) i = (free s i | free t i)"
2159
e650a3f6f600 Used nat_trans_tac. New Eta. various smaller changes.
nipkow
parents: 1900
diff changeset
    25
  "free (Abs s) i = free s (Suc i)"
1269
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    26
1789
aade046ec6d5 Quotes now optional around inductive set
paulson
parents: 1376
diff changeset
    27
inductive eta
1269
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    28
intrs
5146
nipkow
parents: 2159
diff changeset
    29
   eta  "~free s 0 ==> Abs(s $ Var 0) -e> s[dummy/0]"
nipkow
parents: 2159
diff changeset
    30
   appL  "s -e> t ==> s$u -e> t$u"
nipkow
parents: 2159
diff changeset
    31
   appR  "s -e> t ==> u$s -e> u$t"
2159
e650a3f6f600 Used nat_trans_tac. New Eta. various smaller changes.
nipkow
parents: 1900
diff changeset
    32
   abs   "s -e> t ==> Abs s -e> Abs t"
1269
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    33
end
1900
c7a869229091 Simplified primrec definitions.
berghofe
parents: 1789
diff changeset
    34