src/HOL/Lambda/Eta.thy
author wenzelm
Tue, 24 Nov 1998 12:03:09 +0100
changeset 5953 d6017ce6b93e
parent 5184 9b8547a9496a
child 6307 fdf236c98914
permissions -rw-r--r--
setup Blast.setup; setup Clasimp.setup;

(*  Title:      HOL/Lambda/Eta.thy
    ID:         $Id$
    Author:     Tobias Nipkow
    Copyright   1995 TU Muenchen

Eta-reduction and relatives.
*)

Eta = ParRed + Commutation +
consts free :: dB => nat => bool
       decr :: dB => dB
       eta  :: "(dB * dB) set"

syntax  "-e>", "-e>>", "-e>=" , "->=" :: [dB,dB] => bool (infixl 50)

translations
  "s -e>  t" == "(s,t) : eta"
  "s -e>> t" == "(s,t) : eta^*"
  "s -e>= t" == "(s,t) : eta^="
  "s ->=  t" == "(s,t) : beta^="

primrec
  "free (Var j) i = (j=i)"
  "free (s $ t) i = (free s i | free t i)"
  "free (Abs s) i = free s (Suc i)"

inductive eta
intrs
   eta  "~free s 0 ==> Abs(s $ Var 0) -e> s[dummy/0]"
   appL  "s -e> t ==> s$u -e> t$u"
   appR  "s -e> t ==> u$s -e> u$t"
   abs   "s -e> t ==> Abs s -e> Abs t"
end