File: mk_let.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 (27 lines) | stat: -rw-r--r-- 681 bytes parent folder | download | duplicates (7)
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
\DOC mk_let

\TYPE {mk_let : (term * term) list * term -> term}

\SYNOPSIS
Constructs a let-expression.

\DESCRIBE
Given argument {([l1,r1; ...; ln,rn],bod)}, the {mk_let} constructor produces
the let-expression {let l1 = r1 and ... and ln = rn in bod}.

\FAILURE
Fails if the list of left-hand and right-hand sides is empty or if some
corresponding pair of left-hand and right-hand sides have different types.

\EXAMPLE
{
  # mk_let([`x:num`,`1`],`x + 2`);;
  val it : term = `let x = 1 in x + 2`

  # mk_let([`CONS (h:bool) t`,`[F;F;F;F]`; `z:num`,`1`],`h ==> z = 2`);;
  val it : term = `let CONS h t = [F; F; F; F] and z = 1 in h ==> z = 2`
}
\SEEALSO
mk_let, is_let.

\ENDDOC