equal
deleted
inserted
replaced
146 by (typechk_tac (SumE_fst::prems)); |
146 by (typechk_tac (SumE_fst::prems)); |
147 result(); |
147 result(); |
148 |
148 |
149 writeln"Axiom of choice. Proof without fst, snd. Harder still!"; |
149 writeln"Axiom of choice. Proof without fst, snd. Harder still!"; |
150 val prems = goal CTT.thy |
150 val prems = goal CTT.thy |
151 "[| A type; !!x.x:A ==> B(x) type; \ |
151 "[| A type; !!x. x:A ==> B(x) type; \ |
152 \ !!x y.[| x:A; y:B(x) |] ==> C(x,y) type \ |
152 \ !!x y.[| x:A; y:B(x) |] ==> C(x,y) type \ |
153 \ |] ==> ?a : PROD h: (PROD x:A. SUM y:B(x). C(x,y)). \ |
153 \ |] ==> ?a : PROD h: (PROD x:A. SUM y:B(x). C(x,y)). \ |
154 \ (SUM f: (PROD x:A. B(x)). PROD x:A. C(x, f`x))"; |
154 \ (SUM f: (PROD x:A. B(x)). PROD x:A. C(x, f`x))"; |
155 by (intr_tac prems); |
155 by (intr_tac prems); |
156 (*Must not use add_mp_tac as subst_prodE hides the construction.*) |
156 (*Must not use add_mp_tac as subst_prodE hides the construction.*) |