File: BETA.doc

package info (click to toggle)
hol-light 20131026-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 26,264 kB
  • ctags: 4,620
  • sloc: ml: 400,325; cpp: 438; java: 279; lisp: 261; makefile: 256; sh: 190; yacc: 108; perl: 78; ansic: 57; sed: 39
file content (42 lines) | stat: -rw-r--r-- 1,105 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
\DOC BETA

\TYPE {BETA : term -> thm}

\SYNOPSIS
Special primitive case of beta-reduction.

\DESCRIBE
Given a term of the form {(\x. t[x]) x}, i.e. a lambda-term applied to exactly 
the same variable that occurs in the abstraction, {BETA} returns the theorem
{|- (\x. t[x]) x = t[x]}.
 
\FAILURE
Fails if the term is not of the required form.

\EXAMPLE
{
  # BETA `(\n. n + 1) n`;;
  val it : thm = |- (\n. n + 1) n = n + 1
}
\noindent Note that more general beta-reduction is not handled by {BETA}, but 
will be by {BETA_CONV}:
{
  # BETA `(\n. n + 1) m`;;
  Exception: Failure "BETA: not a trivial beta-redex".
  # BETA_CONV `(\n. n + 1) m`;;
  val it : thm = |- (\n. n + 1) m = m + 1
}

\USES
This is more efficient than {BETA_CONV} in the special case in which it works, 
because no traversal and replacement of the body of the abstraction is needed.

\COMMENTS
This is one of HOL Light's 10 primitive inference rules. The more general case
of beta-reduction, where a lambda-term is applied to any term, is implemented
by {BETA_CONV}, derived in terms of this primitive.

\SEEALSO
BETA_CONV.

\ENDDOC