File: distinctness.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 (32 lines) | stat: -rw-r--r-- 935 bytes parent folder | download | duplicates (2)
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
\DOC distinctness

\TYPE {distinctness : string -> thm}

\SYNOPSIS
Produce distinctness theorem for an inductive type.

\DESCRIBE
A call {distinctness "ty"} where {"ty"} is the name of a recursive type defined
with {define_type}, returns a ``distinctness'' theorem asserting that elements 
constructed by different type constructors are always different. The effect is
exactly the same is if {prove_constructors_distinct} were applied to the
recursion theorem produced by {define_type}, and the documentation for
{prove_constructors_distinct} gives a lengthier discussion.

\FAILURE
Fails if {ty} is not the name of a recursive type, or if the type has only one 
constructor.

\EXAMPLE
{
  # distinctness "num";;             
  val it : thm = |- !n'. ~(0 = SUC n')

  # distinctness "list";;         
  val it : thm = |- !a0' a1'. ~([] = CONS a0' a1')
}

\SEEALSO
cases, define_type, injectivity, prove_constructors_distinct.

\ENDDOC