equal
deleted
inserted
replaced
400 apply (rule P_induct[simplified UQ]) |
400 apply (rule P_induct[simplified UQ]) |
401 apply simp |
401 apply simp |
402 done |
402 done |
403 qed |
403 qed |
404 |
404 |
405 consts |
405 primrec nat2Nat :: "nat \<Rightarrow> ZF" where |
406 nat2Nat :: "nat \<Rightarrow> ZF" |
406 nat2Nat_0[intro]: "nat2Nat 0 = Empty" |
407 |
407 | nat2Nat_Suc[intro]: "nat2Nat (Suc n) = SucNat (nat2Nat n)" |
408 primrec |
|
409 nat2Nat_0[intro]: "nat2Nat 0 = Empty" |
|
410 nat2Nat_Suc[intro]: "nat2Nat (Suc n) = SucNat (nat2Nat n)" |
|
411 |
408 |
412 definition Nat2nat :: "ZF \<Rightarrow> nat" where |
409 definition Nat2nat :: "ZF \<Rightarrow> nat" where |
413 "Nat2nat == inv nat2Nat" |
410 "Nat2nat == inv nat2Nat" |
414 |
411 |
415 lemma Elem_nat2Nat_inf[intro]: "Elem (nat2Nat n) Inf" |
412 lemma Elem_nat2Nat_inf[intro]: "Elem (nat2Nat n) Inf" |
498 lemma antisym_Elem: "Elem a b \<Longrightarrow> Not (Elem b a)" |
495 lemma antisym_Elem: "Elem a b \<Longrightarrow> Not (Elem b a)" |
499 apply (insert notsym_Elem[of a b]) |
496 apply (insert notsym_Elem[of a b]) |
500 apply auto |
497 apply auto |
501 done |
498 done |
502 |
499 |
503 consts |
500 primrec NatInterval :: "nat \<Rightarrow> nat \<Rightarrow> ZF" where |
504 NatInterval :: "nat \<Rightarrow> nat \<Rightarrow> ZF" |
|
505 |
|
506 primrec |
|
507 "NatInterval n 0 = Singleton (nat2Nat n)" |
501 "NatInterval n 0 = Singleton (nat2Nat n)" |
508 "NatInterval n (Suc m) = union (NatInterval n m) (Singleton (nat2Nat (n+m+1)))" |
502 | "NatInterval n (Suc m) = union (NatInterval n m) (Singleton (nat2Nat (n+m+1)))" |
509 |
503 |
510 lemma n_Elem_NatInterval[rule_format]: "! q. q <= m \<longrightarrow> Elem (nat2Nat (n+q)) (NatInterval n m)" |
504 lemma n_Elem_NatInterval[rule_format]: "! q. q <= m \<longrightarrow> Elem (nat2Nat (n+q)) (NatInterval n m)" |
511 apply (induct m) |
505 apply (induct m) |
512 apply (auto simp add: Singleton union) |
506 apply (auto simp add: Singleton union) |
513 apply (case_tac "q <= m") |
507 apply (case_tac "q <= m") |
727 apply (subst Elem_implode) |
721 apply (subst Elem_implode) |
728 apply (simp add: set_like_def) |
722 apply (simp add: set_like_def) |
729 apply (simp add: Ext_def) |
723 apply (simp add: Ext_def) |
730 done |
724 done |
731 |
725 |
732 consts |
726 primrec Ext_ZF_n :: "(ZF * ZF) set \<Rightarrow> ZF \<Rightarrow> nat \<Rightarrow> ZF" where |
733 Ext_ZF_n :: "(ZF * ZF) set \<Rightarrow> ZF \<Rightarrow> nat \<Rightarrow> ZF" |
|
734 |
|
735 primrec |
|
736 "Ext_ZF_n R s 0 = Ext_ZF R s" |
727 "Ext_ZF_n R s 0 = Ext_ZF R s" |
737 "Ext_ZF_n R s (Suc n) = Sum (Repl (Ext_ZF_n R s n) (Ext_ZF R))" |
728 | "Ext_ZF_n R s (Suc n) = Sum (Repl (Ext_ZF_n R s n) (Ext_ZF R))" |
738 |
729 |
739 definition Ext_ZF_hull :: "(ZF * ZF) set \<Rightarrow> ZF \<Rightarrow> ZF" where |
730 definition Ext_ZF_hull :: "(ZF * ZF) set \<Rightarrow> ZF \<Rightarrow> ZF" where |
740 "Ext_ZF_hull R s == SeqSum (Ext_ZF_n R s)" |
731 "Ext_ZF_hull R s == SeqSum (Ext_ZF_n R s)" |
741 |
732 |
742 lemma Elem_Ext_ZF_hull: |
733 lemma Elem_Ext_ZF_hull: |