lib.graph-homomorphisms.classes.EdgeInjective.Lemmas.md.

Version of Sunday, January 22, 2023, 10:42 PM

Powered by agda version 2.6.2.2-442c76b and pandoc 2.14.0.3


Investigations on graph-theoretical constructions in Homotopy type theory

Jonathan Prieto-Cubides j.w.w. Håkon Robbestad Gylterud

Department of Informatics

University of Bergen, Norway

{-# OPTIONS --without-K --exact-split #-}

open import foundations.Core
module lib.graph-homomorphisms.classes.EdgeInjective.Lemmas ( : Level)
  where


  open import lib.graph-homomorphisms.classes.EdgeInjective
  open import foundations.Nat 
  open import foundations.Fin 

  open import lib.graph-definitions.Graph
  open import lib.graph-homomorphisms.Hom
  open Hom

  open import lib.graph-families.CycleGraph 
  open import lib.graph-families.CycleGraph.RotHom
  open import lib.graph-families.CycleGraph.Isomorphisms.Lemmas
  open import lib.graph-relations.Isomorphic


The following is a particular case of cospan with domain Cn to a graph G where the arrows are edge-injective. The resulting identity type is a prop.

  module
    _
    (n : ) (n>0 : n > 0)
    (G : Graph )
    -----------------------------------------
    (f : Hom (Cycle n) G)
    (f-fact : isEdgeInj f)
    -----------------------------------------
    (g : Hom (Cycle n) G)
    (g-fact : isEdgeInj g)
    where
    open import lib.graph-homomorphisms.Lemmas

    module _ where
      abstract
        ∑-≡-rot^k-is-prop : isProp (∑[ (k , _ )   n  ]  (f  ((rot  n ^-hom k) ∘Hom g)))
        ∑-≡-rot^k-is-prop (k₁ , p₁) (k₂ , p₂)
          = pair= (k₁≡k₂ , Hom-is-set (Cycle n) G f _ (tr _ k₁≡k₂ p₁) p₂)
          where
          open Hom-Lemma-1 (Cycle n) G
          eq-1 : ((rot  n ^-hom (π₁ k₁)) ∘Hom g)  ((rot  n ^-hom (π₁ k₂)) ∘Hom g)
          eq-1 = ! p₁ · p₂

          eq-2
            : let h₁ = (rot  n ^-hom (π₁ k₁))
                  h₂ = (rot  n ^-hom (π₁ k₂))
            in ∑[ p  Hom.α (h₁ ∘Hom g)  Hom.α (h₂ ∘Hom g) ]
              (tr  w  (x y : Node (Cycle n))
                 (e : Edge (Cycle n) x y)  Edge G (w x) (w y)) p (Hom.β (h₁ ∘Hom g))
               Hom.β (h₂ ∘Hom g))
          eq-2 = (≡-of-homs-≃-≡-∑  (h₁ ∘Hom g) (h₂ ∘Hom g) ∙→) eq-1
            where
            h₁ h₂ : Hom (Cycle n) (Cycle n)
            h₁ = (rot  n ^-hom (π₁ k₁))
            h₂ = (rot  n ^-hom (π₁ k₂))

          eq-3
            : {x y : Node (Cycle n)} (e : Edge (Cycle n) x y)
             let h₁ = (rot  n ^-hom (π₁ k₁))
                  h₂ = (rot  n ^-hom (π₁ k₂))
              in
                Path {A = ∑[ x ] ∑[ y ] Edge G x y }
                  ( (α (h₁ ∘Hom g) x) , (α (h₁ ∘Hom g) y) , Hom.β g _ _ (β h₁ x y e))
                ( (α (h₂ ∘Hom g) x) , (α (h₂ ∘Hom g) y) , Hom.β g _ _ (β h₂ x y e))
          eq-3 {x = x}{y} e
            = ≡-of-homs-to-triples  (h₁ ∘Hom g) (h₂ ∘Hom g) (π₁ (eq-2)) (π₂ eq-2) x y e
            where
            h₁ h₂ : Hom (Cycle n) (Cycle n)
            h₁ = (rot  n ^-hom (π₁ k₁))
            h₂ = (rot  n ^-hom (π₁ k₂))

          eq-4
            : (x y : Node (Cycle n)) (e : Edge (Cycle n) x y)
             let h₁ = (rot  n ^-hom (π₁ k₁))
                  h₂ = (rot  n ^-hom (π₁ k₂))
              in
              Path {A = ∑[ x ] ∑[ y ] Edge (Cycle n) x y }
                   ((α h₁ x) , (α h₁ y) , (β h₁ x y e))
                   ((α h₂ x) , (α h₂ y) , (β h₂ x y e))
          eq-4 x y e
            = g-fact _ _ (eq-3 e)
            where
            h₁ h₂ : Hom (Cycle n) (Cycle n)
            h₁ = (rot  n ^-hom (π₁ k₁))
            h₂ = (rot  n ^-hom (π₁ k₂))

          k₁≡k₂ : k₁  k₂
          k₁≡k₂ = L1-hom  n n>0 eq-4

      module _ where
        private
          g∘ = Hom-Lemma-2.g∘ (Cycle n) (Cycle n) G f g
          ∑-change-≡-≅ = Hom-Lemma-1.∑-change-≡-≅  (Cycle n) (Cycle n)

        ∑-Cn-isos-is-prop' 
          : isProp (∑[ α  Cycle n  Cycle n ] (f  g∘ (≡-from-iso  n n>0 α)))
        ∑-Cn-isos-is-prop' = isProp-≃ (≃-sym (m₁  n n>0 G f g)) ∑-≡-rot^k-is-prop

        ∑-Cn-isos-is-prop : isProp (∑[ α  Cycle n  Cycle n ] (f  (g∘ α)))
        ∑-Cn-isos-is-prop = isProp-≃ (≃-sym ( ∑-change-≡-≅ f g)) ∑-Cn-isos-is-prop'

{- module experiment-part-d {ℓ : Level} (G : Graph ℓ) —————————————– (A : Graph ℓ) (f : Hom A G) (f-fact : isEdgeInj f) —————————————– (B : Graph ℓ) (g : Hom B G) (g-fact : isEdgeInj g) where

paso-a
  : (Path {A = ∑[ H ∶ Graph ℓ ] ∑[ h ∶ Hom H G ] isEdgeInj h}
       (A , (f , f-fact))
       (B , (g , g-fact)))
  ≃ (∑[ α ∶ A ≡ B ]
             (tr (λ H → ∑[ h ∶ Hom H G ] isEdgeInj h)
             α
             (f , f-fact)) ≡ g , g-fact)

paso-a = ≃-sym $ pair=Equiv (Graph ℓ) λ H → ∑[ h ∶ Hom H G ] isEdgeInj h

paso-d
  : (α : A ≡ B)
  → (∑[ p ∶ tr (λ H → Hom H G) α f ≡ g ]
             (Path {A = isEdgeInj g}
               (tr (λ h → isEdgeInj h) p
               (tr (λ p → isEdgeInj (π₂ p))
               (pair= ((α , refl (tr (λ X → Hom X G) α f)))) f-fact))
             g-fact))
  ≃ (tr (λ H → Hom H G) α f ≡ g)

paso-d idp = ∑-≃-base λ {idp →
       (being-edge-inj-is-prop g _ g-fact ,
           prop-is-set (being-edge-inj-is-prop g) _ g-fact
           (being-edge-inj-is-prop g _ g-fact))}


module _ (α : A ≡ B) where

  open Hom-Lemma-1 A B
  open Hom-Lemma-2 A B G f g

  cal :
      (Path {A = ∑[ H ∶ Graph ℓ ] ∑[ h ∶ Hom H G ] isEdgeInj h}
               (A , f , f-fact)
               (B , g , g-fact))
         ≃ (∑[ α ∶ A ≡ B ]
         (∑[ p ∶ Hom.α f ≡ Hom.α (g∘ α) ]
         (tr (λ e → (x y : Node A)
           → Edge A x y → Edge G (e x) (e y)) p
         (Hom.β f) ≡ Hom.β (g∘ α))))
  cal =
    begin≃
           (Path {A = ∑[ H ∶ Graph ℓ ] ∑[ h ∶ Hom H G ] isEdgeInj h}
               (A , (f , f-fact))
               (B , (g , g-fact)))
           ≃⟨ paso-a ⟩

           ((∑[ α ∶ A ≡ B ]
                (tr (λ H → ∑[ h ∶ Hom H G ] isEdgeInj h)
                α
                (f , f-fact)) ≡ g , g-fact))
           {-
             The following steps can be skiped until next comment.
           -}
             ≃⟨ sigma-preserves (λ {idp → idtoeqv idp }) ⟩
           (∑[ α ∶ A ≡ B ]
             (Path {A = ∑[ h ∶ Hom B G ] (isEdgeInj h)}
               (tr (λ H → Hom H G) α f , tr (λ p → isEdgeInj (π₂ p) )
               (pair= ((α , refl (tr (λ X → Hom X G) α f)))) f-fact)
             (g , g-fact)))
             ≃⟨ sigma-preserves (λ { idp → pair-≃-∑}) ⟩
           (∑[ α ∶ A ≡ B ] (∑[ p ∶ tr (λ H → Hom H G) α f ≡ g ]
               (Path {A = isEdgeInj g}
                     (tr (λ h → isEdgeInj h) p
                     (tr (λ p → isEdgeInj (π₂ p))
                       (pair= ((α , refl (tr (λ X → Hom X G) α f))))
                         f-fact))
                       g-fact)))
             ≃⟨ sigma-preserves paso-d ⟩
           (∑[ α ∶ A ≡ B ] ((tr (λ H → Hom H G) α f ≡ g)))

             ≃⟨ sigma-preserves (λ {idp → idEqv}) ⟩
           (∑[ α ∶ A ≡ B ] (f ≡ g∘ α) )
           {-
             From here, we must remember α is an equality between two graphs,
             and we have also an equality between two graph-morphisms.
             Now, in order to use the fiberwise equivalence, we need to
             unfold the base type A ≡ B.
           -}
               ≃⟨ sigma-preserves (λ α → Hom-Lemma-1.≡-of-homs-≃-≡-∑ A G f (g∘ α)) ⟩
           (∑[ α ∶ A ≡ B ]
             (∑[ p ∶ Hom.α f ≡ Hom.α (g∘ α) ]
               (tr (λ e → (x y : Node A)
               → Edge A x y
               → Edge G (e x) (e y)) p
               (Hom.β f) ≡ Hom.β (g∘ α))))
          ≃∎ where open import foundations.UnivalenceAxiom
-}

Latest changes

(2022-12-28)(57c278b4) Last updated: 2021-09-16 15:00:00 by jonathan.cubides
(2022-07-06)(d3a4a8cf) minors by jonathan.cubides
(2022-01-26)(4aef326b) [ reports ] added some revisions by jonathan.cubides
(2021-12-20)(049db6a8) Added code of cubical experiments. by jonathan.cubides
(2021-12-20)(961730c9) [ html ] regular update by jonathan.cubides
(2021-12-20)(e0ef9faa) Fixed compilation and format, remove hidden parts by jonathan.cubides
(2021-12-20)(5120e5d1) Added cubical experiment to the master by jonathan.cubides
(2021-12-17)(828fdd0a) More revisions added for CPP by jonathan.cubides
(2021-12-15)(0d6a99d8) Fixed some broken links and descriptions by jonathan.cubides
(2021-12-15)(662a1f2d) [ .gitignore ] add by jonathan.cubides
(2021-12-15)(0630ce66) Minor fixes by jonathan.cubides
(2021-12-13)(04f10eba) Fixed a lot of details by jonathan.cubides
(2021-12-10)(24195c9f) [ .gitignore ] ignore .zip and arxiv related files by jonathan.cubides
(2021-12-09)(538d2859) minor fixes before dinner by jonathan.cubides
(2021-12-09)(36a1a69f) [ planar.pdf ] w.i.p revisions to share on arxiv first by jonathan.cubides