File: prove_abs_fn_one_one.doc

package info (click to toggle)
hol88 2.02.19940316dfsg-5
  • links: PTS
  • area: main
  • in suites: bookworm
  • size: 65,816 kB
  • sloc: ml: 199,939; ansic: 9,666; sh: 6,913; makefile: 6,032; lisp: 2,747; yacc: 894; sed: 201; cpp: 87; awk: 5
file content (27 lines) | stat: -rw-r--r-- 727 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
\DOC prove_abs_fn_one_one

\TYPE {prove_abs_fn_one_one : (thm -> thm)}

\SYNOPSIS
Proves that a type abstraction function is one-to-one (injective).

\DESCRIBE
If {th} is a theorem of the form returned by the function
{define_new_type_bijections}:
{
   |- (!a. abs(rep a) = a) /\ (!r. P r = (rep(abs r) = r))
}
\noindent then {prove_abs_fn_one_one th} proves from this theorem that the
function {abs} is one-to-one for values that satisfy {P}, returning the
theorem:
{
   |- !r r'. P r ==> P r' ==> ((abs r = abs r') = (r = r'))
}
\FAILURE
Fails if applied to a theorem not of the form shown above.

\SEEALSO
new_type_definition, define_new_type_bijections, prove_abs_fn_onto,
prove_rep_fn_one_one, prove_rep_fn_onto.

\ENDDOC