author | wenzelm |
Mon, 03 May 1999 10:47:32 +0200 | |
changeset 6561 | 793b33191ce3 |
parent 6112 | 5e4871c5136b |
child 11319 | 8b84ee2cc79c |
permissions | -rw-r--r-- |
1461 | 1 |
(* Title: Terms.ML |
1048 | 2 |
ID: $Id$ |
1461 | 3 |
Author: Ole Rasmussen |
1048 | 4 |
Copyright 1995 University of Cambridge |
5 |
Logic Image: ZF |
|
6 |
*) |
|
7 |
||
6046 | 8 |
Addsimps ([lambda.dom_subset RS subsetD] @ lambda.intrs); |
1048 | 9 |
|
10 |
||
11 |
(* ------------------------------------------------------------------------- *) |
|
12 |
(* unmark lemmas *) |
|
13 |
(* ------------------------------------------------------------------------- *) |
|
14 |
||
6046 | 15 |
Goal "u:redexes ==> unmark(u):lambda"; |
5527 | 16 |
by (etac redexes.induct 1); |
2469 | 17 |
by (ALLGOALS Asm_simp_tac); |
3734
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
18 |
qed "unmark_type"; |
1048 | 19 |
|
5147
825877190618
More tidying and removal of "\!\!... from Goal commands
paulson
parents:
5068
diff
changeset
|
20 |
Goal "u:lambda ==> unmark(u) = u"; |
5527 | 21 |
by (etac lambda.induct 1); |
2469 | 22 |
by (ALLGOALS Asm_simp_tac); |
3734
33f355f56f82
Much tidying including "qed" instead of result(), and even qed_spec_mp,
paulson
parents:
2469
diff
changeset
|
23 |
qed "lambda_unmark"; |
1048 | 24 |
|
25 |
||
26 |
(* ------------------------------------------------------------------------- *) |
|
27 |
(* lift and subst preserve lambda *) |
|
28 |
(* ------------------------------------------------------------------------- *) |
|
29 |
||
5527 | 30 |
Goal "v:lambda ==> ALL k:nat. lift_rec(v,k):lambda"; |
31 |
by (etac lambda.induct 1); |
|
32 |
by (ALLGOALS (asm_simp_tac (simpset() addsimps [lift_rec_Var]))); |
|
6112 | 33 |
qed_spec_mp "liftL_type"; |
1048 | 34 |
|
5527 | 35 |
Goal "v:lambda ==> ALL n:nat. ALL u:lambda. subst_rec(u,v,n):lambda"; |
36 |
by (etac lambda.induct 1); |
|
37 |
by (ALLGOALS (asm_simp_tac (simpset() addsimps [liftL_type,subst_Var]))); |
|
6112 | 38 |
qed_spec_mp "substL_type"; |
1048 | 39 |
|
40 |
||
41 |
(* ------------------------------------------------------------------------- *) |
|
42 |
(* type-rule for reduction definitions *) |
|
43 |
(* ------------------------------------------------------------------------- *) |
|
44 |
||
45 |
val red_typechecks = [substL_type]@nat_typechecks@lambda.intrs@bool_typechecks; |