equal
deleted
inserted
replaced
338 |
338 |
339 (* ------------------------------------------------------------------------ *) |
339 (* ------------------------------------------------------------------------ *) |
340 (* instantiate the simplifier *) |
340 (* instantiate the simplifier *) |
341 (* ------------------------------------------------------------------------ *) |
341 (* ------------------------------------------------------------------------ *) |
342 |
342 |
343 val Sprod_ss = |
343 Addsimps [strict_Isfst1,strict_Isfst2,strict_Issnd1,strict_Issnd2, |
344 HOL_ss |
344 Isfst2,Issnd2]; |
345 addsimps [strict_Isfst1,strict_Isfst2,strict_Issnd1,strict_Issnd2, |
|
346 Isfst2,Issnd2]; |
|
347 |
345 |
348 |
346 |
349 qed_goal "defined_IsfstIssnd" Sprod0.thy |
347 qed_goal "defined_IsfstIssnd" Sprod0.thy |
350 "p~=Ispair UU UU ==> Isfst p ~= UU & Issnd p ~= UU" |
348 "p~=Ispair UU UU ==> Isfst p ~= UU & Issnd p ~= UU" |
351 (fn prems => |
349 (fn prems => |
353 (cut_facts_tac prems 1), |
351 (cut_facts_tac prems 1), |
354 (res_inst_tac [("p","p")] IsprodE 1), |
352 (res_inst_tac [("p","p")] IsprodE 1), |
355 (contr_tac 1), |
353 (contr_tac 1), |
356 (hyp_subst_tac 1), |
354 (hyp_subst_tac 1), |
357 (rtac conjI 1), |
355 (rtac conjI 1), |
358 (asm_simp_tac Sprod_ss 1), |
356 (Asm_simp_tac 1), |
359 (asm_simp_tac Sprod_ss 1) |
357 (Asm_simp_tac 1) |
360 ]); |
358 ]); |
361 |
359 |
362 |
360 |
363 (* ------------------------------------------------------------------------ *) |
361 (* ------------------------------------------------------------------------ *) |
364 (* Surjective pairing: equivalent to Exh_Sprod *) |
362 (* Surjective pairing: equivalent to Exh_Sprod *) |
367 qed_goal "surjective_pairing_Sprod" Sprod0.thy |
365 qed_goal "surjective_pairing_Sprod" Sprod0.thy |
368 "z = Ispair(Isfst z)(Issnd z)" |
366 "z = Ispair(Isfst z)(Issnd z)" |
369 (fn prems => |
367 (fn prems => |
370 [ |
368 [ |
371 (res_inst_tac [("z1","z")] (Exh_Sprod RS disjE) 1), |
369 (res_inst_tac [("z1","z")] (Exh_Sprod RS disjE) 1), |
372 (asm_simp_tac Sprod_ss 1), |
370 (Asm_simp_tac 1), |
373 (etac exE 1), |
371 (etac exE 1), |
374 (etac exE 1), |
372 (etac exE 1), |
375 (asm_simp_tac Sprod_ss 1) |
373 (Asm_simp_tac 1) |
376 ]); |
374 ]); |
377 |
375 |
378 |
376 |
379 |
377 |
380 |
378 |
381 |
379 |
382 |
380 |
383 |
381 |
384 |
382 |
385 |
383 |
386 |
384 |
387 |
385 |
388 |
386 |
389 |
387 |