author | wenzelm |
Thu, 28 May 1998 11:08:45 +0200 | |
changeset 4974 | 45b7a51342a1 |
parent 3458 | 5ff4bfab859c |
child 6498 | 1ebbe18fe236 |
permissions | -rw-r--r-- |
3302 | 1 |
(* Title: TFL/thms |
2 |
ID: $Id$ |
|
3 |
Author: Konrad Slind, Cambridge University Computer Laboratory |
|
4 |
Copyright 1997 University of Cambridge |
|
5 |
*) |
|
6 |
||
2112 | 7 |
structure Thms : Thms_sig = |
8 |
struct |
|
3191 | 9 |
val WFREC_COROLLARY = get_thm WF_Rel.thy "tfl_wfrec" |
10 |
val WF_INDUCTION_THM = get_thm WF_Rel.thy "tfl_wf_induct" |
|
11 |
val CUT_LEMMA = get_thm WF_Rel.thy "tfl_cut_apply" |
|
2112 | 12 |
val CUT_DEF = cut_def |
13 |
||
14 |
local val _ = goal HOL.thy "!P x. P x --> P (Eps P)" |
|
15 |
val _ = by (strip_tac 1) |
|
16 |
val _ = by (rtac selectI 1) |
|
17 |
val _ = by (assume_tac 1) |
|
18 |
in val SELECT_AX = result() |
|
19 |
end; |
|
20 |
||
21 |
(*------------------------------------------------------------------------- |
|
3458
5ff4bfab859c
Removal of COND_CONG, which is just if_cong RS eq_reflection
paulson
parents:
3302
diff
changeset
|
22 |
* Congruence rule needed for TFL, but not for general simplification |
2112 | 23 |
*-------------------------------------------------------------------------*) |
24 |
local val [p1,p2] = goal HOL.thy "(M = N) ==> \ |
|
25 |
\ (!!x. ((x = N) ==> (f x = g x))) ==> \ |
|
26 |
\ (Let M f = Let N g)"; |
|
27 |
val _ = by (simp_tac (HOL_ss addsimps[Let_def,p1]) 1); |
|
28 |
val _ = by (rtac p2 1); |
|
29 |
val _ = by (rtac refl 1); |
|
3458
5ff4bfab859c
Removal of COND_CONG, which is just if_cong RS eq_reflection
paulson
parents:
3302
diff
changeset
|
30 |
in val LET_CONG = result() end; |
2112 | 31 |
|
3273 | 32 |
fun prove s = prove_goal HOL.thy s (fn _ => [fast_tac HOL_cs 1]); |
2112 | 33 |
|
3273 | 34 |
val eqT = prove"(x = True) --> x" |
35 |
val rev_eq_mp = prove"(x = y) --> y --> x" |
|
36 |
val simp_thm = prove"(x-->y) --> (x = x') --> (x' --> y)" |
|
2112 | 37 |
|
38 |
end; |