# HG changeset patch
# User huffman
# Date 1272642427 25200
# Node ID fc184e0cc8bfa81968a2309979e1381ddaac4eb3
# Parent 5ef18d43363468035e07effdd349930fcce5a698# Parent 6e8a1c5eb0a8c8c323b9eba1b682a4d28c552d44
merged
diff -r 5ef18d433634 -r fc184e0cc8bf Admin/Mercurial/isabelle-style.diff
--- a/Admin/Mercurial/isabelle-style.diff Thu Apr 29 15:24:22 2010 -0700
+++ b/Admin/Mercurial/isabelle-style.diff Fri Apr 30 08:47:07 2010 -0700
@@ -23,7 +23,16 @@
diff -u gitweb/map isabelle/map
--- gitweb/map 2010-02-01 16:34:34.000000000 +0100
-+++ isabelle/map 2010-03-03 15:13:25.000000000 +0100
++++ isabelle/map 2010-04-29 23:43:54.000000000 +0200
+@@ -78,7 +78,7 @@
+
+
+ {author|user}@{rev}
++ title="{node|short}: {desc|escape}">{author|user}@{rev}
+ |
+ {linenumber} |
+ {line|escape} |
@@ -206,9 +206,10 @@
{date|age} |
@@ -36,3 +45,12 @@
{inbranch%inbranchtag}{branches%branchtag}{tags%tagtag}
+@@ -225,6 +226,7 @@
+ {desc|strip|firstline|escape|nonempty}
+
+
++ {author|person} |
+
+ file | diff | annotate {rename%filelogrename} |
+
'
+Only in isabelle/: map~
diff -r 5ef18d433634 -r fc184e0cc8bf src/FOL/simpdata.ML
--- a/src/FOL/simpdata.ML Thu Apr 29 15:24:22 2010 -0700
+++ b/src/FOL/simpdata.ML Fri Apr 30 08:47:07 2010 -0700
@@ -26,7 +26,7 @@
(REPEAT_FIRST (resolve_tac [@{thm meta_eq_to_obj_eq}, @{thm def_imp_iff}]));
(*Congruence rules for = or <-> (instead of ==)*)
-fun mk_meta_cong rl =
+fun mk_meta_cong (_: simpset) rl =
Drule.export_without_context (mk_meta_eq (mk_meta_prems rl))
handle THM _ =>
error("Premises and conclusion of congruence rules must use =-equality or <->");
@@ -52,7 +52,7 @@
| _ => [th])
in atoms end;
-fun mksimps pairs = (map mk_eq o mk_atomize pairs o gen_all);
+fun mksimps pairs (_: simpset) = map mk_eq o mk_atomize pairs o gen_all;
(** make simplification procedures for quantifier elimination **)
diff -r 5ef18d433634 -r fc184e0cc8bf src/HOL/HOL.thy
--- a/src/HOL/HOL.thy Thu Apr 29 15:24:22 2010 -0700
+++ b/src/HOL/HOL.thy Fri Apr 30 08:47:07 2010 -0700
@@ -1491,7 +1491,7 @@
setup {*
Induct.setup #>
Context.theory_map (Induct.map_simpset (fn ss => ss
- setmksimps (Simpdata.mksimps Simpdata.mksimps_pairs #>
+ setmksimps (fn ss => Simpdata.mksimps Simpdata.mksimps_pairs ss #>
map (Simplifier.rewrite_rule (map Thm.symmetric
@{thms induct_rulify_fallback induct_true_def induct_false_def})))
addsimprocs
diff -r 5ef18d433634 -r fc184e0cc8bf src/HOL/Import/proof_kernel.ML
--- a/src/HOL/Import/proof_kernel.ML Thu Apr 29 15:24:22 2010 -0700
+++ b/src/HOL/Import/proof_kernel.ML Fri Apr 30 08:47:07 2010 -0700
@@ -1249,7 +1249,7 @@
let
val hol4rews1 = map (Thm.transfer thy) (HOL4Rewrites.get thy)
val hol4ss = Simplifier.global_context thy empty_ss
- setmksimps single addsimps hol4rews1
+ setmksimps (K single) addsimps hol4rews1
in
Thm.transfer thy (Simplifier.full_rewrite hol4ss (cterm_of thy t))
end
diff -r 5ef18d433634 -r fc184e0cc8bf src/HOL/Import/shuffler.ML
--- a/src/HOL/Import/shuffler.ML Thu Apr 29 15:24:22 2010 -0700
+++ b/src/HOL/Import/shuffler.ML Fri Apr 30 08:47:07 2010 -0700
@@ -489,7 +489,7 @@
let
val norms = ShuffleData.get thy
val ss = Simplifier.global_context thy empty_ss
- setmksimps single
+ setmksimps (K single)
addsimps (map (Thm.transfer thy) norms)
addsimprocs [quant_simproc thy, eta_expand_simproc thy,eta_contract_simproc thy]
fun chain f th =
diff -r 5ef18d433634 -r fc184e0cc8bf src/HOL/Metis_Examples/Abstraction.thy
--- a/src/HOL/Metis_Examples/Abstraction.thy Thu Apr 29 15:24:22 2010 -0700
+++ b/src/HOL/Metis_Examples/Abstraction.thy Fri Apr 30 08:47:07 2010 -0700
@@ -23,13 +23,11 @@
declare [[ atp_problem_prefix = "Abstraction__Collect_triv" ]]
lemma (*Collect_triv:*) "a \ {x. P x} ==> P a"
-proof (neg_clausify)
-assume 0: "(a\'a\type) \ Collect (P\'a\type \ bool)"
-assume 1: "\ (P\'a\type \ bool) (a\'a\type)"
-have 2: "(P\'a\type \ bool) (a\'a\type)"
- by (metis CollectD 0)
-show "False"
- by (metis 2 1)
+proof -
+ assume "a \ {x. P x}"
+ hence "a \ P" by (metis Collect_def)
+ hence "P a" by (metis mem_def)
+ thus "P a" by metis
qed
lemma Collect_triv: "a \ {x. P x} ==> P a"
@@ -38,76 +36,52 @@
declare [[ atp_problem_prefix = "Abstraction__Collect_mp" ]]
lemma "a \ {x. P x --> Q x} ==> a \ {x. P x} ==> a \ {x. Q x}"
- by (metis CollectI Collect_imp_eq ComplD UnE mem_Collect_eq);
- --{*34 secs*}
+ by (metis Collect_imp_eq ComplD UnE)
declare [[ atp_problem_prefix = "Abstraction__Sigma_triv" ]]
lemma "(a,b) \ Sigma A B ==> a \ A & b \ B a"
-proof (neg_clausify)
-assume 0: "(a\'a\type, b\'b\type) \ Sigma (A\'a\type set) (B\'a\type \ 'b\type set)"
-assume 1: "(a\'a\type) \ (A\'a\type set) \ (b\'b\type) \ (B\'a\type \ 'b\type set) a"
-have 2: "(a\'a\type) \ (A\'a\type set)"
- by (metis SigmaD1 0)
-have 3: "(b\'b\type) \ (B\'a\type \ 'b\type set) (a\'a\type)"
- by (metis SigmaD2 0)
-have 4: "(b\'b\type) \ (B\'a\type \ 'b\type set) (a\'a\type)"
- by (metis 1 2)
-show "False"
- by (metis 3 4)
+proof -
+ assume A1: "(a, b) \ Sigma A B"
+ hence F1: "b \ B a" by (metis mem_Sigma_iff)
+ have F2: "a \ A" by (metis A1 mem_Sigma_iff)
+ have "b \ B a" by (metis F1)
+ thus "a \ A \ b \ B a" by (metis F2)
qed
lemma Sigma_triv: "(a,b) \ Sigma A B ==> a \ A & b \ B a"
by (metis SigmaD1 SigmaD2)
declare [[ atp_problem_prefix = "Abstraction__Sigma_Collect" ]]
-lemma "(a,b) \ (SIGMA x: A. {y. x = f y}) ==> a \ A & a = f b"
-(*???metis says this is satisfiable!
+lemma "(a, b) \ (SIGMA x:A. {y. x = f y}) \ a \ A \ a = f b"
+(* Metis says this is satisfiable!
by (metis CollectD SigmaD1 SigmaD2)
*)
by (meson CollectD SigmaD1 SigmaD2)
-(*single-step*)
-lemma "(a,b) \ (SIGMA x: A. {y. x = f y}) ==> a \ A & a = f b"
-by (metis SigmaD1 SigmaD2 insert_def singleton_conv2 Un_empty_right vimage_Collect_eq vimage_def vimage_singleton_eq)
-
+lemma "(a, b) \ (SIGMA x:A. {y. x = f y}) \ a \ A \ a = f b"
+by (metis mem_Sigma_iff singleton_conv2 vimage_Collect_eq vimage_singleton_eq)
-lemma "(a,b) \ (SIGMA x: A. {y. x = f y}) ==> a \ A & a = f b"
-proof (neg_clausify)
-assume 0: "(a\'a\type, b\'b\type)
-\ Sigma (A\'a\type set)
- (COMBB Collect (COMBC (COMBB COMBB op =) (f\'b\type \ 'a\type)))"
-assume 1: "(a\'a\type) \ (A\'a\type set) \ a \ (f\'b\type \ 'a\type) (b\'b\type)"
-have 2: "(a\'a\type) \ (A\'a\type set)"
- by (metis 0 SigmaD1)
-have 3: "(b\'b\type)
-\ COMBB Collect (COMBC (COMBB COMBB op =) (f\'b\type \ 'a\type)) (a\'a\type)"
- by (metis 0 SigmaD2)
-have 4: "(b\'b\type) \ Collect (COMBB (op = (a\'a\type)) (f\'b\type \ 'a\type))"
- by (metis 3)
-have 5: "(f\'b\type \ 'a\type) (b\'b\type) \ (a\'a\type)"
- by (metis 1 2)
-have 6: "(f\'b\type \ 'a\type) (b\'b\type) = (a\'a\type)"
- by (metis 4 vimage_singleton_eq insert_def singleton_conv2 Un_empty_right vimage_Collect_eq vimage_def)
-show "False"
- by (metis 5 6)
+lemma "(a, b) \ (SIGMA x:A. {y. x = f y}) \ a \ A \ a = f b"
+proof -
+ assume A1: "(a, b) \ (SIGMA x:A. {y. x = f y})"
+ have F1: "\u. {u} = op = u" by (metis singleton_conv2 Collect_def)
+ have F2: "\y w v. v \ w -` op = y \ w v = y"
+ by (metis F1 vimage_singleton_eq)
+ have F3: "\x w. (\R. w (x R)) = x -` w"
+ by (metis vimage_Collect_eq Collect_def)
+ show "a \ A \ a = f b" by (metis A1 F2 F3 mem_Sigma_iff Collect_def)
qed
-(*Alternative structured proof, untyped*)
-lemma "(a,b) \ (SIGMA x: A. {y. x = f y}) ==> a \ A & a = f b"
-proof (neg_clausify)
-assume 0: "(a, b) \ Sigma A (COMBB Collect (COMBC (COMBB COMBB op =) f))"
-have 1: "b \ Collect (COMBB (op = a) f)"
- by (metis 0 SigmaD2)
-have 2: "f b = a"
- by (metis 1 vimage_Collect_eq singleton_conv2 insert_def Un_empty_right vimage_singleton_eq vimage_def)
-assume 3: "a \ A \ a \ f b"
-have 4: "a \ A"
- by (metis 0 SigmaD1)
-have 5: "f b \ a"
- by (metis 4 3)
-show "False"
- by (metis 5 2)
+(* Alternative structured proof *)
+lemma "(a, b) \ (SIGMA x:A. {y. x = f y}) \ a \ A \ a = f b"
+proof -
+ assume A1: "(a, b) \ (SIGMA x:A. {y. x = f y})"
+ hence F1: "a \ A" by (metis mem_Sigma_iff)
+ have "b \ {R. a = f R}" by (metis A1 mem_Sigma_iff)
+ hence F2: "b \ (\R. a = f R)" by (metis Collect_def)
+ hence "a = f b" by (unfold mem_def)
+ thus "a \ A \ a = f b" by (metis F1)
qed
@@ -116,56 +90,40 @@
by (metis Collect_mem_eq SigmaD2)
lemma "(cl,f) \ CLF ==> CLF = (SIGMA cl: CL.{f. f \ pset cl}) ==> f \ pset cl"
-proof (neg_clausify)
-assume 0: "(cl, f) \ CLF"
-assume 1: "CLF = Sigma CL (COMBB Collect (COMBB (COMBC op \) pset))"
-assume 2: "f \ pset cl"
-have 3: "\X1 X2. X2 \ COMBB Collect (COMBB (COMBC op \) pset) X1 \ (X1, X2) \ CLF"
- by (metis SigmaD2 1)
-have 4: "\X1 X2. X2 \ pset X1 \ (X1, X2) \ CLF"
- by (metis 3 Collect_mem_eq)
-have 5: "(cl, f) \ CLF"
- by (metis 2 4)
-show "False"
- by (metis 5 0)
+proof -
+ assume A1: "(cl, f) \ CLF"
+ assume A2: "CLF = (SIGMA cl:CL. {f. f \ pset cl})"
+ have F1: "\v. (\R. R \ v) = v" by (metis Collect_mem_eq Collect_def)
+ have "\v u. (u, v) \ CLF \ v \ {R. R \ pset u}" by (metis A2 mem_Sigma_iff)
+ hence "\v u. (u, v) \ CLF \ v \ pset u" by (metis F1 Collect_def)
+ hence "f \ pset cl" by (metis A1)
+ thus "f \ pset cl" by metis
qed
declare [[ atp_problem_prefix = "Abstraction__Sigma_Collect_Pi" ]]
lemma
"(cl,f) \ (SIGMA cl: CL. {f. f \ pset cl \ pset cl}) ==>
f \ pset cl \ pset cl"
-proof (neg_clausify)
-assume 0: "f \ Pi (pset cl) (COMBK (pset cl))"
-assume 1: "(cl, f)
-\ Sigma CL
- (COMBB Collect
- (COMBB (COMBC op \) (COMBS (COMBB Pi pset) (COMBB COMBK pset))))"
-show "False"
-(* by (metis 0 Collect_mem_eq SigmaD2 1) ??doesn't terminate*)
- by (insert 0 1, simp add: COMBB_def COMBS_def COMBC_def)
+proof -
+ assume A1: "(cl, f) \ (SIGMA cl:CL. {f. f \ pset cl \ pset cl})"
+ have F1: "\v. (\R. R \ v) = v" by (metis Collect_mem_eq Collect_def)
+ have "f \ {R. R \ pset cl \ pset cl}" using A1 by simp
+ hence "f \ pset cl \ pset cl" by (metis F1 Collect_def)
+ thus "f \ pset cl \ pset cl" by metis
qed
-
declare [[ atp_problem_prefix = "Abstraction__Sigma_Collect_Int" ]]
lemma
"(cl,f) \ (SIGMA cl: CL. {f. f \ pset cl \ cl}) ==>
f \ pset cl \ cl"
-proof (neg_clausify)
-assume 0: "(cl, f)
-\