lib.graph-embeddings.Map.Face.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


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

module lib.graph-embeddings.Map.Face
  where
  open import foundations.Core

  open import lib.graph-embeddings.Map
  open import lib.graph-definitions.Graph
  open import lib.graph-homomorphisms.Hom
  open import lib.graph-homomorphisms.classes.EdgeInjective
  open import lib.graph-transformations.U
  open import lib.graph-classes.CyclicGraph
  open import lib.graph-classes.CyclicGraph.Stuff

  module _ { : Level}(G : Graph ) where
    flip :  {x y : Node G}
       Edge (U G) x y
       Edge (U G) y x
    flip (inl e) = inr e
    flip (inr e) = inl e

    open import foundations.Nat 
    open Hom
    open cyclic-graph-stuff
    open import foundations.Cyclic


    {-
      A face must have in principle at least one edge if the graph
      contains an edge. This avoids to have empty faces everywhere.
    -}
    starFaceCond : (A  : Graph )  (h : Hom A (U G))  Type 
    starFaceCond A h = (x : Node A)   Star G (α h x)    Star A x 

    starFaceCond-is-prop : (A  : Graph )  (h : Hom A (U G))  isProp (starFaceCond A h)
    starFaceCond-is-prop A h = pi-is-prop  _  pi-is-prop  _  trunc-is-prop))

    {- The graph homomorphism should preserve the order of edges
          in each faces. The edge ordering it is induced by the
          underlying cyclic graph.
    -}
    module _
       (𝕄 : Map G)
       (A  : Graph )
       (A↺ : CyclicGraph  A)
       (h : Hom A (U G))
       where

      faceCornersPreserved : Type 
      faceCornersPreserved = (x : Node A)
         (e₀ : Edge A (pred-↺ A A↺ x) x)
         (e₁ : Edge A x (suc-↺ A A↺ x))
         Path {A = Star G (α h x)}
              (CyclicSet.φ (𝕄 ((α h x))) (α h (pred-↺ A A↺ x) , flip (β h _ _ e₀)))
              ((α h (suc-↺ A A↺ x) , β h _ _ e₁))

      faceCornersPreserved-is-prop : isProp (faceCornersPreserved)
      faceCornersPreserved-is-prop = pi-is-prop  x 
        pi-is-prop  _  pi-is-prop  _  Star-is-set G (α h x) _ _)))

    -- For the record, corner-cond is the replacement
    -- of the following condition, called before, map-compatiblity.
        -- → Path {A = Star G (α h x)}
        --        (edge-after-suc-by-map A↺ h x 𝕄)
        --        (edge-in-star-with-pred A↺ h x)
    -- Face' is nice but not that good for proving stuff.
    record
      Face (𝕄 : Map G)
        : Type (lsuc )
      where
      inductive
      constructor face
      field
        A  : Graph 
        A↺ : CyclicGraph  A
        h : Hom A (U G)
        h-is-edge-inj : isEdgeInj h
        star-cond : starFaceCond A h
        corners-cond : faceCornersPreserved 𝕄 A A↺ h

    faceData : (𝕄 : Map G)  Type (lsuc )
    faceData 𝕄 = ∑[ A   Graph  ] (CyclicGraph  A × Hom A (U G))

    faceCond : (𝕄 : Map G)  faceData 𝕄  Type 
    faceCond 𝕄 (A , A↺ , h) = isEdgeInj h × starFaceCond A h × faceCornersPreserved 𝕄  A A↺ h

    faceCond-is-prop :  {𝕄 : Map G}  (f : faceData 𝕄 )  isProp (faceCond 𝕄 f)
    faceCond-is-prop {𝕄} (A , A↺ , h) = ∑-prop (∑-prop (being-edge-inj-is-prop h)  _ 
                                           starFaceCond-is-prop A h))  _ 
                                           faceCornersPreserved-is-prop 𝕄 A A↺ h)

    Face' : (𝕄 : Map G)  Type (lsuc )
    Face' 𝕄 = ∑[ d  faceData 𝕄 ] (faceCond 𝕄 d)

    Face'≃Face : (𝕄 : Map G)  Face' 𝕄  Face 𝕄
    Face'≃Face 𝕄 = qinv-≃  {((A , A↺ , h) , (p₁ , p₂) , p₃)  face A A↺ h p₁ p₂ p₃})
                          ((λ {(face A A↺ h p₁ p₂ p₃)  ((A , A↺ , h) , (p₁ , p₂) , p₃)} )
                          ,  { (face A A↺ h p₁ p₂ p₃)  idp })
                          , λ {((A , A↺ , h) , (p₁ , p₂) , p₃)  idp})

    Face'-Path-space
      : (𝕄 : Map G)
       (F₁@(d₁ , c₁) F₂@(d₂ , c₂) : Face' 𝕄)
       (F₁  F₂)  (d₁  d₂)
    Face'-Path-space 𝕄 F₁@(d₁ , c₁) F₂@(d₂ , c₂) = simplify-pair (faceCond-is-prop {𝕄})

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