src/ZF/Let.thy
author lcp
Tue, 25 Apr 1995 11:14:03 +0200
changeset 1072 0140ff702b23
parent 1061 8897213195c0
child 1094 840554ac0451
permissions -rw-r--r--
updated version
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1061
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
     1
(*  Title: 	ZF/Let
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
     2
    ID:         $Id$
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
     3
    Author: 	Lawrence C Paulson, Cambridge University Computer Laboratory
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
     4
    Copyright   1995  University of Cambridge
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
     5
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
     6
Let expressions -- borrowed from HOL
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
     7
*)
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
     8
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
     9
Let = ZF +
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    10
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    11
types
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    12
  letbinds  letbind
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    13
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    14
consts
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    15
  Let           :: "['a, 'a => 'b] => 'b"
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    16
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    17
syntax
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    18
  "_bind"       :: "[idt, 'a] => letbind"             ("(2_ =/ _)" 10)
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    19
  ""            :: "letbind => letbinds"              ("_")
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    20
  "_binds"      :: "[letbind, letbinds] => letbinds"  ("_;/ _")
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    21
  "_Let"        :: "[letbinds, 'a] => 'a"             ("(let (_)/ in (_))" 10)
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    22
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    23
translations
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    24
  "_Let(_binds(b, bs), e)"  == "_Let(b, _Let(bs, e))"
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    25
  "let x = a in e"          == "Let(a, %x. e)"
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    26
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    27
defs
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    28
  Let_def       "Let(s, f) == f(s)"
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    29
8897213195c0 Definition of 'let' declarations, from HOL
lcp
parents:
diff changeset
    30
end