Add computation lemmas on GGraphs + map to Graphs.lean
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -101,6 +101,37 @@ def singleton (a : α) : GGraph α where
|
|||||||
def wrap (g : GGraph (List β)) : GGraph (List β) :=
|
def wrap (g : GGraph (List β)) : GGraph (List β) :=
|
||||||
singleton [] ⤳ g ⤳ singleton []
|
singleton [] ⤳ g ⤳ singleton []
|
||||||
|
|
||||||
|
@[simp] theorem map_singleton (f : α → β) (a : α) :
|
||||||
|
(singleton a).map f = singleton (f a) := rfl
|
||||||
|
|
||||||
|
@[simp] theorem map_comp (f : α → β) (g₁ g₂ : GGraph α) :
|
||||||
|
(g₁ ∙ g₂).map f = g₁.map f ∙ g₂.map f := by
|
||||||
|
rcases g₁ with ⟨n₁, nd₁, e₁, i₁, o₁⟩; rcases g₂ with ⟨n₂, nd₂, e₂, i₂, o₂⟩
|
||||||
|
simp only [GGraph.map, GGraph.comp]
|
||||||
|
congr 1
|
||||||
|
funext i
|
||||||
|
refine Fin.addCases ?_ ?_ i <;> intro j <;> simp [Fin.append_left, Fin.append_right]
|
||||||
|
|
||||||
|
@[simp] theorem map_link (f : α → β) (g₁ g₂ : GGraph α) :
|
||||||
|
(g₁ ⤳ g₂).map f = g₁.map f ⤳ g₂.map f := by
|
||||||
|
rcases g₁ with ⟨n₁, nd₁, e₁, i₁, o₁⟩; rcases g₂ with ⟨n₂, nd₂, e₂, i₂, o₂⟩
|
||||||
|
simp only [GGraph.map, GGraph.link]
|
||||||
|
congr 1
|
||||||
|
funext i
|
||||||
|
refine Fin.addCases ?_ ?_ i <;> intro j <;> simp [Fin.append_left, Fin.append_right]
|
||||||
|
|
||||||
|
@[simp] theorem map_loop (h : β → γ) (g : GGraph (List β)) :
|
||||||
|
(loop g).map (List.map h) = loop (g.map (List.map h)) := by
|
||||||
|
rcases g with ⟨n, nd, e, i, o⟩
|
||||||
|
simp only [GGraph.map, GGraph.loop]
|
||||||
|
congr 1
|
||||||
|
funext i
|
||||||
|
refine Fin.addCases ?_ ?_ i <;> intro j <;> simp [Fin.append_left, Fin.append_right]
|
||||||
|
|
||||||
|
@[simp] theorem map_wrap (h : β → γ) (g : GGraph (List β)) :
|
||||||
|
(wrap g).map (List.map h) = wrap (g.map (List.map h)) := by
|
||||||
|
simp [GGraph.wrap, GGraph.map_link, GGraph.map_singleton]
|
||||||
|
|
||||||
variable (g : GGraph α)
|
variable (g : GGraph α)
|
||||||
|
|
||||||
def indices : List g.Index := List.finRange g.size
|
def indices : List g.Index := List.finRange g.size
|
||||||
|
|||||||
Reference in New Issue
Block a user