| author | nipkow |
| Mon, 25 Feb 2002 10:42:34 +0100 | |
| changeset 12931 | 2c0251fada94 |
| parent 12214 | f368821d9c68 |
| child 13194 | 812b00ed1c03 |
| permissions | -rw-r--r-- |
| 1478 | 1 |
(* Title: ZF/Finite.thy |
| 516 | 2 |
ID: $Id$ |
| 1478 | 3 |
Author: Lawrence C Paulson, Cambridge University Computer Laboratory |
| 516 | 4 |
Copyright 1994 University of Cambridge |
5 |
||
6 |
Finite powerset operator |
|
7 |
*) |
|
8 |
||
| 12214 | 9 |
Finite = Inductive + Epsilon + Nat + |
|
9491
1a36151ee2fc
natify, a coercion to reduce the number of type constraints in arithmetic
paulson
parents:
6053
diff
changeset
|
10 |
|
|
1a36151ee2fc
natify, a coercion to reduce the number of type constraints in arithmetic
paulson
parents:
6053
diff
changeset
|
11 |
(*The natural numbers as a datatype*) |
|
1a36151ee2fc
natify, a coercion to reduce the number of type constraints in arithmetic
paulson
parents:
6053
diff
changeset
|
12 |
rep_datatype |
|
1a36151ee2fc
natify, a coercion to reduce the number of type constraints in arithmetic
paulson
parents:
6053
diff
changeset
|
13 |
elim natE |
|
1a36151ee2fc
natify, a coercion to reduce the number of type constraints in arithmetic
paulson
parents:
6053
diff
changeset
|
14 |
induct nat_induct |
|
1a36151ee2fc
natify, a coercion to reduce the number of type constraints in arithmetic
paulson
parents:
6053
diff
changeset
|
15 |
case_eqns nat_case_0, nat_case_succ |
|
1a36151ee2fc
natify, a coercion to reduce the number of type constraints in arithmetic
paulson
parents:
6053
diff
changeset
|
16 |
recursor_eqns recursor_0, recursor_succ |
|
1a36151ee2fc
natify, a coercion to reduce the number of type constraints in arithmetic
paulson
parents:
6053
diff
changeset
|
17 |
|
|
1a36151ee2fc
natify, a coercion to reduce the number of type constraints in arithmetic
paulson
parents:
6053
diff
changeset
|
18 |
|
| 534 | 19 |
consts |
| 1478 | 20 |
Fin :: i=>i |
21 |
FiniteFun :: [i,i]=>i ("(_ -||>/ _)" [61, 60] 60)
|
|
| 534 | 22 |
|
| 516 | 23 |
inductive |
24 |
domains "Fin(A)" <= "Pow(A)" |
|
25 |
intrs |
|
26 |
emptyI "0 : Fin(A)" |
|
27 |
consI "[| a: A; b: Fin(A) |] ==> cons(a,b) : Fin(A)" |
|
|
6053
8a1059aa01f0
new inductive, datatype and primrec packages, etc.
paulson
parents:
1478
diff
changeset
|
28 |
type_intrs empty_subsetI, cons_subsetI, PowI |
| 516 | 29 |
type_elims "[make_elim PowD]" |
| 534 | 30 |
|
31 |
inductive |
|
32 |
domains "FiniteFun(A,B)" <= "Fin(A*B)" |
|
33 |
intrs |
|
34 |
emptyI "0 : A -||> B" |
|
| 1155 | 35 |
consI "[| a: A; b: B; h: A -||> B; a ~: domain(h) |
| 1478 | 36 |
|] ==> cons(<a,b>,h) : A -||> B" |
| 534 | 37 |
type_intrs "Fin.intrs" |
| 516 | 38 |
end |