comparison src/ZProduct.agda @ 1298:2c34f2b554cf current

Replace and filter projection fix done
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 03 Jun 2023 17:31:17 +0900
parents ad9ed7c4a0b3
children 47d3cc596d68
comparison
equal deleted inserted replaced
1297:ad9ed7c4a0b3 1298:2c34f2b554cf
265 zp02 : {z : Ordinal } → odef (ZFP a B) z → z ≡ & < * x , * b > → odef a x 265 zp02 : {z : Ordinal } → odef (ZFP a B) z → z ≡ & < * x , * b > → odef a x
266 zp02 {.(& < * _ , * _ >)} (ab-pair {a1} {b1} aa1 bb1) eq = subst (λ k → odef a k) (*≡*→≡ zp03) aa1 where 266 zp02 {.(& < * _ , * _ >)} (ab-pair {a1} {b1} aa1 bb1) eq = subst (λ k → odef a k) (*≡*→≡ zp03) aa1 where
267 zp03 : * a1 ≡ * x 267 zp03 : * a1 ≡ * x
268 zp03 = proj1 (prod-≡ (&≡&→≡ eq)) 268 zp03 = proj1 (prod-≡ (&≡&→≡ eq))
269 269
270 ZP-proj1-0 : {A B : HOD} {z : Ordinal } → {zab : * z ⊆ ZFP A B} → ZP-proj1 A B (* z) zab ≡ od∅ → z ≡ & od∅
271 ZP-proj1-0 {A} {B} {z} {zab} eq = uf10 where
272 uf10 : z ≡ & od∅
273 uf10 = trans (sym &iso) ( cong (&) (¬x∋y→x≡od∅ (λ {y} zy → uf11 zy ) )) where
274 uf11 : {y : Ordinal } → odef (* z) y → ⊥
275 uf11 {y} zy = ⊥-elim ( ¬x<0 (subst (λ k → odef k (zπ1 pqy)) eq uf12 ) ) where
276 pqy : odef (ZFP A B) y
277 pqy = zab zy
278 uf14 : odef (* z) (& < * (zπ1 pqy) , * (zπ2 pqy) >)
279 uf14 = subst (λ k → odef (* z) k ) (sym ( zp-iso pqy)) zy
280 uf12 : odef (ZP-proj1 A B (* z) zab) (zπ1 pqy)
281 uf12 = record { b = _ ; aa = zp1 pqy ; bb = zp2 pqy ; c∋ab = uf14 }
282
270 record ZP2 (A B C : HOD) ( cab : C ⊆ ZFP A B ) (b : Ordinal) : Set n where 283 record ZP2 (A B C : HOD) ( cab : C ⊆ ZFP A B ) (b : Ordinal) : Set n where
271 field 284 field
272 a : Ordinal 285 a : Ordinal
273 aa : odef A a 286 aa : odef A a
274 bb : odef B b 287 bb : odef B b
275 c∋ab : odef C (& < * a , * b > ) 288 c∋ab : odef C (& < * a , * b > )
276 289
277 ZP-proj2 : (A B C : HOD) → C ⊆ ZFP A B → HOD 290 ZP-proj2 : (A B C : HOD) → C ⊆ ZFP A B → HOD
278 ZP-proj2 A B C cab = record { od = record { def = λ x → ZP2 A B C cab x } ; odmax = & B ; <odmax = λ lt → odef< (ZP2.bb lt) } 291 ZP-proj2 A B C cab = record { od = record { def = λ x → ZP2 A B C cab x } ; odmax = & B ; <odmax = λ lt → odef< (ZP2.bb lt) }
292
293 ZP-proj2⊆ZFP : {A B C : HOD} → {cab : C ⊆ ZFP A B} → C ⊆ ZFP A (ZP-proj2 A B C cab)
294 ZP-proj2⊆ZFP {A} {B} {C} {cab} {c} cc with cab cc
295 ... | ab-pair {a} {b} aa bb = ab-pair aa record { a = _ ; aa = aa ; bb = bb ; c∋ab = cc }
296
297 ZP-proj2=rev : {A B a m : HOD} {b : Ordinal } → {cab : m ⊆ ZFP A B} → odef A b → a ⊆ B → m ≡ ZFP A a → a ≡ ZP-proj2 A B m cab
298 ZP-proj2=rev {A} {B} {a} {m} {b} {cab} bb a⊆A refl = ==→o≡ record { eq→ = zp00 ; eq← = zp01 } where
299 zp00 : {x : Ordinal } → odef a x → ZP2 A B (ZFP A a ) cab x
300 zp00 {x} ax = record { a = _ ; aa = bb ; bb = a⊆A ax ; c∋ab = ab-pair bb ax }
301 zp01 : {x : Ordinal } → ZP2 A B (ZFP A a ) cab x → odef a x
302 zp01 {x} record { a = b ; aa = aa ; bb = bb ; c∋ab = c∋ab } = zp02 c∋ab refl where
303 zp02 : {z : Ordinal } → odef (ZFP A a ) z → z ≡ & < * b , * x > → odef a x
304 zp02 {.(& < * _ , * _ >)} (ab-pair {a1} {b1} aa1 bb1) eq = subst (λ k → odef a k) (*≡*→≡ zp03) bb1 where
305 zp03 : * b1 ≡ * x
306 zp03 = proj2 (prod-≡ (&≡&→≡ eq))
307
308 ZP-proj2-0 : {A B : HOD} {z : Ordinal } → {zab : * z ⊆ ZFP A B} → ZP-proj2 A B (* z) zab ≡ od∅ → z ≡ & od∅
309 ZP-proj2-0 {A} {B} {z} {zab} eq = uf10 where
310 uf10 : z ≡ & od∅
311 uf10 = trans (sym &iso) ( cong (&) (¬x∋y→x≡od∅ (λ {y} zy → uf11 zy ) )) where
312 uf11 : {y : Ordinal } → odef (* z) y → ⊥
313 uf11 {y} zy = ⊥-elim ( ¬x<0 (subst (λ k → odef k (zπ2 pqy)) eq uf12 ) ) where
314 pqy : odef (ZFP A B) y
315 pqy = zab zy
316 uf14 : odef (* z) (& < * (zπ1 pqy) , * (zπ2 pqy) >)
317 uf14 = subst (λ k → odef (* z) k ) (sym ( zp-iso pqy)) zy
318 uf12 : odef (ZP-proj2 A B (* z) zab) (zπ2 pqy)
319 uf12 = record { a = _ ; aa = zp1 pqy ; bb = zp2 pqy ; c∋ab = uf14 }
279 320
280 record Func (A B : HOD) : Set n where 321 record Func (A B : HOD) : Set n where
281 field 322 field
282 func : {x : Ordinal } → odef A x → Ordinal 323 func : {x : Ordinal } → odef A x → Ordinal
283 is-func : {x : Ordinal } → (ax : odef A x) → odef B (func ax ) 324 is-func : {x : Ordinal } → (ax : odef A x) → odef B (func ax )
466 record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = ⟪ c∋ab1 , subst (λ k → odef D k) (sym zs02) c∋ab2 ⟫ ; x=ba = x=ba } where 507 record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = ⟪ c∋ab1 , subst (λ k → odef D k) (sym zs02) c∋ab2 ⟫ ; x=ba = x=ba } where
467 zs02 : & < * a , * b > ≡ & < * a' , * b' > 508 zs02 : & < * a , * b > ≡ & < * a' , * b' >
468 zs02 = cong₂ (λ j k → & < j , k >) (sym (proj2 (prod-≡ (subst₂ (λ j k → j ≡ k) *iso *iso (cong (*) (trans (sym x=ba') x=ba)))))) 509 zs02 = cong₂ (λ j k → & < j , k >) (sym (proj2 (prod-≡ (subst₂ (λ j k → j ≡ k) *iso *iso (cong (*) (trans (sym x=ba') x=ba))))))
469 (sym (proj1 (prod-≡ (subst₂ (λ j k → j ≡ k) *iso *iso (cong (*) (trans (sym x=ba') x=ba)))))) 510 (sym (proj1 (prod-≡ (subst₂ (λ j k → j ≡ k) *iso *iso (cong (*) (trans (sym x=ba') x=ba))))))
470 511
512 ZPmirror-neg : {A B C D : HOD} → {cdab : (C \ D) ⊆ ZFP A B } {cab : C ⊆ ZFP A B } {dab : D ⊆ ZFP A B }
513 → ZPmirror A B (C \ D) cdab ≡ ZPmirror A B C cab \ ZPmirror A B D dab
514 ZPmirror-neg {A} {B} {C} {D} {cdab} {cab} {dab} = ==→o≡ record { eq→ = za08 ; eq← = za10 } where
515 za08 : {x : Ordinal} → ZPC A B (C \ D) cdab x → odef (ZPmirror A B C cab \ ZPmirror A B D dab) x
516 za08 {x} record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = c∋ab ; x=ba = x=ba } =
517 ⟪ record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = proj1 c∋ab ; x=ba = x=ba } , za09 ⟫ where
518 za09 : ¬ odef (ZPmirror A B D dab) x
519 za09 zd = ⊥-elim ( proj2 c∋ab (subst (λ k → odef D k) (sym zs02) (ZPC.c∋ab zd) ) ) where
520 x=ba' = ZPC.x=ba zd
521 zs02 : & < * a , * b > ≡ & < * (ZPC.a zd) , * (ZPC.b zd) >
522 zs02 = cong₂ (λ j k → & < j , k >) (sym (proj2 (prod-≡ (subst₂ (λ j k → j ≡ k) *iso *iso (cong (*) (trans (sym x=ba' ) x=ba))))))
523 (sym (proj1 (prod-≡ (subst₂ (λ j k → j ≡ k) *iso *iso (cong (*) (trans (sym x=ba' ) x=ba))))))
524 za10 : {x : Ordinal} → odef (ZPmirror A B C cab \ ZPmirror A B D dab) x → ZPC A B (C \ D) cdab x
525 za10 {x} ⟪ record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = c∋ab ; x=ba = x=ba } , neg ⟫ =
526 record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = ⟪ c∋ab , za11 ⟫ ; x=ba = x=ba } where
527 za11 : ¬ odef D (& < * a , * b >)
528 za11 zd = ⊥-elim (neg record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = zd ; x=ba = x=ba })
529
530
531 ZPmirror-whole : {A B : HOD} → ZPmirror A B (ZFP A B) (λ x → x) ≡ ZFP B A
532 ZPmirror-whole {A} {B} = ==→o≡ record { eq→ = za12 ; eq← = za13 } where
533 za12 : {x : Ordinal} → ZPC A B (ZFP A B) (λ x₁ → x₁) x → ZFProduct B A x
534 za12 {x} record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = c∋ab ; x=ba = x=ba } = subst (λ k → ZFProduct B A k) (sym x=ba) (ab-pair bb aa)
535 za13 : {x : Ordinal} → ZFProduct B A x → ZPC A B (ZFP A B) (λ x₁ → x₁) x
536 za13 {x} (ab-pair {b} {a} bb aa) = record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = ab-pair aa bb ; x=ba = refl }
537
538 ZPmirror-0 : {A B : HOD} {z : Ordinal } → {zab : * z ⊆ ZFP A B} → ZPmirror A B (* z) zab ≡ od∅ → z ≡ & od∅
539 ZPmirror-0 {A} {B} {z} {zab} eq = uf10 where
540 uf10 : z ≡ & od∅
541 uf10 = trans (sym &iso) ( cong (&) (¬x∋y→x≡od∅ (λ {y} zy → uf11 zy ) )) where
542 uf11 : {y : Ordinal } → odef (* z) y → ⊥
543 uf11 {y} zy = ⊥-elim ( ¬x<0 (subst (λ k → odef k (& < * (zπ2 pqy) , * (zπ1 pqy) >) ) eq uf12 ) ) where
544 pqy : odef (ZFP A B) y
545 pqy = zab zy
546 uf14 : odef (* z) (& < * (zπ1 pqy) , * (zπ2 pqy) >)
547 uf14 = subst (λ k → odef (* z) k ) (sym ( zp-iso pqy)) zy
548 uf12 : odef (ZPmirror A B (* z) zab) (& < * (zπ2 pqy) , * (zπ1 pqy) > )
549 uf12 = record { a = _ ; b = _ ; aa = zp1 pqy ; bb = zp2 pqy ; c∋ab = uf14 ; x=ba = refl }
471 550
472 ZFP∩ : {A B C : HOD} → ( ZFP (A ∩ B) C ≡ ZFP A C ∩ ZFP B C ) ∧ ( ZFP C (A ∩ B) ≡ ZFP C A ∩ ZFP C B ) 551 ZFP∩ : {A B C : HOD} → ( ZFP (A ∩ B) C ≡ ZFP A C ∩ ZFP B C ) ∧ ( ZFP C (A ∩ B) ≡ ZFP C A ∩ ZFP C B )
473 proj1 (ZFP∩ {A} {B} {C} ) = ==→o≡ record { eq→ = zfp00 ; eq← = zfp01 } where 552 proj1 (ZFP∩ {A} {B} {C} ) = ==→o≡ record { eq→ = zfp00 ; eq← = zfp01 } where
474 zfp00 : {x : Ordinal} → ZFProduct (A ∩ B) C x → odef (ZFP A C ∩ ZFP B C) x 553 zfp00 : {x : Ordinal} → ZFProduct (A ∩ B) C x → odef (ZFP A C ∩ ZFP B C) x
475 zfp00 (ab-pair ⟪ pa , pb ⟫ qx) = ⟪ ab-pair pa qx , ab-pair pb qx ⟫ 554 zfp00 (ab-pair ⟪ pa , pb ⟫ qx) = ⟪ ab-pair pa qx , ab-pair pb qx ⟫