TopologyDynamicsCategory

Difficulty: optional — 12 definitions, 2 abbreviations, 1 lemmas, 0 theorems, 0 examples.

definition abbreviation lemma
legend
abbrev Topology.Coverage {Topo : Topology} (S : Set Topo.Block) : Type
Show details
| Topology.Coverage S = Set ↑S

Complexity: 17 (size of the value term)

Outer dependencies: Topology

Mathlib dependencies: Set, Set.Elem

def Topology.joinCoverage {Topo : Topology} {S : Set Topo.Block} (b : Topo.Block) :
  CategoryTheory.Functor (Topology.Coverage S) (Topology.Coverage (insert b S))
Show details
| Topology.joinCoverage b = Monotone.functor ⋯

Complexity: 427 (size of the value term)

Outer dependencies: Topology, Topology.Coverage

def Topology.leaveCoverage {Topo : Topology} {S : Set Topo.Block} (b : Topo.Block) :
  CategoryTheory.Functor (Topology.Coverage S) (Topology.Coverage (S \ {b}))
Show details
| Topology.leaveCoverage b = Monotone.functor ⋯

Complexity: 633 (size of the value term)

Outer dependencies: Topology, Topology.Coverage

Lean core dependencies: Not, Subtype

def Topology.joinHistory {Topo : Topology} (S : Set Topo.Block) (b : Topo.Block) :
  Bool → CategoryTheory.Cat
Show details
| Topology.joinHistory S b false = CategoryTheory.Cat.of (Topology.Coverage S)
| Topology.joinHistory S b true = CategoryTheory.Cat.of (Topology.Coverage (insert b S))

Complexity: 317 (size of the value term)

Outer dependencies: Topology

Inner dependencies: Topology.Coverage

Lean core dependencies: Bool, Unit, Unit.unit

def Topology.joinFunctor {Topo : Topology} (S : Set Topo.Block) (b : Topo.Block) :
  CategoryTheory.Functor Bool CategoryTheory.Cat
Show details
| Topology.joinFunctor S b =
  { obj := Topology.joinHistory S b,
    map := fun {x y} h =>
      Bool.casesOn (motive := fun x =>
        (x ⟶ y) → (Topology.joinHistory S b x ⟶ Topology.joinHistory S b y)) x
        (fun h =>
          Bool.casesOn (motive := fun x =>
            (false ⟶ x) → (Topology.joinHistory S b false ⟶ Topology.joinHistory S b x)) y
            (fun h => (CategoryTheory.Functor.id (Topology.Coverage S)).toCatHom)
            (fun h => (Topology.joinCoverage b).toCatHom) h)
        (fun h =>
          Bool.casesOn (motive := fun x =>
            (true ⟶ x) → (Topology.joinHistory S b true ⟶ Topology.joinHistory S b x)) y
            (fun h => absurd ⋯ Topology.joinFunctor._proof_2)
            (fun h => (CategoryTheory.Functor.id (Topology.Coverage (insert b S))).toCatHom) h)
        h,
    map_id := ⋯, map_comp := ⋯ }

Complexity: 1673 (size of the value term)

Outer dependencies: Topology

Lean core dependencies: Bool, Decidable.decide, Eq, Eq.symm, Not, absurd, id, of_decide_eq_true

abbrev Topology.joinGrothendieck {Topo : Topology} (S : Set Topo.Block) (b : Topo.Block) : Type
Show details
| Topology.joinGrothendieck S b = CategoryTheory.Grothendieck (Topology.joinFunctor S b)

Complexity: 33 (size of the value term)

Outer dependencies: Topology

Inner dependencies: Topology.joinFunctor

Mathlib dependencies: CategoryTheory.Grothendieck, Set

Lean core dependencies: Bool

Used by: (none)

def Topology.IsNerveCover {Topo : Topology} {S : Set Topo.Block} {T : Topology.Coverage S}
  (P : CategoryTheory.Presieve T) : Prop
Show details
| Topology.IsNerveCover P =
  (⋃ Y ∈ {Y | ∃ (h : Y ⊆ T), P (CategoryTheory.homOfLE h)}, Y = T ∧
    ∀ (x y : ↑S),
      (SimpleGraph.induce S Topo.external).Adj x y →
        x ∈ T → y ∈ T → ∃ Y ∈ {Y | ∃ (h : Y ⊆ T), P (CategoryTheory.homOfLE h)}, x ∈ Y ∧ y ∈ Y)

Complexity: 773 (size of the value term)

Outer dependencies: Topology, Topology.Coverage

Lean core dependencies: And, Eq, Exists

def Topology.restrictPresieve {Topo : Topology} {S : Set Topo.Block} {T : Topology.Coverage S}
  (P : CategoryTheory.Presieve T) (Y : Topology.Coverage S) : CategoryTheory.Presieve Y
Show details
| Topology.restrictPresieve P Y x✝ = ∃ W, (∃ (h : W ⊆ T), P (CategoryTheory.homOfLE h)) ∧ Z = W ∩ Y

Complexity: 341 (size of the value term)

Outer dependencies: Topology, Topology.Coverage

Lean core dependencies: And, Eq, Exists

theorem Topology.isNerveCover_inter {Topo : Topology} {S : Set Topo.Block} {T : Topology.Coverage S}
  {P : CategoryTheory.Presieve T} (hP : Topology.IsNerveCover P) (Y : Topology.Coverage S)
  (f : Y ⟶ T) : Topology.IsNerveCover (Topology.restrictPresieve P Y)
Show details
fun {Topo} {S} {T} {P} hP Y f =>
  And.casesOn hP fun hunion hnerve =>
    have hYT := CategoryTheory.leOfHom f;
    id
      (id
        ⟨subset_antisymm
            (Eq.mpr
              (id
                (Eq.trans Topology.isNerveCover_inter._simp_1_1
                  (forall_congr fun i => Topology.isNerveCover_inter._simp_1_1)))
              fun Z i =>
              Exists.casesOn i fun w h =>
                Exists.casesOn h fun W h =>
                  And.casesOn h fun left right =>
                    Eq.ndrec (motive := fun Z => Z ⊆ Y → Z ⊆ Y) (fun w => Set.inter_subset_right)
                      (Eq.symm right) w)
            fun ⦃x⦄ hx =>
            have hxT := hYT hx;
            Exists.casesOn
              (Eq.mp
                (Eq.trans Topology.isNerveCover_inter._simp_1_2
                  (congrArg Exists (funext fun i => Topology.isNerveCover_inter._simp_1_2)))
                (Eq.mp (congrArg (fun _a => x ∈ _a) (Eq.symm hunion)) hxT))
              fun W h =>
              Exists.casesOn h fun w hxW =>
                Exists.casesOn w fun h hPW =>
                  Eq.mpr
                    (id
                      (Eq.trans Topology.isNerveCover_inter._simp_1_2
                        (congrArg Exists (funext fun i => Topology.isNerveCover_inter._simp_1_2))))
                    (Exists.intro (W ∩ Y)
                      (Exists.intro
                        (Exists.intro Set.inter_subset_right
                          (Exists.intro W ⟨Exists.intro h hPW, rfl⟩))
                        ⟨hxW, hx⟩)),
          fun x y hadj hx hy =>
          have hxT := hYT hx;
          have hyT := hYT hy;
          Exists.casesOn (hnerve x y hadj hxT hyT) fun W h =>
            And.casesOn h fun left right =>
              Exists.casesOn left fun h hPW =>
                And.casesOn right fun hxW hyW =>
                  Exists.intro (W ∩ Y)
                    ⟨Exists.intro Set.inter_subset_right (Exists.intro W ⟨Exists.intro h hPW, rfl⟩),
                      ⟨⟨hxW, hx⟩, ⟨hyW, hy⟩⟩⟩⟩)

Complexity: 31749 (size of the value term)

Lean core dependencies: And, Eq, Eq.mp, Eq.mpr, Eq.symm, Eq.trans, Exists, congrArg, forall_congr, funext, id, rfl

def Topology.nerveCoverage (Topo : Topology) (S : Set Topo.Block) :
  CategoryTheory.Coverage (Topology.Coverage S)
Show details
| Topo.nerveCoverage S = { coverings := fun _T => {P | Topology.IsNerveCover P}, pullback := ⋯ }

Complexity: 299 (size of the value term)

Outer dependencies: Topology, Topology.Coverage

Lean core dependencies: And, Eq, Eq.symm, Exists, Subsingleton.elim

def Topology.nerveTopology (Topo : Topology) (S : Set Topo.Block) :
  CategoryTheory.GrothendieckTopology (Topology.Coverage S)
Show details
| Topo.nerveTopology S = (Topo.nerveCoverage S).toGrothendieck

Complexity: 79 (size of the value term)

Outer dependencies: Topology, Topology.Coverage

Inner dependencies: Topology.nerveCoverage

Used by: (none)

def Topology.Step.coverageFunctor {Topo : Topology} [Fintype Topo.Block] (st : Topo.membership.Step) :
  CategoryTheory.Functor (Topology.Coverage st.current) (Topology.Coverage st.next)
Show details
| Topology.Step.coverageFunctor st =
  match h : st.input with
  | Topology.Event.idle =>
    have heq := ⋯;
    heq ▸ CategoryTheory.Functor.id (Topology.Coverage st.next)
  | Topology.Event.join b =>
    if hb : b ∈ st.current then
      have heq := ⋯;
      heq ▸ CategoryTheory.Functor.id (Topology.Coverage st.next)
    else
      have heq := ⋯;
      ⋯ ▸ Topology.joinCoverage b
  | Topology.Event.leave b =>
    if hb : b ∈ st.current then
      have heq := ⋯;
      ⋯ ▸ Topology.leaveCoverage b
    else
      have heq := ⋯;
      heq ▸ CategoryTheory.Functor.id (Topology.Coverage st.next)

Complexity: 8050 (size of the value term)

def Topology.runArrows' {Topo : Topology} [Fintype Topo.Block] {s s' : Set Topo.Block}
  (c : Topo.membership.Chain s s') :
  (F : CategoryTheory.ComposableArrows CategoryTheory.Cat c.length) ×'
    F.left = CategoryTheory.Cat.of (Topology.Coverage s)
Show details
| Topology.runArrows' (InformationSystem.Chain.nil x✝) =
  ⟨CategoryTheory.ComposableArrows.mk₀ (CategoryTheory.Cat.of (Topology.Coverage x✝)), ⋯⟩
| Topology.runArrows' (InformationSystem.Chain.cons st rest) =
  match Topology.runArrows' rest with
  | ⟨F, hF⟩ => ⟨F.precomp (⋯ ▸ (Topology.Step.coverageFunctor st).toCatHom), ⋯⟩

Complexity: 401 (size of the value term)

Lean core dependencies: Eq, Eq.symm, HEq, PSigma, eq_of_heq, rfl

def Topology.runArrows {Topo : Topology} [Fintype Topo.Block] {s s' : Set Topo.Block}
  (c : Topo.membership.Chain s s') : CategoryTheory.ComposableArrows CategoryTheory.Cat c.length
Show details
| Topology.runArrows c = (Topology.runArrows' c).fst

Complexity: 305 (size of the value term)

Inner dependencies: Topology.Coverage, Topology.runArrows'

Lean core dependencies: Eq

def Topology.runGrothendieck {Topo : Topology} [Fintype Topo.Block] (r : Topo.membership.Run) : Type
Show details
| Topology.runGrothendieck r = CategoryTheory.Grothendieck (Topology.runArrows r.toChain)

Complexity: 953 (size of the value term)

Mathlib dependencies: CategoryTheory.Grothendieck, Fintype, Set

Lean core dependencies: Fin, Nat

Used by: (none)

Dependency diagram

Drag to pan, Ctrl+scroll (or Cmd+scroll, or pinch on a touch screen) to zoom, click a node to jump to it.

definitionabbreviationlemmadeclared elsewheredependencyproof dependency
legend