# HG changeset patch # User paulson # Date 1013593508 -3600 # Node ID 6288ebcb16233115ab5c79c9e5d90f70f327bf54 # Parent 5d18148e9059ae6bcb1011bf78977a047b64b8a8 new function lemmas diff -r 5d18148e9059 -r 6288ebcb1623 src/ZF/func.ML --- a/src/ZF/func.ML Wed Feb 13 10:44:39 2002 +0100 +++ b/src/ZF/func.ML Wed Feb 13 10:45:08 2002 +0100 @@ -23,16 +23,11 @@ by (asm_full_simp_tac (FOL_ss addsimps [Pi_iff]) 1); qed "fun_is_function"; -(**Two "destruct" rules for Pi **) - +(*Functions are relations*) Goalw [Pi_def] "f: Pi(A,B) ==> f <= Sigma(A,B)"; by (Blast_tac 1); qed "fun_is_rel"; -Goal "[| f: Pi(A,B); a:A |] ==> EX! y. : f"; -by (blast_tac (claset() addSDs [Pi_iff_old RS iffD1]) 1); -qed "fun_unique_Pair"; - val prems = Goalw [Pi_def] "[| A=A'; !!x. x:A' ==> B(x)=B'(x) |] ==> Pi(A,B) = Pi(A',B')"; by (simp_tac (FOL_ss addsimps prems addcongs [Sigma_cong]) 1); @@ -72,10 +67,15 @@ by (blast_tac (claset() addDs [apply_equality]) 1); qed "Pi_memberD"; +Goal "[| function(f); a : domain(f)|] ==> : f"; +by (asm_full_simp_tac (simpset() addsimps [function_def, apply_def]) 1); +by (rtac theI2 1); +by Auto_tac; +qed "function_apply_Pair"; + Goal "[| f: Pi(A,B); a:A |] ==> : f"; -by (rtac (fun_unique_Pair RS ex1E) 1); -by (resolve_tac [apply_equality RS ssubst] 3); -by (REPEAT (assume_tac 1)); +by (asm_full_simp_tac (simpset() addsimps [Pi_iff]) 1); +by (blast_tac (claset() addIs [function_apply_Pair]) 1); qed "apply_Pair"; (*Conclusion is flexible -- use res_inst_tac or else apply_funtype below!*)