321 done |
320 done |
322 |
321 |
323 subsubsection{*The Operator @{term is_Member}, Internalized*} |
322 subsubsection{*The Operator @{term is_Member}, Internalized*} |
324 |
323 |
325 (* "is_Member(M,x,y,Z) == |
324 (* "is_Member(M,x,y,Z) == |
326 \<exists>p[M]. \<exists>u[M]. pair(M,x,y,p) & is_Inl(M,p,u) & is_Inl(M,u,Z)" *) |
325 \<exists>p[M]. \<exists>u[M]. pair(M,x,y,p) & is_Inl(M,p,u) & is_Inl(M,u,Z)" *) |
327 definition |
326 definition |
328 Member_fm :: "[i,i,i]=>i" where |
327 Member_fm :: "[i,i,i]=>i" where |
329 "Member_fm(x,y,Z) == |
328 "Member_fm(x,y,Z) == |
330 Exists(Exists(And(pair_fm(x#+2,y#+2,1), |
329 Exists(Exists(And(pair_fm(x#+2,y#+2,1), |
331 And(Inl_fm(1,0), Inl_fm(0,Z#+2)))))" |
330 And(Inl_fm(1,0), Inl_fm(0,Z#+2)))))" |
354 done |
353 done |
355 |
354 |
356 subsubsection{*The Operator @{term is_Equal}, Internalized*} |
355 subsubsection{*The Operator @{term is_Equal}, Internalized*} |
357 |
356 |
358 (* "is_Equal(M,x,y,Z) == |
357 (* "is_Equal(M,x,y,Z) == |
359 \<exists>p[M]. \<exists>u[M]. pair(M,x,y,p) & is_Inr(M,p,u) & is_Inl(M,u,Z)" *) |
358 \<exists>p[M]. \<exists>u[M]. pair(M,x,y,p) & is_Inr(M,p,u) & is_Inl(M,u,Z)" *) |
360 definition |
359 definition |
361 Equal_fm :: "[i,i,i]=>i" where |
360 Equal_fm :: "[i,i,i]=>i" where |
362 "Equal_fm(x,y,Z) == |
361 "Equal_fm(x,y,Z) == |
363 Exists(Exists(And(pair_fm(x#+2,y#+2,1), |
362 Exists(Exists(And(pair_fm(x#+2,y#+2,1), |
364 And(Inr_fm(1,0), Inl_fm(0,Z#+2)))))" |
363 And(Inr_fm(1,0), Inl_fm(0,Z#+2)))))" |
387 done |
386 done |
388 |
387 |
389 subsubsection{*The Operator @{term is_Nand}, Internalized*} |
388 subsubsection{*The Operator @{term is_Nand}, Internalized*} |
390 |
389 |
391 (* "is_Nand(M,x,y,Z) == |
390 (* "is_Nand(M,x,y,Z) == |
392 \<exists>p[M]. \<exists>u[M]. pair(M,x,y,p) & is_Inl(M,p,u) & is_Inr(M,u,Z)" *) |
391 \<exists>p[M]. \<exists>u[M]. pair(M,x,y,p) & is_Inl(M,p,u) & is_Inr(M,u,Z)" *) |
393 definition |
392 definition |
394 Nand_fm :: "[i,i,i]=>i" where |
393 Nand_fm :: "[i,i,i]=>i" where |
395 "Nand_fm(x,y,Z) == |
394 "Nand_fm(x,y,Z) == |
396 Exists(Exists(And(pair_fm(x#+2,y#+2,1), |
395 Exists(Exists(And(pair_fm(x#+2,y#+2,1), |
397 And(Inl_fm(1,0), Inr_fm(0,Z#+2)))))" |
396 And(Inl_fm(1,0), Inr_fm(0,Z#+2)))))" |
598 Forall(Iff(Member(0,succ(f)), |
597 Forall(Iff(Member(0,succ(f)), |
599 Exists(Exists(Exists( |
598 Exists(Exists(Exists( |
600 And(p, |
599 And(p, |
601 And(pair_fm(2,0,3), |
600 And(pair_fm(2,0,3), |
602 Exists(Exists(Exists( |
601 Exists(Exists(Exists( |
603 And(pair_fm(5,a#+7,2), |
602 And(pair_fm(5,a#+7,2), |
604 And(upair_fm(5,5,1), |
603 And(upair_fm(5,5,1), |
605 And(pre_image_fm(r#+7,1,0), |
604 And(pre_image_fm(r#+7,1,0), |
606 And(restriction_fm(f#+7,0,4), Member(2,r#+7)))))))))))))))" |
605 And(restriction_fm(f#+7,0,4), Member(2,r#+7)))))))))))))))" |
607 |
606 |
608 lemma is_recfun_type [TC]: |
607 lemma is_recfun_type [TC]: |
609 "[| p \<in> formula; x \<in> nat; y \<in> nat; z \<in> nat |] |
608 "[| p \<in> formula; x \<in> nat; y \<in> nat; z \<in> nat |] |
610 ==> is_recfun_fm(p,x,y,z) \<in> formula" |
609 ==> is_recfun_fm(p,x,y,z) \<in> formula" |
611 by (simp add: is_recfun_fm_def) |
610 by (simp add: is_recfun_fm_def) |