equal
deleted
inserted
replaced
1 (* Title: HOL/Hilbert_Choice_lemmas |
1 (* Title: HOL/Hilbert_Choice_lemmas |
2 ID: $Id$ |
2 ID: $Id$ |
3 Author: Lawrence C Paulson |
3 Author: Lawrence C Paulson |
4 Copyright 2001 University of Cambridge |
4 Copyright 2001 University of Cambridge |
5 |
5 |
6 Lemmas for Hilbert's epsilon-operator and the Axiom of Choice |
6 Lemmas for Hilbert's epsilon-operator and the Axiom of Choice |
7 *) |
7 *) |
261 |
261 |
262 Goal "(@(x',y'). x = x' & y = y') = (x,y)"; |
262 Goal "(@(x',y'). x = x' & y = y') = (x,y)"; |
263 by (Blast_tac 1); |
263 by (Blast_tac 1); |
264 qed "Eps_split_eq"; |
264 qed "Eps_split_eq"; |
265 Addsimps [Eps_split_eq]; |
265 Addsimps [Eps_split_eq]; |
|
266 |
|
267 |
|
268 (*--------------------------------------------------------------------------- |
|
269 * A relation is wellfounded iff it has no infinite descending chain |
|
270 * Cannot go into WF because it needs type nat. |
|
271 *---------------------------------------------------------------------------*) |
|
272 |
|
273 Goalw [wf_eq_minimal RS eq_reflection] |
|
274 "wf r = (~(EX f. ALL i. (f(Suc i),f i) : r))"; |
|
275 by (rtac iffI 1); |
|
276 by (rtac notI 1); |
|
277 by (etac exE 1); |
|
278 by (eres_inst_tac [("x","{w. EX i. w=f i}")] allE 1); |
|
279 by (Blast_tac 1); |
|
280 by (etac contrapos_np 1); |
|
281 by (Asm_full_simp_tac 1); |
|
282 by (Clarify_tac 1); |
|
283 by (subgoal_tac "ALL n. nat_rec x (%i y. @z. z:Q & (z,y):r) n : Q" 1); |
|
284 by (res_inst_tac[("x","nat_rec x (%i y. @z. z:Q & (z,y):r)")]exI 1); |
|
285 by (rtac allI 1); |
|
286 by (Simp_tac 1); |
|
287 by (rtac someI2_ex 1); |
|
288 by (Blast_tac 1); |
|
289 by (Blast_tac 1); |
|
290 by (rtac allI 1); |
|
291 by (induct_tac "n" 1); |
|
292 by (Asm_simp_tac 1); |
|
293 by (Simp_tac 1); |
|
294 by (rtac someI2_ex 1); |
|
295 by (Blast_tac 1); |
|
296 by (Blast_tac 1); |
|
297 qed "wf_iff_no_infinite_down_chain"; |
|
298 |