src/HOL/Lambda/Eta.thy
author paulson
Thu, 06 Jun 1996 14:39:44 +0200
changeset 1789 aade046ec6d5
parent 1376 92f83b9d17e1
child 1900 c7a869229091
permissions -rw-r--r--
Quotes now optional around inductive set
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 +
1376
92f83b9d17e1 removed quotes from consts and syntax sections
clasohm
parents: 1269
diff changeset
    10
consts free :: db => nat => bool
92f83b9d17e1 removed quotes from consts and syntax sections
clasohm
parents: 1269
diff changeset
    11
       decr :: [db,nat] => db
1269
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    12
       eta  :: "(db * db) set"
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    13
1376
92f83b9d17e1 removed quotes from consts and syntax sections
clasohm
parents: 1269
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
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    22
primrec free Lambda.db
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    23
  free_Var "free (Var j) i = (j=i)"
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    24
  free_App "free (s @ t) i = (free s i | free t i)"
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    25
  free_Fun "free (Fun s) i = free s (Suc i)"
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    26
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    27
defs
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    28
  decr_def "decr t i == t[Var i/i]"
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    29
1789
aade046ec6d5 Quotes now optional around inductive set
paulson
parents: 1376
diff changeset
    30
inductive eta
1269
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    31
intrs
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    32
   eta  "~free s 0 ==> Fun(s @ Var 0) -e> decr s 0"
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    33
   appL  "s -e> t ==> s@u -e> t@u"
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    34
   appR  "s -e> t ==> u@s -e> u@t"
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    35
   abs   "s -e> t ==> Fun s -e> Fun t"
ee011b365770 New version with eta reduction.
nipkow
parents:
diff changeset
    36
end