Skip to content

[Rule] Satisfiability to MultivariateQuadratic #131

@QingyunQian

Description

@QingyunQian

Source: Satisfiability
Target: MultivariateQuadratic (over F₂)
Motivation: SAT can be reduced to MQ over F₂ in polynomial time. This reduction enables solving SAT instances using algebraic formulations and complements the reverse direction (MQ over F₂ to SAT).
Reference:

Reduction Algorithm

Notation:

  • Source: SAT instance with n boolean variables x₁, ..., xₙ and m clauses
  • Preprocessing: first convert SAT to 3-SAT (standard polynomial-time step), obtaining n' variables and m' clauses
  • Target: MQ instance over F₂ with n' + m' variables and 2m' quadratic equations (one auxiliary variable per clause)

Variable mapping:

  • Each 3-SAT variable xᵢ ∈ {0, 1} maps directly to MQ variable xᵢ ∈ F₂
  • For each 3-SAT clause Cⱼ = (ℓ₁ ∨ ℓ₂ ∨ ℓ₃), introduce one auxiliary variable tⱼ ∈ F₂

Constraint transformation:
For each 3-SAT clause Cⱼ = (ℓ₁ ∨ ℓ₂ ∨ ℓ₃):

  1. Define

    • α = 1 + ℓ₁
    • β = 1 + ℓ₂
    • γ = 1 + ℓ₃
      so clause satisfaction is equivalent to α·β·γ = 0 in F₂.
  2. Quadratize with one auxiliary variable tⱼ:

    • tⱼ + α·β = 0
    • tⱼ·γ = 0

Both equations are quadratic (degree ≤ 2), so they fit MultivariateQuadratic.

Solution extraction:
Read the original variables x₁, ..., xₙ from any satisfying MQ assignment; auxiliary variables tⱼ are internal and can be ignored.

Size Overhead

Target metric (code name) Polynomial (using symbols above)
field_size 2 (constant, F₂)
num_variables n' + m'
num_equations 2m'

Validation Method

  • Cross-check with SAT solvers on standard benchmarks (SATLIB, SAT Competition instances)
  • Verify on small hand-crafted instances (3-4 variables, 5-6 clauses)
  • Compare with existing SAT-to-polynomial converters (PolyBoRi, ANF tools)
  • Test on unsatisfiable instances to ensure NO is correctly detected

Example

Source SAT instance (already 3-SAT):

Variables: x₁, x₂, x₃
Clauses:
  C₁: (x₁ ∨ ¬x₂ ∨ x₃)
  C₂: (¬x₁ ∨ x₂ ∨ x₃)

Target MQ instance (F₂):

Field: F₂ = {0, 1}
Variables: x₁, x₂, x₃, t₁, t₂
Equations:
  # Clause C₁: (x₁ ∨ ¬x₂ ∨ x₃)
  f₁: t₁ + (1 + x₁)·x₂ = 0
  f₂: t₁·(1 + x₃) = 0

  # Clause C₂: (¬x₁ ∨ x₂ ∨ x₃)
  f₃: t₂ + x₁·(1 + x₂) = 0
  f₄: t₂·(1 + x₃) = 0

Solution:

  • SAT solution: x₁=1, x₂=1, x₃=1 (satisfies all clauses)
  • MQ extension: choose t₁=0, t₂=0
  • Verification:
    • f₁: 0 + (1+1)·1 = 0
    • f₂: 0·(1+1) = 0
    • f₃: 0 + 1·(1+1) = 0
    • f₄: 0·(1+1) = 0

Overhead verification:

  • Source (3-SAT): n'=3 variables, m'=2 clauses
  • Target: num_variables = n' + m' = 3 + 2 = 5, num_equations = 2m' = 4

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions