First-Ordered Structures in Graph Theory #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4. This file defines first-order languages, structures, and theories in graph theory.
Main Definitions #
first_order.language.graph
is the language consisting of a single relation representing adjacency.simple_graph.Structure
is the first-order structure corresponding to a given simple graph.first_order.language.Theory.simple_graph
is the theory of simple graphs.first_order.language.simple_graph_of_structure
gives the simple graph corresponding to a model of the theory of simple graphs.
Simple Graphs #
@[protected]
The language consisting of a single relation representing adjacency.
Instances for first_order.language.graph
The symbol representing the adjacency relation.
Equations
Any simple graph can be thought of as a structure in the language of graphs.
Equations
- G.Structure = first_order.language.Structure.mk₂ empty.elim empty.elim empty.elim empty.elim (λ (_x : unit), G.adj)
@[protected, instance]
@[protected, instance]
@[protected]
The theory of simple graphs.
Equations
Instances for first_order.language.Theory.simple_graph
@[simp]
theorem
first_order.language.Theory.simple_graph_model_iff
{V : Type w'}
[first_order.language.graph.Structure V] :
V ⊨ first_order.language.Theory.simple_graph ↔ irreflexive (λ (x y : V), first_order.language.Structure.rel_map first_order.language.adj ![x, y]) ∧ symmetric (λ (x y : V), first_order.language.Structure.rel_map first_order.language.adj ![x, y])
@[protected, instance]
@[simp]
theorem
first_order.language.simple_graph_of_structure_adj
(V : Type w')
[first_order.language.graph.Structure V]
[V ⊨ first_order.language.Theory.simple_graph]
(x y : V) :
def
first_order.language.simple_graph_of_structure
(V : Type w')
[first_order.language.graph.Structure V]
[V ⊨ first_order.language.Theory.simple_graph] :
Any model of the theory of simple graphs represents a simple graph.
Equations
- first_order.language.simple_graph_of_structure V = {adj := λ (x y : V), first_order.language.Structure.rel_map first_order.language.adj ![x, y], symm := _, loopless := _}
@[simp]
@[simp]