author | berghofe |
Mon, 21 Jan 2002 14:43:38 +0100 | |
changeset 12822 | 073116d65bb9 |
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 |