comparison CCChom.agda @ 805:979c0bf97a5a

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 25 Apr 2019 17:56:30 +0900
parents 2716d2945730
children dd0d0a201990
comparison
equal deleted inserted replaced
804:2716d2945730 805:979c0bf97a5a
617 DX G = GraphtoCat ( record { vertex = Objs {G} ; edge = Arrow {G}} ) 617 DX G = GraphtoCat ( record { vertex = Objs {G} ; edge = Arrow {G}} )
618 618
619 -- open import Category.Sets 619 -- open import Category.Sets
620 -- postulate extensionality : { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ ) → Relation.Binary.PropositionalEquality.Extensionality c₂ c₂ 620 -- postulate extensionality : { c₁ c₂ ℓ : Level} ( A : Category c₁ c₂ ℓ ) → Relation.Binary.PropositionalEquality.Extensionality c₂ c₂
621 621
622 fobj : {G : Graph} ( a : Obj (DX G) ) → Set
623 fobj {G} (atom x) = vertex G
624 fobj (a ∧ b) = (fobj a ) /\ (fobj b )
625 fobj (a <= b) = fobj b → fobj a
626 fobj ⊤ = One'
627 {-# TERMINATING #-}
628 fmap : {G : Graph} { a b : Obj (DX G) } → Hom (DX G) a b → fobj a → fobj b
629 fmap {G} {a} {a} (id a) = id1 Sets (fobj a) where open ≈-Reasoning (Sets {Level.zero})
630 fmap {G} {a} {(atom b)} (next (arrow x) f) = λ _ → b
631 fmap {G} {a} {b} (next (id b) f) = fmap f
632 fmap {G} {a} {⊤} (next (○ b) f) = λ _ → OneObj'
633 fmap {G} {a} {b} (next π f) = λ z → proj₁ ( fmap f z )
634 fmap {G} {a} {b} (next π' f) = λ z → proj₂ ( fmap f z )
635 fmap {G} {a} {b} (next ε f) = λ z → ( proj₁ (fmap f z) )( proj₂ (fmap f z) )
636 fmap {G} {a} {b} (next (f ・ g) h) = λ z → fmap ( next f (next g h ) ) z
637 fmap {G} {a} {(_ ∧ _)} (next < f , g > h) = λ z → ( fmap (next f h) z , fmap (next g h) z)
638 fmap {G} {a} {(c <= b)} (next {_} {d} (f *) g ) = λ x y → fmap (next f (id (d ∧ b))) ( fmap g x , y )
639
622 CS : {G : Graph } → Functor (DX G) (Sets {Level.zero}) 640 CS : {G : Graph } → Functor (DX G) (Sets {Level.zero})
623 FObj (CS {G}) (atom x) = vertex G 641 FObj CS a = fobj a
624 FObj CS ⊤ = One' 642 FMap (CS {G}) {a} {b} f = fmap {G} {a} {b} f
625 FObj CS (a ∧ b) = (FObj CS a ) /\ (FObj CS b )
626 FObj CS (a <= b) = FObj CS b → FObj CS a
627 FMap CS {a} {a} (id a) = id1 Sets (FObj CS a) where open ≈-Reasoning (Sets {Level.zero})
628 FMap CS {a} {(atom b)} (next (arrow x) f) = λ _ → b
629 FMap CS {a} {.a₁} (next (id a₁) f) = FMap CS f
630 FMap CS {a} {.⊤} (next (○ a₁) f) = λ _ → OneObj'
631 FMap CS {a} {b} (next π f) = λ z → proj₁ ( FMap CS f z )
632 FMap CS {a} {b} (next π' f) = λ z → proj₂ ( FMap CS f z )
633 FMap CS {a} {b} (next ε f) = λ z → ( proj₁ (FMap CS f z) )( proj₂ (FMap CS f z) )
634 FMap CS {a} {.(_ ∧ _)} (next < f , g > h) = λ z → ( FMap CS (next f h) z , FMap CS (next g h) z)
635 FMap CS {a} {b} (next (f ・ g) h) = λ z → FMap CS ( next f (next g h ) ) z
636 FMap CS {a} {(c <= b)} (next (e *) f) = {!!}
637 isFunctor (CS {G}) = isf where 643 isFunctor (CS {G}) = isf where
638 distrCS : {a b c : Obj (DX G)} { g : Hom (DX G) b c } { f : Hom (DX G) a b } → Sets [ FMap CS ((DX G) [ g o f ]) ≈ Sets [ FMap CS g o FMap CS f ] ] 644 _++_ = Category._o_ (DX G)
639 distrCS = {!!} 645 distrCS : {a b c : Obj (DX G)} { f : Hom (DX G) a b } { g : Hom (DX G) b c } → Sets [ fmap ((DX G) [ g o f ]) ≈ Sets [ fmap g o fmap f ] ]
640 isf : IsFunctor (DX G) Sets (FObj CS) ( FMap CS ) 646 distrCS {a} {.a} {.a} {id a} {id .a} = refl
641 IsFunctor.identity isf = extensionality Sets ( λ x → {!!} ) 647 distrCS {a} {.a} {c} {id a} {next x g} = begin
642 IsFunctor.distr isf = distrCS 648 fmap (DX G [ next x g o Chain.id a ])
649 ≈⟨⟩
650 fmap ( next x ( g ++ (Chain.id a)))
651 ≈⟨ extensionality Sets ( λ y → cong ( λ k → fmap ( next x k ) y ) (idR1 (DX G)) ) ⟩
652 fmap ( next x g )
653 ≈↑⟨ idL ⟩
654 Sets [ fmap (next x g) o fmap (Chain.id a) ]
655 ∎ where open ≈-Reasoning Sets
656 distrCS {a} {b} {b} {f} {id b} = refl
657 distrCS {a} {b} {.(atom _)} {f} {next (arrow x) g} = refl
658 distrCS {a} {b} {c} {f} {next (id c) g} = begin
659 fmap (DX G [ next (Arrow.id c) g o f ])
660 ≈⟨ {!!} ⟩
661 Sets [ fmap (next (Arrow.id c) g) o fmap f ]
662 ∎ where open ≈-Reasoning Sets
663 distrCS {a} {b} {.⊤} {f} {next (○ a₁) g} = begin
664 fmap (DX G [ next (○ a₁) g o f ])
665 ≈⟨ extensionality Sets ( λ x → refl ) ⟩
666 Sets [ fmap (next (○ a₁) g) o fmap f ]
667 ∎ where open ≈-Reasoning Sets
668 distrCS {a} {b} {c} {f} {next π g} = {!!}
669 distrCS {a} {b} {c} {f} {next π' g} = {!!}
670 distrCS {a} {b} {c} {f} {next ε g} = {!!}
671 distrCS {a} {b} {.(_ ∧ _)} {f} {next < x , x₁ > g} = {!!}
672 distrCS {a} {b} {c} {f} {next (x ・ x₁) g} = extensionality Sets ( λ z → begin
673 fmap (DX G [ next (x ・ x₁) g o f ]) z
674 ≡⟨ {!!} ⟩
675 ( Sets [ fmap (next (x ・ x₁) g) o fmap f ] ) z
676 ∎ ) where open ≡-Reasoning
677 distrCS {a} {b} {.(_ <= _)} {f} {next (x *) g} = {!!}
678 isf : IsFunctor (DX G) Sets fobj fmap
679 IsFunctor.identity isf = extensionality Sets ( λ x → refl )
643 IsFunctor.≈-cong isf refl = refl 680 IsFunctor.≈-cong isf refl = refl
644 681 IsFunctor.distr isf {a} {b} {c} {g} {f} = distrCS {a} {b} {c} {g} {f}
682