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 language consisting of a single relation representing adjacency.
Instances For
The symbol representing the adjacency relation.
Equations
Instances For
Any simple graph can be thought of as a structure in the language of graphs.
Equations
- G.structure = FirstOrder.Language.Structure.mk₂ Empty.elim Empty.elim Empty.elim Empty.elim fun (x : Unit) => G.Adj
Instances For
Equations
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 w'}
[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 w')
[FirstOrder.Language.graph.Structure V]
[V ⊨ FirstOrder.Language.Theory.simpleGraph]
(x : V)
(y : V)
:
def
FirstOrder.Language.simpleGraphOfStructure
(V : Type w')
[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 w'}
[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