File: aconv.doc

package info (click to toggle)
hol-light 20170109-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 36,568 kB
  • ctags: 8,549
  • sloc: ml: 540,018; cpp: 439; lisp: 286; java: 279; makefile: 262; sh: 229; yacc: 108; perl: 78; ansic: 57; sed: 39
file content (43 lines) | stat: -rw-r--r-- 977 bytes parent folder | download | duplicates (6)
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
43
\DOC aconv

\TYPE {aconv : term -> term -> bool}

\SYNOPSIS
Tests for alpha-convertibility of terms.

\KEYWORDS
alpha.

\DESCRIBE
When applied to two terms, {aconv} returns {true} if they are
alpha-convertible, and {false} otherwise.

\FAILURE
Never fails.

\EXAMPLE
A simple case of alpha-convertibility is the renaming of a single quantified
variable:
{
  # aconv `?x. x <=> T` `?y. y <=> T`;;
  val it : bool = true
}
but other cases can be more involved:
{
# aconv `\x y z. x + y + z` `\y x z. y + x + z`;;
val it : bool = true
}

\COMMENTS
The code for alpha-conversion first checks for simple equality with pointer
equality shortcutting, and can therefore often returns {true} without a full
traversal.

In principle, most of the HOL Light deductive apparatus should work modulo
alpha-conversion. With the exception of {BETA}, all the primitive inference
rules do, as does {BETA_CONV}, which properly generalizes {BETA}.

\SEEALSO
ALPHA, ALPHA_CONV, alphaorder.

\ENDDOC