Dominating Set
Lax799700.DominatingSet · concepts/Lax799700/DominatingSet.lean · lax-799700
No public endorsements yet.
Loading review…
Sign in with ORCIDNatural Language Statement
Theorem
DOMINATING SET: is there a set of vertices, at most as large as the marked set, such that every vertex is in it or adjacent to it? The vocabulary is that of marked graphs, the one Clique and Vertex Cover use. Domination ranges over every element of the universe, so a reduction into it cannot leave junk tuples behind: the first-order reduction from Set Cover makes the junk adjacent to the vertices that a solution always contains. Membership is by an existential second-order definition.
Concept map
Evidence
This concept declares 3 statements. Each proof establishes one of them relative to its assumptions.
1 dominatingSet_iff proven
2 dominatingSet_NP_complete proven
3 hasSmallDominatingSet_iso proven
Lean source view on GitHub
| 1 | import Mathlib.Data.Fintype.EquivFin |
| 2 | import Mathlib.Data.Set.Card |
| 3 | import Mathlib.SetTheory.Cardinal.Finite |
| 4 | import Mathlib.Logic.Equiv.Prod |
| 5 | import Mathlib.ModelTheory.Semantics |
| 6 | import Mathlib.ModelTheory.Complexity |
| 7 | import Mathlib.Tactic.FinCases |
| 8 | import Mathlib.ModelTheory.Syntax |
| 9 | import Lax799700.CliqueFamily |
| 10 | import Lax904597.Classes |
| 11 | import Lax799700.Problems |
| 12 | |
| 13 | /-! |
| 14 | --- |
| 15 | title: Dominating Set |
| 16 | type: theorem |
| 17 | --- |
| 18 | DOMINATING SET: is there a set of vertices, at most as large as the |
| 19 | marked set, such that every vertex is in it or adjacent to it? The |
| 20 | vocabulary is that of marked graphs, the one Clique and Vertex Cover use. |
| 21 | Domination ranges over every element of the universe, so a reduction |
| 22 | into it cannot leave junk tuples behind: the first-order reduction from |
| 23 | Set Cover makes the junk adjacent to the vertices that a solution always |
| 24 | contains. Membership is by an existential second-order definition. |
| 25 | |
| 26 | -/ |
| 27 | |
| 28 | namespace Lax799700.DominatingSet |
| 29 | |
| 30 | open Lax799700.CliqueFamily |
| 31 | |
| 32 | open FirstOrder |
| 33 | |
| 34 | open Language Structure |
| 35 | |
| 36 | section Generic |
| 37 | |
| 38 | variable {A : Type} |
| 39 | |
| 40 | /-- Some set of vertices dominating the whole graph – every vertex belongs to |
| 41 | it or has a neighbor in it – is at most as large as the number encoded by the |
| 42 | `Kp`-marked elements. -/ |
| 43 | def DominatesOn (Adjp : A → A → Prop) (Kp : A → Prop) : Prop := |
| 44 | ∃ D : A → Prop, (∀ v, D v ∨ ∃ u, D u ∧ Adjp u v) ∧ |
| 45 | {v | D v}.ncard ≤ {v | Kp v}.ncard |
| 46 | |
| 47 | end Generic |
| 48 | |
| 49 | section Problem |
| 50 | |
| 51 | variable (A : Type) [markedGraph.Structure A] |
| 52 | |
| 53 | /-- A marked graph has a dominating set at most as large as its marked set. |
| 54 | (Finiteness of the universe is part of the property: cardinality thresholds |
| 55 | are only meaningful on finite structures.) -/ |
| 56 | def HasSmallDominatingSet : Prop := |
| 57 | Finite A ∧ DominatesOn (MGAdj (A := A)) (MGMarked (A := A)) |
| 58 | |
| 59 | end Problem |
| 60 | |
| 61 | open Lax904597.Problems Lax904597.Classes Lax799700.Problems |
| 62 | |
| 63 | /-- The property `HasSmallDominatingSet` is isomorphism-invariant. -/ |
| 64 | axiom hasSmallDominatingSet_iso : ∀ {A B : Type} [Lax799700.CliqueFamily.markedGraph.Structure A] [Lax799700.CliqueFamily.markedGraph.Structure B], |
| 65 | (A ≃[Lax799700.CliqueFamily.markedGraph] B) → (HasSmallDominatingSet A ↔ HasSmallDominatingSet B) |
| 66 | |
| 67 | /-- The problem DominatingSet: does the structure satisfy `HasSmallDominatingSet`? -/ |
| 68 | def DominatingSet : DecisionProblem Lax799700.CliqueFamily.markedGraph := |
| 69 | DecisionProblem.ofPred HasSmallDominatingSet |
| 70 | |
| 71 | /-- The yes-instances of DominatingSet are exactly the structures satisfying |
| 72 | `HasSmallDominatingSet`. -/ |
| 73 | axiom dominatingSet_iff : ∀ (A : Type) [Lax799700.CliqueFamily.markedGraph.Structure A], DominatingSet A ↔ HasSmallDominatingSet A |
| 74 | |
| 75 | /-- DominatingSet is NP-complete. -/ |
| 76 | axiom dominatingSet_NP_complete : NP.Complete DominatingSet |
| 77 | |
| 78 | end Lax799700.DominatingSet |
| 79 |
Used by
none
Discussion
Ask a question or add context. Endorsements and structured flags are kept in the review panel above.
0 comments