Biclique edge cover
AbbreviationBiclique edge cover instances#✓fully proved
An instance of BICLIQUE EDGE COVER is a tuple \((L, R, E, K)\) of natural numbers \(L\), \(R\) and \(K\) and a finite list \(E\) of pairs of natural numbers. Here \(L\) counts the left vertices, \(R\) counts the right vertices, each pair \((a, b)\) in \(E\) is an edge from left vertex \(a\) to right vertex \(b\), and \(K\) is the bound on the number of bicliques.
abbrev BicliqueEdgeCoverInstance := ℕ × ℕ × List (ℕ × ℕ) × ℕ
DefinitionWell-formed biclique edge cover instances#✓fully proved
An instance \((L, R, E, K)\) of BICLIQUE EDGE COVER is well formed when the list \(E\) has no repeated entries and every pair \((a, b)\) in \(E\) satisfies \(a < L\) and \(b < R\).
def WellFormed (i : BicliqueEdgeCoverInstance) : Prop :=
i.2.2.1.Nodup ∧ ∀ e ∈ i.2.2.1, e.1 < i.1 ∧ e.2 < i.2.1
abbrev BicliqueEdgeCoverInstance := ℕ × ℕ × List (ℕ × ℕ) × ℕ
WantedExt/Complexity/NPComplete/BicliqueEdgeCoverWanted.lean:46
Uses 1 · Used by 1
DefinitionFeasible biclique edge cover instances#✓fully proved
An instance \((L, R, E, K)\) of BICLIQUE EDGE COVER is feasible when there is a list of at most \(K\) pairs \((A, B)\) of finite lists of natural numbers, with every element of \(A\) less than \(L\) and every element of \(B\) less than \(R\), such that for every pair \((u, v)\) in \(E\) some listed pair \((A, B)\) has \(u \in A\), \(v \in B\) and \((a, b)\) in \(E\) for all \(a \in A\) and \(b \in B\).
def BicliqueEdgeCoverFeasible
(i : BicliqueEdgeCoverInstance) : Prop :=
∃ bicliques : List (List ℕ × List ℕ), bicliques.length ≤ i.2.2.2 ∧
(∀ p ∈ bicliques, (∀ a ∈ p.1, a < i.1) ∧ ∀ b ∈ p.2, b < i.2.1) ∧
∀ e ∈ i.2.2.1, ∃ p ∈ bicliques, e.1 ∈ p.1 ∧ e.2 ∈ p.2 ∧
∀ a ∈ p.1, ∀ b ∈ p.2, (a, b) ∈ i.2.2.1
abbrev BicliqueEdgeCoverInstance := ℕ × ℕ × List (ℕ × ℕ) × ℕ
WantedExt/Complexity/NPComplete/BicliqueEdgeCoverWanted.lean:46
Uses 1 · Used by 1
DefinitionThe biclique edge cover decision problem#✓fully proved
BICLIQUE EDGE COVER is the decision problem that accepts a bitstring \(x\) exactly when \(x\) decodes, under the canonical bitstring encoding of biclique edge cover instances, to an instance that is well formed and feasible; it rejects every bitstring that fails to decode.
noncomputable def bicliqueEdgeCoverDec :
MetaMathlibExt.ComplexityTheory.DecisionProblem := fun x =>
match MetaMathlibExt.BitstringEncoding.bitDecode
(α := BicliqueEdgeCoverInstance) x with
| some i => decide (WellFormed i ∧ BicliqueEdgeCoverFeasible i)
| none => false
abbrev DecisionProblem := List Bool → Bool
MathlibExt/Computability/Complexity.lean:170
def bitDecode [BitstringEncoding α] (l : List Bool) : Option α := toEncoding.decode l
MathlibExt/Computability/Complexity.lean:58
abbrev BicliqueEdgeCoverInstance := ℕ × ℕ × List (ℕ × ℕ) × ℕ
WantedExt/Complexity/NPComplete/BicliqueEdgeCoverWanted.lean:46
def WellFormed (i : BicliqueEdgeCoverInstance) : Prop :=
i.2.2.1.Nodup ∧ ∀ e ∈ i.2.2.1, e.1 < i.1 ∧ e.2 < i.2.1
WantedExt/Complexity/NPComplete/BicliqueEdgeCoverWanted.lean:49
def BicliqueEdgeCoverFeasible
(i : BicliqueEdgeCoverInstance) : Prop :=
∃ bicliques : List (List ℕ × List ℕ), bicliques.length ≤ i.2.2.2 ∧
(∀ p ∈ bicliques, (∀ a ∈ p.1, a < i.1) ∧ ∀ b ∈ p.2, b < i.2.1) ∧
∀ e ∈ i.2.2.1, ∃ p ∈ bicliques, e.1 ∈ p.1 ∧ e.2 ∈ p.2 ∧
∀ a ∈ p.1, ∀ b ∈ p.2, (a, b) ∈ i.2.2.1
WantedExt/Complexity/NPComplete/BicliqueEdgeCoverWanted.lean:53
Uses 12 · Used by 1
TheoremBICLIQUE EDGE COVER is NP-complete#●ready to prove
The biclique edge cover decision problem belongs to NP, and every decision problem in NP has a polynomial-time many-one reduction to it.
public theorem_wanted bicliqueEdgeCover_npComplete :
bicliqueEdgeCoverDec ∈ MetaMathlibExt.ComplexityTheory.NP ∧
∀ L : MetaMathlibExt.ComplexityTheory.DecisionProblem,
L ∈ MetaMathlibExt.ComplexityTheory.NP →
Cslib.CookLevin.PolyManyOneRed L bicliqueEdgeCoverDec
noncomputable def bicliqueEdgeCoverDec :
MetaMathlibExt.ComplexityTheory.DecisionProblem := fun x =>
match MetaMathlibExt.BitstringEncoding.bitDecode
(α := BicliqueEdgeCoverInstance) x with
| some i => decide (WellFormed i ∧ BicliqueEdgeCoverFeasible i)
| none => false
WantedExt/Complexity/NPComplete/BicliqueEdgeCoverWanted.lean:62
def NP : DecisionComplexityClass :=
{ L | ∃ (p : Polynomial ℕ), ∃ R : (List Bool × List Bool) → Bool,
IsPolyTime R ∧
∀ x, L x ↔ ∃ w : List Bool, w.length ≤ p.eval x.length ∧ R (x, w) }
MathlibExt/Computability/Complexity.lean:200
abbrev DecisionProblem := List Bool → Bool
MathlibExt/Computability/Complexity.lean:170
def PolyManyOneRed (L₁ L₂ : MetaMathlibExt.ComplexityTheory.DecisionProblem) : Prop :=
∃ reduce : List Bool → List Bool,
MetaMathlibExt.ComplexityTheory.IsPolyTime reduce ∧ ∀ x, L₁ x = L₂ (reduce x)
CSLibExt/Computability/CookLevin.lean:396
Sources
- M. R. Garey and D. S. Johnson, Computers and Intractability (1979), BICLIQUE COVER.
Uses 5
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.