comparison CCChom.agda @ 814:e4986625ddd7

add <= and <,>
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 27 Apr 2019 10:10:40 +0900
parents 4ff300e1e98c
children bb9fd483f560
comparison
equal deleted inserted replaced
813:9b8ee2ddd92d 814:e4986625ddd7
604 arrow : {a b : vertex G} → (edge G) a b → Arrow G (atom a) (atom b) 604 arrow : {a b : vertex G} → (edge G) a b → Arrow G (atom a) (atom b)
605 ○ : (a : Objs G ) → Arrow G a ⊤ 605 ○ : (a : Objs G ) → Arrow G a ⊤
606 π : {a b : Objs G } → Arrow G ( a ∧ b ) a 606 π : {a b : Objs G } → Arrow G ( a ∧ b ) a
607 π' : {a b : Objs G } → Arrow G ( a ∧ b ) b 607 π' : {a b : Objs G } → Arrow G ( a ∧ b ) b
608 ε : {a b : Objs G } → Arrow G ((a <= b) ∧ b ) a 608 ε : {a b : Objs G } → Arrow G ((a <= b) ∧ b ) a
609 -- <_,_> : {a b c : Objs } → Arrow c a → Arrow c b → Arrow c (a ∧ b) 609 <_,_> : {a b c : Objs G } → Arrow G c a → Arrow G c b → Arrow G c (a ∧ b)
610 -- _* : {a b c : Objs } → Arrow (c ∧ b ) a → Arrow c ( a <= b ) 610 _* : {a b c : Objs G } → Arrow G (c ∧ b ) a → Arrow G c ( a <= b )
611 611
612 record SM : Set (suc Level.zero) where 612 record SM : Set (suc Level.zero) where
613 field 613 field
614 graph : Graph 614 graph : Graph
615 sobj : vertex graph → Set 615 sobj : vertex graph → Set
635 amap {G} {.(atom _)} {.(atom _)} (arrow x) = smap G x 635 amap {G} {.(atom _)} {.(atom _)} (arrow x) = smap G x
636 amap {G} {a} {.⊤} (○ a) _ = OneObj' 636 amap {G} {a} {.⊤} (○ a) _ = OneObj'
637 amap {G} {.(b ∧ _)} {b} π ( x , _) = x 637 amap {G} {.(b ∧ _)} {b} π ( x , _) = x
638 amap {G} {.(_ ∧ b)} {b} π'( _ , x) = x 638 amap {G} {.(_ ∧ b)} {b} π'( _ , x) = x
639 amap {G} {.((b <= _) ∧ _)} {b} ε ( f , x ) = f x 639 amap {G} {.((b <= _) ∧ _)} {b} ε ( f , x ) = f x
640 amap {G} {a} {.(_ ∧ _)} < f , g > x = (amap f x , amap g x)
641 amap {G} {a} {.(_ <= _)} (f *) x = λ y → amap f ( x , y )
640 fmap : {G : SM} { a b : Objs (graph G) } → Hom (DX G) a b → fobj {G} a → fobj {G} b 642 fmap : {G : SM} { a b : Objs (graph G) } → Hom (DX G) a b → fobj {G} a → fobj {G} b
641 fmap {G} {a} {a} (id a) = λ z → z 643 fmap {G} {a} {a} (id a) = λ z → z
642 fmap {G} {a} {b} (next x f ) = Sets [ amap {G} x o fmap f ] 644 fmap {G} {a} {b} (next x f ) = Sets [ amap {G} x o fmap f ]
643 645
644 CS : (G : SM ) → Functor (DX G) (Sets {Level.zero}) 646 CS : (G : SM ) → Functor (DX G) (Sets {Level.zero})
646 FMap (CS G) {a} {b} f = fmap {G} {a} {b} f 648 FMap (CS G) {a} {b} f = fmap {G} {a} {b} f
647 isFunctor (CS G) = isf where 649 isFunctor (CS G) = isf where
648 _++_ = Category._o_ (DX G) 650 _++_ = Category._o_ (DX G)
649 ++idR = IsCategory.identityR ( Category.isCategory ( DX G ) ) 651 ++idR = IsCategory.identityR ( Category.isCategory ( DX G ) )
650 distr : {a b c : Obj (DX G)} { f : Hom (DX G) a b } { g : Hom (DX G) b c } → (z : fobj {G} a ) → fmap (g ++ f) z ≡ fmap g (fmap f z) 652 distr : {a b c : Obj (DX G)} { f : Hom (DX G) a b } { g : Hom (DX G) b c } → (z : fobj {G} a ) → fmap (g ++ f) z ≡ fmap g (fmap f z)
653 distr {a} {b} {e ∧ e1} {f} {next {b} {d} {e ∧ e1} < x , y > g} z = begin
654 fmap (next < x , y > g ++ f) z
655 ≡⟨⟩
656 amap x (fmap (g ++ f) z) , amap y (fmap (g ++ f) z)
657 ≡⟨ cong ( λ k → ( amap x k , amap y k )) (distr {a} {b} {d} {f} {g} z) ⟩
658 amap x (fmap g (fmap f z)) , amap y (fmap g (fmap f z))
659 ≡⟨⟩
660 fmap (next < x , y > g) (fmap f z)
661 ∎ where open ≡-Reasoning
662 distr {a} {b} {c <= d} {f} {next {b} {e} {c <= d} (x *) g} z = begin
663 fmap (next (x *) g ++ f) z
664 ≡⟨⟩
665 (λ y → amap x (fmap (g ++ f) z , y) )
666 ≡⟨ extensionality Sets ( λ y → cong ( λ k → (amap x (k , y )) ) (distr {a} {b} {e} {f} {g} z) ) ⟩
667 (λ y → amap x (fmap g (fmap f z) , y))
668 ≡⟨⟩
669 fmap (next (x *) g) (fmap f z)
670 ∎ where open ≡-Reasoning
651 distr {a} {b} {c} {f} {next {.b} {.c ∧ x} {.c} π g} z = begin 671 distr {a} {b} {c} {f} {next {.b} {.c ∧ x} {.c} π g} z = begin
652 fmap (DX G [ next π g o f ]) z 672 fmap (DX G [ next π g o f ]) z
653 ≡⟨⟩ 673 ≡⟨⟩
654 fmap {G} {a} {c} (next {PL G} {a} {c ∧ x} {c} π ( g ++ f)) z 674 fmap {G} {a} {c} (next {PL G} {a} {c ∧ x} {c} π ( g ++ f)) z
655 ≡⟨⟩ 675 ≡⟨⟩
713 isf : IsFunctor (DX G) Sets fobj fmap 733 isf : IsFunctor (DX G) Sets fobj fmap
714 IsFunctor.identity isf = extensionality Sets ( λ x → refl ) 734 IsFunctor.identity isf = extensionality Sets ( λ x → refl )
715 IsFunctor.≈-cong isf refl = refl 735 IsFunctor.≈-cong isf refl = refl
716 IsFunctor.distr isf {a} {b} {c} {g} {f} = extensionality Sets ( λ z → distr {a} {b} {c} {g} {f} z ) 736 IsFunctor.distr isf {a} {b} {c} {g} {f} = extensionality Sets ( λ z → distr {a} {b} {c} {g} {f} z )
717 737
718 <_,_> : { G : SM } → {a b c : Objs (graph G)} → Arrow (graph G) c a → Arrow (graph G) c b → Hom Sets (FObj (CS G) c ) (FObj (CS G) (a ∧ b) )
719 <_,_> {G} {a} {b} {c} f g = λ z → ( (FMap (CS G) ( next f (id c))) z , FMap (CS G) (next g (id c)) z )
720
721 _* : { G : SM } → {a b c : Objs (graph G)} → Arrow (graph G) (c ∧ b ) a → Hom Sets (FObj (CS G) c) (FObj (CS G) ( a <= b ))
722 _* {G} {a} {b} {c} f = λ z y → FMap (CS G) ( next f (id (c ∧ b) ) ) ( z , y )