src/HOL/Hilbert_Choice_lemmas.ML
changeset 12459 6978ab7cac64
parent 12372 cd3a09c7dac9
child 13585 db4005b40cc6
equal deleted inserted replaced
12458:a8c219e76ae0 12459:6978ab7cac64
   210 qed "bij_vimage_eq_inv_image";
   210 qed "bij_vimage_eq_inv_image";
   211 
   211 
   212 
   212 
   213 section "Inverse of a PI-function (restricted domain)";
   213 section "Inverse of a PI-function (restricted domain)";
   214 
   214 
   215 Goalw [Inv_def] "f ` A = B ==> (lam x: B. (Inv A f) x) : B funcset A";
   215 Goalw [Inv_def] "f ` A = B ==> (%x:B. (Inv A f) x) : B funcset A";
   216 by (fast_tac (claset() addIs [restrict_in_funcset, someI2]) 1);
   216 by (fast_tac (claset() addIs [restrict_in_funcset, someI2]) 1);
   217 qed "Inv_funcset";
   217 qed "Inv_funcset";
   218 
   218 
   219 Goal "[| inj_on f A;  x : A |] ==> Inv A f (f x) = x";
   219 Goal "[| inj_on f A;  x : A |] ==> Inv A f (f x) = x";
   220 by (asm_full_simp_tac (simpset() addsimps [Inv_def, inj_on_def]) 1);
   220 by (asm_full_simp_tac (simpset() addsimps [Inv_def, inj_on_def]) 1);
   235 by (rtac inj_onI 1);
   235 by (rtac inj_onI 1);
   236 by (blast_tac (claset() addIs [inj_onI] addDs [Inv_injective, injD]) 1);
   236 by (blast_tac (claset() addIs [inj_onI] addDs [Inv_injective, injD]) 1);
   237 qed "inj_on_Inv";
   237 qed "inj_on_Inv";
   238 
   238 
   239 Goal "[| inj_on f A;  f ` A = B |] \
   239 Goal "[| inj_on f A;  f ` A = B |] \
   240 \     ==> compose A (lam y:B. (Inv A f) y) f = (lam x: A. x)";
   240 \     ==> compose A (%y:B. (Inv A f) y) f = (%x:A. x)";
   241 by (asm_simp_tac (simpset() addsimps [compose_def]) 1);
   241 by (asm_simp_tac (simpset() addsimps [compose_def]) 1);
   242 by (rtac restrict_ext 1); 
   242 by (rtac restrict_ext 1); 
   243 by Auto_tac; 
   243 by Auto_tac; 
   244 by (etac subst 1); 
   244 by (etac subst 1); 
   245 by (asm_full_simp_tac (simpset() addsimps [Inv_f_f]) 1);
   245 by (asm_full_simp_tac (simpset() addsimps [Inv_f_f]) 1);