7998
|
1 |
(*
|
|
2 |
Prepearing definitions for polynomials
|
|
3 |
$Id$
|
|
4 |
Author: Clemens Ballarin, started 9 December 1996
|
|
5 |
*)
|
|
6 |
|
|
7 |
(* Rules for bound *)
|
|
8 |
|
|
9 |
val prem = goalw ProtoPoly.thy [bound_def]
|
11093
|
10 |
"[| !! m. n < m ==> f m = 0 |] ==> bound n f";
|
7998
|
11 |
by (fast_tac (claset() addIs prem) 1);
|
|
12 |
qed "boundI";
|
|
13 |
|
|
14 |
Goalw [bound_def]
|
11093
|
15 |
"!! f. [| bound n f; n < m |] ==> f m = 0";
|
7998
|
16 |
by (Fast_tac 1);
|
|
17 |
qed "boundD";
|
|
18 |
|
|
19 |
Goalw [bound_def]
|
|
20 |
"!! f. [| bound n f; n <= m |] ==> bound m f";
|
|
21 |
by (fast_tac (set_cs addIs [le_less_trans]) 1);
|
|
22 |
(* Need set_cs, otherwise starts reasoning about naturals *)
|
|
23 |
qed "le_bound";
|
|
24 |
|
|
25 |
AddSIs [boundI];
|
|
26 |
AddDs [boundD];
|
|
27 |
|
11093
|
28 |
Goal "(%x. 0) : {f. EX n. bound n f}";
|
7998
|
29 |
by (Blast_tac 1);
|
|
30 |
qed "UP_witness";
|