File: inst_type.doc

package info (click to toggle)
hol88 2.02.19940316-33
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 65,988 kB
  • ctags: 21,623
  • sloc: ml: 199,939; ansic: 9,666; sh: 7,118; makefile: 6,095; lisp: 2,747; yacc: 894; sed: 201; cpp: 87; awk: 5
file content (41 lines) | stat: -rw-r--r-- 1,108 bytes parent folder | download | duplicates (11)
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
\DOC inst_type

\TYPE {inst_type : ((type # type) list -> type -> type)}

\SYNOPSIS
Instantiates types in a type.

\DESCRIBE
If {[(t1',t1);...;(tn',tn)]} is a list of type instantiations, where {t1...tn}
are the initial types, and {t1'...tn'} the desired instantiations, and {ty} is
a type to instantiate, the call
{
   inst_type [(t1',t1);...;(tn',tn)] ty
}
\noindent will appropriately instantiate the type {ty}. The instantiations will
be performed in parallel. If several of the type instantiations are applicable,
the choice is undefined. In normal use the {t1...tn} are type variables,
although this is not essential. Neither is it necessary that any or all of the
types {t1...tn} should in fact appear in {ty}.

\FAILURE
Never fails.

\EXAMPLE
{
#inst_type [(":bool",":*")] ":* # **";;
":bool # **" : type

#inst_type [(":num",":* # **"); (":bool",":*")] ":* # **";;
":num" : type

#inst_type [(":bool",":*"); (":num",":* # **")] ":* # **";;
":num" : type

#inst_type [(":bool",":num"); (":num",":bool")] ":(bool)list";;
":(num)list" : type
}
\SEEALSO
inst, inst_check, inst_type, INST_TYPE.

\ENDDOC