comparison OD.agda @ 387:8b0715e28b33

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 25 Jul 2020 09:09:00 +0900
parents d2cb5278e46d
children 19687f3304c9
comparison
equal deleted inserted replaced
386:24a66a246316 387:8b0715e28b33
73 -- 73 --
74 -- In classical Set Theory, sup is defined by Uion, since we are working on constructive logic, 74 -- In classical Set Theory, sup is defined by Uion, since we are working on constructive logic,
75 -- we need explict assumption on sup. 75 -- we need explict assumption on sup.
76 -- 76 --
77 -- ==→o≡ is necessary to prove axiom of extensionality. 77 -- ==→o≡ is necessary to prove axiom of extensionality.
78
79 data One {n : Level } : Set n where
80 OneObj : One
81 78
82 -- Ordinals in OD , the maximum 79 -- Ordinals in OD , the maximum
83 Ords : OD 80 Ords : OD
84 Ords = record { def = λ x → One } 81 Ords = record { def = λ x → One }
85 82
271 field 268 field
272 incl : { x : HOD } → A ∋ x → B ∋ x 269 incl : { x : HOD } → A ∋ x → B ∋ x
273 270
274 open _⊆_ 271 open _⊆_
275 infixr 220 _⊆_ 272 infixr 220 _⊆_
273
274 trans-⊆ : { A B C : HOD} → A ⊆ B → B ⊆ C → A ⊆ C
275 trans-⊆ A⊆B B⊆C = record { incl = λ x → incl B⊆C (incl A⊆B x) }
276
277 refl-⊆ : {A : HOD} → A ⊆ A
278 refl-⊆ {A} = record { incl = λ x → x }
276 279
277 od⊆→o≤ : {x y : HOD } → x ⊆ y → od→ord x o< osuc (od→ord y) 280 od⊆→o≤ : {x y : HOD } → x ⊆ y → od→ord x o< osuc (od→ord y)
278 od⊆→o≤ {x} {y} lt = ⊆→o≤ {x} {y} (λ {z} x>z → subst (λ k → def (od y) k ) diso (incl lt (subst (λ k → def (od x) k ) (sym diso) x>z ))) 281 od⊆→o≤ {x} {y} lt = ⊆→o≤ {x} {y} (λ {z} x>z → subst (λ k → def (od y) k ) diso (incl lt (subst (λ k → def (od x) k ) (sym diso) x>z )))
279 282
280 -- if we have od→ord (x , x) ≡ osuc (od→ord x), ⊆→o≤ → c<→o< 283 -- if we have od→ord (x , x) ≡ osuc (od→ord x), ⊆→o≤ → c<→o<
315 induction ox prev = ind ( λ {y} lt → subst (λ k → ψ k ) oiso (prev (od→ord y) (o<-subst (c<→o< lt) refl diso ))) 318 induction ox prev = ind ( λ {y} lt → subst (λ k → ψ k ) oiso (prev (od→ord y) (o<-subst (c<→o< lt) refl diso )))
316 ε-induction-ord : (ox : Ordinal) { oy : Ordinal } → oy o< ox → ψ (ord→od oy) 319 ε-induction-ord : (ox : Ordinal) { oy : Ordinal } → oy o< ox → ψ (ord→od oy)
317 ε-induction-ord ox {oy} lt = TransFinite {λ oy → ψ (ord→od oy)} induction oy 320 ε-induction-ord ox {oy} lt = TransFinite {λ oy → ψ (ord→od oy)} induction oy
318 321
319 -- level trick (what'a shame) 322 -- level trick (what'a shame)
320 ε-induction1 : { ψ : HOD → Set (suc n)} 323 -- ε-induction1 : { ψ : HOD → Set (suc n)}
321 → ( {x : HOD } → ({ y : HOD } → x ∋ y → ψ y ) → ψ x ) 324 -- → ( {x : HOD } → ({ y : HOD } → x ∋ y → ψ y ) → ψ x )
322 → (x : HOD ) → ψ x 325 -- → (x : HOD ) → ψ x
323 ε-induction1 {ψ} ind x = subst (λ k → ψ k ) oiso (ε-induction-ord (osuc (od→ord x)) <-osuc ) where 326 -- ε-induction1 {ψ} ind x = subst (λ k → ψ k ) oiso (ε-induction-ord (osuc (od→ord x)) <-osuc ) where
324 induction : (ox : Ordinal) → ((oy : Ordinal) → oy o< ox → ψ (ord→od oy)) → ψ (ord→od ox) 327 -- induction : (ox : Ordinal) → ((oy : Ordinal) → oy o< ox → ψ (ord→od oy)) → ψ (ord→od ox)
325 induction ox prev = ind ( λ {y} lt → subst (λ k → ψ k ) oiso (prev (od→ord y) (o<-subst (c<→o< lt) refl diso ))) 328 -- induction ox prev = ind ( λ {y} lt → subst (λ k → ψ k ) oiso (prev (od→ord y) (o<-subst (c<→o< lt) refl diso )))
326 ε-induction-ord : (ox : Ordinal) { oy : Ordinal } → oy o< ox → ψ (ord→od oy) 329 -- ε-induction-ord : (ox : Ordinal) { oy : Ordinal } → oy o< ox → ψ (ord→od oy)
327 ε-induction-ord ox {oy} lt = TransFinite1 {λ oy → ψ (ord→od oy)} induction oy 330 -- ε-induction-ord ox {oy} lt = TransFinite1 {λ oy → ψ (ord→od oy)} induction oy
328 331
329 Select : (X : HOD ) → ((x : HOD ) → Set n ) → HOD 332 Select : (X : HOD ) → ((x : HOD ) → Set n ) → HOD
330 Select X ψ = record { od = record { def = λ x → ( odef X x ∧ ψ ( ord→od x )) } ; odmax = odmax X ; <odmax = λ y → <odmax X (proj1 y) } 333 Select X ψ = record { od = record { def = λ x → ( odef X x ∧ ψ ( ord→od x )) } ; odmax = odmax X ; <odmax = λ y → <odmax X (proj1 y) }
331 334
332 Replace : HOD → (HOD → HOD) → HOD 335 Replace : HOD → (HOD → HOD) → HOD