First-Order Structures in Graph Theory #
This file defines first-order languages, structures, and theories in graph theory.
Main Definitions #
FirstOrder.Language.graph
is the language consisting of a single relation representing adjacency.SimpleGraph.structure
is the first-order structure corresponding to a given simple graph.FirstOrder.Language.Theory.simpleGraph
is the theory of simple graphs.FirstOrder.Language.simpleGraphOfStructure
gives the simple graph corresponding to a model of the theory of simple graphs.
Simple Graphs #
The type of relations for the language of graphs, consisting of a single binary relation adj
.
- adj: FirstOrder.Language.graphRel 2
Instances For
instance
FirstOrder.Language.instDecidableEqGraphRel :
{a : ℕ} → DecidableEq (FirstOrder.Language.graphRel a)
Equations
- FirstOrder.Language.instDecidableEqGraphRel = FirstOrder.Language.decEqgraphRel✝
The language consisting of a single relation representing adjacency.
Equations
- FirstOrder.Language.graph = { Functions := fun (x : ℕ) => Empty, Relations := FirstOrder.Language.graphRel }
Instances For
@[reducible, inline]
The symbol representing the adjacency relation.
Instances For
Any simple graph can be thought of as a structure in the language of graphs.
Equations
- One or more equations did not get rendered due to their size.
Instances For
instance
FirstOrder.Language.graph.instSubsingleton
{n : ℕ}
:
Subsingleton (FirstOrder.Language.graph.Relations n)
Equations
- ⋯ = ⋯
The theory of simple graphs.
Equations
- FirstOrder.Language.Theory.simpleGraph = {FirstOrder.Language.adj.irreflexive, FirstOrder.Language.adj.symmetric}
Instances For
@[simp]
theorem
FirstOrder.Language.Theory.simpleGraph_model_iff
{V : Type u}
[FirstOrder.Language.graph.Structure V]
:
V ⊨ FirstOrder.Language.Theory.simpleGraph ↔ (Irreflexive fun (x y : V) => FirstOrder.Language.Structure.RelMap FirstOrder.Language.adj ![x, y]) ∧ Symmetric fun (x y : V) => FirstOrder.Language.Structure.RelMap FirstOrder.Language.adj ![x, y]
Equations
- ⋯ = ⋯
@[simp]
theorem
FirstOrder.Language.simpleGraphOfStructure_adj
(V : Type u)
[FirstOrder.Language.graph.Structure V]
[V ⊨ FirstOrder.Language.Theory.simpleGraph]
(x : V)
(y : V)
:
def
FirstOrder.Language.simpleGraphOfStructure
(V : Type u)
[FirstOrder.Language.graph.Structure V]
[V ⊨ FirstOrder.Language.Theory.simpleGraph]
:
Any model of the theory of simple graphs represents a simple graph.
Equations
- FirstOrder.Language.simpleGraphOfStructure V = { Adj := fun (x y : V) => FirstOrder.Language.Structure.RelMap FirstOrder.Language.adj ![x, y], symm := ⋯, loopless := ⋯ }
Instances For
@[simp]
@[simp]
theorem
FirstOrder.Language.structure_simpleGraphOfStructure
{V : Type u}
[S : FirstOrder.Language.graph.Structure V]
[V ⊨ FirstOrder.Language.Theory.simpleGraph]
:
(FirstOrder.Language.simpleGraphOfStructure V).structure = S
theorem
FirstOrder.Language.Theory.simpleGraph_isSatisfiable :
FirstOrder.Language.Theory.simpleGraph.IsSatisfiable