File: ITAUT.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 (47 lines) | stat: -rw-r--r-- 1,380 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
44
45
46
47
\DOC ITAUT

\TYPE {ITAUT : term -> thm}

\SYNOPSIS
Attempt to prove term using intuitionistic first-order logic.

\DESCRIBE
The call {ITAUT `p`} attempts to prove {p} using a basic tableau-type proof
search for intuitionistic first-order logic. The restriction to intuitionistic
logic means that no principles such as the ``law of the excluded middle'' or
``law of double negation'' are used.

\FAILURE
Fails if the goal is non-Boolean. May also fail if it's unprovable, though more
usually this results in indefinite looping.

\EXAMPLE
This is intuitionistically valid, so it works:
{
  # ITAUT `~(~(~p)) ==> ~p`;;
  ...
  val it : thm = |- ~ ~ ~p ==> ~p
}
\noindent whereas this, one of the main non-intuitionistic principles, is not:
{
  # ITAUT `~(~p) ==> p`;;
  Searching with limit 0
  Searching with limit 1
  Searching with limit 2
  Searching with limit 3
  ...
}
\noindent so the procedure loops; you can as usual terminate such loops with
control-C.

\COMMENTS
Normally, first-order reasoning should be performed by {MESON[]}, which is much
more powerful, complete for all classical logic, and handles equality. The
function {ITAUT} is mainly for ``bootstrapping'' purposes. Nevertheless it may
sometimes be intellectually interesting to see that certain logical formulas
are provable intuitionistically.

\SEEALSO
BOOL_CASES_TAC, ITAUT_TAC, MESON, MESON_TAC.

\ENDDOC