File: ISPEC.doc

package info (click to toggle)
hol-light 20230128-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 45,636 kB
  • sloc: ml: 688,681; cpp: 439; makefile: 302; lisp: 286; java: 279; sh: 251; yacc: 108; perl: 78; ansic: 57; sed: 39; python: 13
file content (43 lines) | stat: -rw-r--r-- 926 bytes parent folder | download | duplicates (3)
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 ISPEC

\TYPE {ISPEC : term -> thm -> thm}

\SYNOPSIS
Specializes a theorem, with type instantiation if necessary.

\KEYWORDS
rule, type.

\DESCRIBE
This rule specializes a quantified variable as does {SPEC}; it differs
from it in also instantiating the type if needed, both in the conclusion and
hypotheses:
{
     A |- !x:ty.tm
  -----------------------  ISPEC `t:ty'`
   A[ty'/ty] |- tm[t/x]
}
\noindent (where {t} is free for {x} in {tm}, and {ty'} is an instance
of {ty}).

\FAILURE
{ISPEC} fails if the input theorem is not universally quantified, or if
the type of the given term is not an instance of the type of the
quantified variable.

\EXAMPLE
{
  # ISPEC `0` EQ_REFL;;
  val it : thm = |- 0 = 0
}
\noindent Note that the corresponding call to {SPEC} would fail because of the
type mismatch:
{
  # SPEC `0` EQ_REFL;;
  Exception: Failure "SPEC".
}

\SEEALSO
INST, INST_TYPE, ISPECL, SPEC, type_match.

\ENDDOC