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
|