# HG changeset patch # User Shinji KONO # Date 1630687407 -32400 # Node ID e787d37d27a0119a335bf2111b27e7ab0769828c # Parent 7476a22edf7e0b66f01112ee8643c7ef1a86728e separate PFOD diff -r 7476a22edf7e -r e787d37d27a0 src/PFOD.agda --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/PFOD.agda Sat Sep 04 01:43:27 2021 +0900 @@ -0,0 +1,139 @@ +open import Level +open import Ordinals +module PFOD {n : Level } (O : Ordinals {n}) where + +import filter +open import zf +open import logic +-- open import partfunc {n} O +import OD + +open import Relation.Nullary +open import Relation.Binary +open import Data.Empty +open import Relation.Binary +open import Relation.Binary.Core +open import Relation.Binary.PropositionalEquality +open import Data.Nat renaming ( zero to Zero ; suc to Suc ; ℕ to Nat ; _⊔_ to _n⊔_ ) +import BAlgbra + +open BAlgbra O + +open inOrdinal O +open OD O +open OD.OD +open ODAxiom odAxiom +import OrdUtil +import ODUtil +open Ordinals.Ordinals O +open Ordinals.IsOrdinals isOrdinal +open Ordinals.IsNext isNext +open OrdUtil O +open ODUtil O + + +import ODC + +open filter O + +open _∧_ +open _∨_ +open Bool + + +open HOD + +------- +-- the set of finite partial functions from ω to 2 +-- +-- + +open import Data.List hiding (filter) +open import Data.Maybe + +import OPair +open OPair O + +data Hω2 : (i : Nat) ( x : Ordinal ) → Set n where + hφ : Hω2 0 o∅ + h0 : {i : Nat} {x : Ordinal } → Hω2 i x → + Hω2 (Suc i) (& (Union ((< nat→ω i , nat→ω 0 >) , * x ))) + h1 : {i : Nat} {x : Ordinal } → Hω2 i x → + Hω2 (Suc i) (& (Union ((< nat→ω i , nat→ω 1 >) , * x ))) + he : {i : Nat} {x : Ordinal } → Hω2 i x → + Hω2 (Suc i) x + +record Hω2r (x : Ordinal) : Set n where + field + count : Nat + hω2 : Hω2 count x + +open Hω2r + +HODω2 : HOD +HODω2 = record { od = record { def = λ x → Hω2r x } ; odmax = next o∅ ; , ( list→hod t (Suc i) )) + list→hod (just i1 ∷ t) i = Union (< nat→ω i , nat→ω 1 > , ( list→hod t (Suc i) )) + list→hod (nothing ∷ t) i = list→hod t (Suc i ) + +Hω2→3 : (x : HOD) → HODω2 ∋ x → List (Maybe Two) +Hω2→3 x = lemma where + lemma : { y : Ordinal } → Hω2r y → List (Maybe Two) + lemma record { count = 0 ; hω2 = hφ } = [] + lemma record { count = (Suc i) ; hω2 = (h0 hω3) } = just i0 ∷ lemma record { count = i ; hω2 = hω3 } + lemma record { count = (Suc i) ; hω2 = (h1 hω3) } = just i1 ∷ lemma record { count = i ; hω2 = hω3 } + lemma record { count = (Suc i) ; hω2 = (he hω3) } = nothing ∷ lemma record { count = i ; hω2 = hω3 } + +ω→2 : HOD +ω→2 = Power infinite + +ω→2f : (x : HOD) → ω→2 ∋ x → Nat → Two +ω→2f x lt n with ODC.∋-p O x (nat→ω n) +ω→2f x lt n | yes p = i1 +ω→2f x lt n | no ¬p = i0 + +fω→2-sel : ( f : Nat → Two ) (x : HOD) → Set n +fω→2-sel f x = (infinite ∋ x) ∧ ( (lt : odef infinite (& x) ) → f (ω→nat x lt) ≡ i1 ) + +fω→2 : (Nat → Two) → HOD +fω→2 f = Select infinite (fω→2-sel f) + +open _==_ + +import Axiom.Extensionality.Propositional +postulate f-extensionality : { n m : Level} → Axiom.Extensionality.Propositional.Extensionality n m + +ω2∋f : (f : Nat → Two) → ω→2 ∋ fω→2 f +ω2∋f f = power← infinite (fω→2 f) (λ {x} lt → proj1 ((proj2 (selection {fω→2-sel f} {infinite} )) lt)) + +ω→2f≡i1 : (X i : HOD) → (iω : infinite ∋ i) → (lt : ω→2 ∋ X ) → ω→2f X lt (ω→nat i iω) ≡ i1 → X ∋ i +ω→2f≡i1 X i iω lt eq with ODC.∋-p O X (nat→ω (ω→nat i iω)) +ω→2f≡i1 X i iω lt eq | yes p = subst (λ k → X ∋ k ) (nat→ω-iso iω) p + +open _⊆_ + +-- someday ... +-- postulate +-- ω→2f-iso : (X : HOD) → ( lt : ω→2 ∋ X ) → fω→2 ( ω→2f X lt ) =h= X +-- fω→2-iso : (f : Nat → Two) → ω→2f ( fω→2 f ) (ω2∋f f) ≡ f + diff -r 7476a22edf7e -r e787d37d27a0 src/generic-filter.agda --- a/src/generic-filter.agda Mon Dec 21 10:24:10 2020 +0900 +++ b/src/generic-filter.agda Sat Sep 04 01:43:27 2021 +0900 @@ -54,92 +54,6 @@ import OPair open OPair O -ODSuc : (y : HOD) → infinite ∋ y → HOD -ODSuc y lt = Union (y , (y , y)) - -data Hω2 : (i : Nat) ( x : Ordinal ) → Set n where - hφ : Hω2 0 o∅ - h0 : {i : Nat} {x : Ordinal } → Hω2 i x → - Hω2 (Suc i) (& (Union ((< nat→ω i , nat→ω 0 >) , * x ))) - h1 : {i : Nat} {x : Ordinal } → Hω2 i x → - Hω2 (Suc i) (& (Union ((< nat→ω i , nat→ω 1 >) , * x ))) - he : {i : Nat} {x : Ordinal } → Hω2 i x → - Hω2 (Suc i) x - -record Hω2r (x : Ordinal) : Set n where - field - count : Nat - hω2 : Hω2 count x - -open Hω2r - -HODω2 : HOD -HODω2 = record { od = record { def = λ x → Hω2r x } ; odmax = next o∅ ; , ( list→hod t (Suc i) )) - list→hod (just i1 ∷ t) i = Union (< nat→ω i , nat→ω 1 > , ( list→hod t (Suc i) )) - list→hod (nothing ∷ t) i = list→hod t (Suc i ) - -Hω2→3 : (x : HOD) → HODω2 ∋ x → List (Maybe Two) -Hω2→3 x = lemma where - lemma : { y : Ordinal } → Hω2r y → List (Maybe Two) - lemma record { count = 0 ; hω2 = hφ } = [] - lemma record { count = (Suc i) ; hω2 = (h0 hω3) } = just i0 ∷ lemma record { count = i ; hω2 = hω3 } - lemma record { count = (Suc i) ; hω2 = (h1 hω3) } = just i1 ∷ lemma record { count = i ; hω2 = hω3 } - lemma record { count = (Suc i) ; hω2 = (he hω3) } = nothing ∷ lemma record { count = i ; hω2 = hω3 } - -ω→2 : HOD -ω→2 = Power infinite - -ω→2f : (x : HOD) → ω→2 ∋ x → Nat → Two -ω→2f x lt n with ODC.∋-p O x (nat→ω n) -ω→2f x lt n | yes p = i1 -ω→2f x lt n | no ¬p = i0 - -fω→2-sel : ( f : Nat → Two ) (x : HOD) → Set n -fω→2-sel f x = (infinite ∋ x) ∧ ( (lt : odef infinite (& x) ) → f (ω→nat x lt) ≡ i1 ) - -fω→2 : (Nat → Two) → HOD -fω→2 f = Select infinite (fω→2-sel f) - -open _==_ - -import Axiom.Extensionality.Propositional -postulate f-extensionality : { n m : Level} → Axiom.Extensionality.Propositional.Extensionality n m - -ω2∋f : (f : Nat → Two) → ω→2 ∋ fω→2 f -ω2∋f f = power← infinite (fω→2 f) (λ {x} lt → proj1 ((proj2 (selection {fω→2-sel f} {infinite} )) lt)) - -ω→2f≡i1 : (X i : HOD) → (iω : infinite ∋ i) → (lt : ω→2 ∋ X ) → ω→2f X lt (ω→nat i iω) ≡ i1 → X ∋ i -ω→2f≡i1 X i iω lt eq with ODC.∋-p O X (nat→ω (ω→nat i iω)) -ω→2f≡i1 X i iω lt eq | yes p = subst (λ k → X ∋ k ) (nat→ω-iso iω) p - -open _⊆_ - --- someday ... --- postulate --- ω→2f-iso : (X : HOD) → ( lt : ω→2 ∋ X ) → fω→2 ( ω→2f X lt ) =h= X --- fω→2-iso : (f : Nat → Two) → ω→2f ( fω→2 f ) (ω2∋f f) ≡ f - record CountableOrdinal : Set (suc (suc n)) where field ctl→ : Nat → Ordinal @@ -170,19 +84,19 @@ ; odmax = odmax (Power P) ;