From 803966e34fca9ef503b0b2db8341c397d62599ad Mon Sep 17 00:00:00 2001
From: GiggleLiu <cacate0129@gmail.com>
Date: Wed, 18 Mar 2026 02:44:29 +0800
Subject: [PATCH 1/7] Add plan for #186: MinimumMultiwayCut to QUBO reduction

---
 .../2026-03-18-minimummultiwaycut-to-qubo.md  | 89 +++++++++++++++++++
 1 file changed, 89 insertions(+)
 create mode 100644 docs/plans/2026-03-18-minimummultiwaycut-to-qubo.md

diff --git a/docs/plans/2026-03-18-minimummultiwaycut-to-qubo.md b/docs/plans/2026-03-18-minimummultiwaycut-to-qubo.md
new file mode 100644
index 000000000..7ae3d867a
--- /dev/null
+++ b/docs/plans/2026-03-18-minimummultiwaycut-to-qubo.md
@@ -0,0 +1,89 @@
+# Plan: MinimumMultiwayCut to QUBO Reduction (#186)
+
+## Summary
+
+Implement the reduction from MinimumMultiwayCut to QUBO based on Heidari, Dinneen & Delmas (2022). The reduction uses kn binary variables where k = |terminals| and n = |vertices|, encoding vertex-to-terminal assignments via a penalty Hamiltonian H_A (enforces valid partition + terminal pinning) and a cut-cost Hamiltonian H_B.
+
+## Batch 1: Implementation (Steps 1-4)
+
+All tasks in this batch are independent and can be parallelized.
+
+### Task 1.1: Implement reduction rule
+
+**File:** `src/rules/minimummultiwaycut_qubo.rs`
+
+**Reduction algorithm:**
+- Variable mapping: kn binary variables x_{u,t} indexed as `u * k + pos(t)` where pos(t) is the position of terminal t in the terminals list
+- alpha = penalty coefficient > sum of all edge weights (use sum + 1.0)
+
+**Q-matrix construction (expanding H = H_A + H_B):**
+
+H_A = alpha * (sum_u (1 - sum_t x_{u,t})^2 + sum_t sum_{t'!=t} x_{t,t'})
+
+Expanding (1 - sum_t x_{u,t})^2 with x^2=x for binary:
+= 1 - sum_t x_{u,t} + 2 * sum_{s<t} x_{u,s} * x_{u,t}
+
+So H_A contributes:
+1. **Diagonal** (one-hot penalty): Q[u*k+s, u*k+s] -= alpha, for all u, s
+2. **Off-diagonal** (one-hot cross): Q[u*k+s, u*k+t] += 2*alpha, for all u, s < t
+3. **Diagonal** (terminal pinning): Q[t_idx*k+s, t_idx*k+s] += alpha, for each terminal t_idx and each terminal position s != pos(t_idx)
+
+H_B = sum_{(u,v) in E} sum_s sum_{t!=s} C({u,v}) * x_{u,s} * x_{v,t}
+
+H_B contributes:
+4. **Off-diagonal** (cut cost): Q[min(u*k+s, v*k+t), max(u*k+s, v*k+t)] += C({u,v}), for each edge (u,v) and distinct terminal positions s != t
+
+**ReductionResult struct:** stores target QUBO, source graph reference data (num_vertices, num_edges, terminal list, edges list) for solution extraction.
+
+**Solution extraction:** From QUBO solution (vertex assignments), derive edge cut: for each edge (u,v), if assigned to different terminals, mark as cut (1), else keep (0).
+
+**Overhead:** `num_vars = "num_terminals * num_vertices"`
+
+**Reference patterns:** `src/rules/coloring_qubo.rs` (one-hot encoding + penalty QUBO)
+
+### Task 1.2: Register in mod.rs
+
+**File:** `src/rules/mod.rs`
+- Add `pub(crate) mod minimummultiwaycut_qubo;` (alphabetical order, after `minimumvertexcover_minimumsetcovering`)
+- Add `specs.extend(minimummultiwaycut_qubo::canonical_rule_example_specs());` in `canonical_rule_example_specs()`
+
+### Task 1.3: Write unit tests
+
+**File:** `src/unit_tests/rules/minimummultiwaycut_qubo.rs`
+
+Tests:
+1. `test_minimummultiwaycut_to_qubo_closed_loop` — Use the issue example (5 vertices, 3 terminals {0,2,4}, 6 weighted edges). Reduce, solve QUBO with BruteForce, extract solutions, verify each extracted solution has source cost = 8 (optimal).
+2. `test_minimummultiwaycut_to_qubo_small` — Triangle graph, 2 terminals. Verify correct QUBO size and valid extraction.
+3. `test_minimummultiwaycut_to_qubo_sizes` — Verify QUBO has k*n variables.
+4. `test_minimummultiwaycut_to_qubo_terminal_pinning` — Verify terminals are correctly pinned (each terminal assigned to its own component in all optimal solutions).
+
+### Task 1.4: Add canonical example to example_db
+
+**File:** `src/rules/minimummultiwaycut_qubo.rs` (add `canonical_rule_example_specs` function)
+
+Use the issue example: 5 vertices, terminals {0,2,4}, edges with weights [2,3,1,2,4,5]. Use `direct_best_example` with `|_, _| true` keep function (since MinimumMultiwayCut is an optimization problem).
+
+## Batch 2: Paper Documentation (Step 5)
+
+Depends on Batch 1 completion (needs exports).
+
+### Task 2.1: Write paper entry + regenerate exports
+
+**File:** `docs/paper/reductions.typ`
+
+1. Run `cargo run --example export_graph` and `cargo run --example export_schemas`
+2. Add `reduction-rule("MinimumMultiwayCut", "QUBO", ...)` entry with:
+   - Rule statement: O(kn) reduction, kn binary variables encoding vertex-to-terminal assignments
+   - Proof: Construction (H_A + H_B), Correctness (bidirectional), Solution extraction
+   - Worked example from JSON fixture data
+3. Run `make paper` to verify compilation
+
+## Verification
+
+After all batches:
+```bash
+make test clippy
+cargo run --example export_graph
+cargo run --example export_schemas
+make paper
+```

From 4c36c4711de4ad0e65fae81e8b478975a60a39be Mon Sep 17 00:00:00 2001
From: GiggleLiu <cacate0129@gmail.com>
Date: Wed, 18 Mar 2026 02:52:51 +0800
Subject: [PATCH 2/7] Add MinimumMultiwayCut to QUBO reduction rule

Implement the reduction from MinimumMultiwayCut<SimpleGraph, i32> to QUBO<f64>
using the one-hot vertex-terminal assignment encoding (Heidari, Dinneen & Delmas
2022). The QUBO Hamiltonian uses penalty terms for one-hot constraints and terminal
pinning (H_A) plus cut cost encoding (H_B). Includes 4 unit tests covering
closed-loop correctness, a small instance, size verification, and terminal pinning.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---
 src/rules/minimummultiwaycut_qubo.rs          | 156 ++++++++++++++++++
 src/rules/mod.rs                              |   2 +
 .../rules/minimummultiwaycut_qubo.rs          | 100 +++++++++++
 3 files changed, 258 insertions(+)
 create mode 100644 src/rules/minimummultiwaycut_qubo.rs
 create mode 100644 src/unit_tests/rules/minimummultiwaycut_qubo.rs

diff --git a/src/rules/minimummultiwaycut_qubo.rs b/src/rules/minimummultiwaycut_qubo.rs
new file mode 100644
index 000000000..4806a5fb0
--- /dev/null
+++ b/src/rules/minimummultiwaycut_qubo.rs
@@ -0,0 +1,156 @@
+//! Reduction from MinimumMultiwayCut to QUBO.
+//!
+//! Variable mapping: k*n binary variables x_{u,t} for each vertex u and
+//! terminal position t. x_{u,t} = 1 means vertex u is assigned to terminal t's
+//! component. Variable index: u * k + t.
+//!
+//! QUBO Hamiltonian: H = H_A + H_B
+//!
+//! H_A enforces valid partition (one-hot per vertex) and terminal pinning.
+//! H_B encodes the cut cost objective.
+//!
+//! Reference: Heidari, Dinneen & Delmas (2022).
+
+use crate::models::algebraic::QUBO;
+use crate::models::graph::MinimumMultiwayCut;
+use crate::reduction;
+use crate::rules::traits::{ReduceTo, ReductionResult};
+use crate::topology::{Graph, SimpleGraph};
+
+/// Result of reducing MinimumMultiwayCut to QUBO.
+#[derive(Debug, Clone)]
+pub struct ReductionMinimumMultiwayCutToQUBO {
+    target: QUBO<f64>,
+    num_vertices: usize,
+    num_terminals: usize,
+    edges: Vec<(usize, usize)>,
+}
+
+impl ReductionResult for ReductionMinimumMultiwayCutToQUBO {
+    type Source = MinimumMultiwayCut<SimpleGraph, i32>;
+    type Target = QUBO<f64>;
+
+    fn target_problem(&self) -> &Self::Target {
+        &self.target
+    }
+
+    /// Decode one-hot assignment: for each vertex find its terminal, then
+    /// for each edge check if endpoints are in different terminals.
+    fn extract_solution(&self, target_solution: &[usize]) -> Vec<usize> {
+        let k = self.num_terminals;
+        let n = self.num_vertices;
+
+        // For each vertex, find which terminal position it is assigned to
+        let assignments: Vec<usize> = (0..n)
+            .map(|u| {
+                (0..k)
+                    .find(|&t| target_solution[u * k + t] == 1)
+                    .unwrap_or(0)
+            })
+            .collect();
+
+        // For each edge, output 1 (cut) if endpoints differ, 0 (keep) otherwise
+        self.edges
+            .iter()
+            .map(|&(u, v)| {
+                if assignments[u] != assignments[v] {
+                    1
+                } else {
+                    0
+                }
+            })
+            .collect()
+    }
+}
+
+#[reduction(overhead = { num_vars = "num_terminals * num_vertices" })]
+impl ReduceTo<QUBO<f64>> for MinimumMultiwayCut<SimpleGraph, i32> {
+    type Result = ReductionMinimumMultiwayCutToQUBO;
+
+    fn reduce_to(&self) -> Self::Result {
+        let n = self.num_vertices();
+        let k = self.num_terminals();
+        let edges = self.graph().edges();
+        let edge_weights = self.edge_weights();
+        let terminals = self.terminals();
+        let nq = n * k;
+
+        // Penalty: sum of all edge weights + 1
+        let alpha: f64 = edge_weights.iter().map(|&w| (w as f64).abs()).sum::<f64>() + 1.0;
+
+        let mut matrix = vec![vec![0.0f64; nq]; nq];
+
+        // Helper: add value to upper-triangular position
+        let mut add_upper = |i: usize, j: usize, val: f64| {
+            let (lo, hi) = if i <= j { (i, j) } else { (j, i) };
+            matrix[lo][hi] += val;
+        };
+
+        // H_A: one-hot constraint per vertex
+        // (1 - sum_t x_{u,t})^2 = 1 - sum_t x_{u,t} + 2 * sum_{s<t} x_{u,s} * x_{u,t}
+        // (using x^2 = x for binary variables)
+        for u in 0..n {
+            // Diagonal: -alpha for each terminal position
+            for s in 0..k {
+                add_upper(u * k + s, u * k + s, -alpha);
+            }
+            // Off-diagonal within same vertex: +2*alpha for each pair
+            for s in 0..k {
+                for t in (s + 1)..k {
+                    add_upper(u * k + s, u * k + t, 2.0 * alpha);
+                }
+            }
+        }
+
+        // H_A: terminal pinning
+        // For each terminal vertex, penalize assignment to wrong position
+        for (t_pos, &t_vertex) in terminals.iter().enumerate() {
+            for s in 0..k {
+                if s != t_pos {
+                    add_upper(t_vertex * k + s, t_vertex * k + s, alpha);
+                }
+            }
+        }
+
+        // H_B: cut cost
+        // For each edge (u,v) with weight w, for each pair of distinct
+        // terminal positions s != t: add w to Q[u*k+s, v*k+t]
+        for (edge_idx, &(u, v)) in edges.iter().enumerate() {
+            let w = edge_weights[edge_idx] as f64;
+            for s in 0..k {
+                for t in 0..k {
+                    if s != t {
+                        add_upper(u * k + s, v * k + t, w);
+                    }
+                }
+            }
+        }
+
+        ReductionMinimumMultiwayCutToQUBO {
+            target: QUBO::from_matrix(matrix),
+            num_vertices: n,
+            num_terminals: k,
+            edges,
+        }
+    }
+}
+
+#[cfg(feature = "example-db")]
+pub(crate) fn canonical_rule_example_specs() -> Vec<crate::example_db::specs::RuleExampleSpec> {
+    vec![crate::example_db::specs::RuleExampleSpec {
+        id: "minimummultiwaycut_to_qubo",
+        build: || {
+            use crate::models::algebraic::QUBO;
+            use crate::models::graph::MinimumMultiwayCut;
+            use crate::topology::SimpleGraph;
+            let graph =
+                SimpleGraph::new(5, vec![(0, 1), (1, 2), (2, 3), (3, 4), (0, 4), (1, 3)]);
+            let source = MinimumMultiwayCut::new(graph, vec![0, 2, 4], vec![2, 3, 1, 2, 4, 5]);
+            crate::example_db::specs::direct_best_example::<_, QUBO<f64>, _>(source, |_, _| true)
+        },
+    }]
+}
+
+#[cfg(test)]
+#[path = "../unit_tests/rules/minimummultiwaycut_qubo.rs"]
+mod tests;
diff --git a/src/rules/mod.rs b/src/rules/mod.rs
index 7a2feab15..2a0c6d259 100644
--- a/src/rules/mod.rs
+++ b/src/rules/mod.rs
@@ -25,6 +25,7 @@ pub(crate) mod maximummatching_maximumsetpacking;
 mod maximumsetpacking_casts;
 pub(crate) mod maximumsetpacking_qubo;
 pub(crate) mod minimumvertexcover_maximumindependentset;
+pub(crate) mod minimummultiwaycut_qubo;
 pub(crate) mod minimumvertexcover_minimumsetcovering;
 pub(crate) mod sat_circuitsat;
 pub(crate) mod sat_coloring;
@@ -93,6 +94,7 @@ pub(crate) fn canonical_rule_example_specs() -> Vec<crate::example_db::specs::Ru
     specs.extend(maximummatching_maximumsetpacking::canonical_rule_example_specs());
     specs.extend(maximumsetpacking_qubo::canonical_rule_example_specs());
     specs.extend(minimumvertexcover_maximumindependentset::canonical_rule_example_specs());
+    specs.extend(minimummultiwaycut_qubo::canonical_rule_example_specs());
     specs.extend(minimumvertexcover_minimumsetcovering::canonical_rule_example_specs());
     specs.extend(sat_circuitsat::canonical_rule_example_specs());
     specs.extend(sat_coloring::canonical_rule_example_specs());
diff --git a/src/unit_tests/rules/minimummultiwaycut_qubo.rs b/src/unit_tests/rules/minimummultiwaycut_qubo.rs
new file mode 100644
index 000000000..5453b9fad
--- /dev/null
+++ b/src/unit_tests/rules/minimummultiwaycut_qubo.rs
@@ -0,0 +1,100 @@
+use super::*;
+use crate::solvers::BruteForce;
+use crate::traits::Problem;
+use crate::types::SolutionSize;
+
+#[test]
+fn test_minimummultiwaycut_to_qubo_closed_loop() {
+    // 5 vertices, terminals {0,2,4}, 6 edges with weights [2,3,1,2,4,5]
+    let graph = SimpleGraph::new(5, vec![(0, 1), (1, 2), (2, 3), (3, 4), (0, 4), (1, 3)]);
+    let source = MinimumMultiwayCut::new(graph, vec![0, 2, 4], vec![2, 3, 1, 2, 4, 5]);
+
+    let reduction = ReduceTo::<QUBO<f64>>::reduce_to(&source);
+    let qubo = reduction.target_problem();
+
+    let solver = BruteForce::new();
+    let qubo_solutions = solver.find_all_best(qubo);
+
+    assert!(!qubo_solutions.is_empty(), "QUBO solver found no solutions");
+
+    // All QUBO optimal solutions should extract to valid source solutions with cost 8
+    for sol in &qubo_solutions {
+        let extracted = reduction.extract_solution(sol);
+        let metric = source.evaluate(&extracted);
+        assert_eq!(metric, SolutionSize::Valid(8));
+    }
+}
+
+#[test]
+fn test_minimummultiwaycut_to_qubo_small() {
+    // 3 vertices, 2 terminals {0,2}, edges [(0,1),(1,2)] with weights [1,1]
+    let graph = SimpleGraph::new(3, vec![(0, 1), (1, 2)]);
+    let source = MinimumMultiwayCut::new(graph, vec![0, 2], vec![1, 1]);
+
+    let reduction = ReduceTo::<QUBO<f64>>::reduce_to(&source);
+    let qubo = reduction.target_problem();
+
+    let solver = BruteForce::new();
+    let qubo_solutions = solver.find_all_best(qubo);
+
+    assert!(!qubo_solutions.is_empty(), "QUBO solver found no solutions");
+
+    // All solutions should extract to valid cuts
+    for sol in &qubo_solutions {
+        let extracted = reduction.extract_solution(sol);
+        let metric = source.evaluate(&extracted);
+        // With 2 terminals and path 0-1-2, minimum cut is 1 (cut either edge)
+        assert_eq!(metric, SolutionSize::Valid(1));
+    }
+}
+
+#[test]
+fn test_minimummultiwaycut_to_qubo_sizes() {
+    // 5 vertices, 3 terminals => QUBO has k*n = 3*5 = 15 variables
+    let graph = SimpleGraph::new(5, vec![(0, 1), (1, 2), (2, 3), (3, 4), (0, 4), (1, 3)]);
+    let source = MinimumMultiwayCut::new(graph, vec![0, 2, 4], vec![2, 3, 1, 2, 4, 5]);
+
+    let reduction = ReduceTo::<QUBO<f64>>::reduce_to(&source);
+    assert_eq!(reduction.target_problem().num_variables(), 15);
+}
+
+#[test]
+fn test_minimummultiwaycut_to_qubo_terminal_pinning() {
+    // Verify that in all QUBO optimal solutions, each terminal vertex is
+    // assigned to its own terminal position.
+    let graph = SimpleGraph::new(5, vec![(0, 1), (1, 2), (2, 3), (3, 4), (0, 4), (1, 3)]);
+    let terminals = vec![0, 2, 4];
+    let source = MinimumMultiwayCut::new(graph, terminals.clone(), vec![2, 3, 1, 2, 4, 5]);
+
+    let reduction = ReduceTo::<QUBO<f64>>::reduce_to(&source);
+    let qubo = reduction.target_problem();
+
+    let solver = BruteForce::new();
+    let qubo_solutions = solver.find_all_best(qubo);
+
+    let k = terminals.len();
+    for sol in &qubo_solutions {
+        for (t_pos, &t_vertex) in terminals.iter().enumerate() {
+            // Terminal vertex should be assigned to its own position
+            assert_eq!(
+                sol[t_vertex * k + t_pos],
+                1,
+                "Terminal {} at position {} should be 1",
+                t_vertex,
+                t_pos
+            );
+            // And not assigned to any other position
+            for s in 0..k {
+                if s != t_pos {
+                    assert_eq!(
+                        sol[t_vertex * k + s],
+                        0,
+                        "Terminal {} at position {} should be 0",
+                        t_vertex,
+                        s
+                    );
+                }
+            }
+        }
+    }
+}

From 8fd844b5fdaf3500dffe53e31bb36df8f78e175a Mon Sep 17 00:00:00 2001
From: GiggleLiu <cacate0129@gmail.com>
Date: Wed, 18 Mar 2026 03:03:39 +0800
Subject: [PATCH 3/7] Implement MinimumMultiwayCut -> QUBO reduction (#186)

Add reduction rule from MinimumMultiwayCut to QUBO using the
Heidari, Dinneen & Delmas (2022) penalty Hamiltonian formulation
with kn binary variables encoding vertex-to-terminal assignments.

- Reduction rule with one-hot + terminal pinning penalties (H_A)
  and cut-cost objective (H_B)
- 4 unit tests including closed-loop verification
- Canonical example in example_db
- Paper entry with worked example in reductions.typ
- Regenerated exports (reduction_graph.json, problem_schemas.json, fixtures)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---
 docs/paper/reductions.typ                |  48 ++++
 docs/paper/references.bib                |   8 +
 docs/src/reductions/problem_schemas.json |  31 +++
 docs/src/reductions/reduction_graph.json | 279 ++++++++++++++---------
 src/example_db/fixtures/examples.json    |   1 +
 5 files changed, 254 insertions(+), 113 deletions(-)

diff --git a/docs/paper/reductions.typ b/docs/paper/reductions.typ
index 399057804..fb260effe 100644
--- a/docs/paper/reductions.typ
+++ b/docs/paper/reductions.typ
@@ -2926,6 +2926,54 @@ where $P$ is a penalty weight large enough that any constraint violation costs m
   _Solution extraction._ Discard slack variables: return $bold(z)[0..n]$.
 ]
 
+#let mwc_qubo = load-example("MinimumMultiwayCut", "QUBO")
+#let mwc_qubo_sol = mwc_qubo.solutions.at(0)
+#let mwc_qubo_edges = mwc_qubo.source.instance.graph.inner.edges.map(e => (e.at(0), e.at(1)))
+#let mwc_qubo_weights = mwc_qubo.source.instance.edge_weights
+#let mwc_qubo_terminals = mwc_qubo.source.instance.terminals
+#let mwc_qubo_n = mwc_qubo.source.instance.graph.inner.nodes.len()
+#let mwc_qubo_k = mwc_qubo_terminals.len()
+#let mwc_qubo_nq = mwc_qubo_n * mwc_qubo_k
+#let mwc_qubo_alpha = mwc_qubo_weights.fold(0, (a, w) => a + w) + 1
+#let mwc_qubo_cut_indices = mwc_qubo_sol.source_config.enumerate().filter(((i, v)) => v == 1).map(((i, _)) => i)
+#let mwc_qubo_cut_cost = mwc_qubo_cut_indices.fold(0, (a, i) => a + mwc_qubo_weights.at(i))
+#reduction-rule("MinimumMultiwayCut", "QUBO",
+  example: true,
+  example-caption: [$n = #mwc_qubo_n$ vertices, $k = #mwc_qubo_k$ terminals $T = {#mwc_qubo_terminals.map(str).join(", ")}$, $|E| = #mwc_qubo_edges.len()$ edges],
+  extra: [
+    *Step 1 -- Source instance.* The canonical graph has $n = #mwc_qubo_n$ vertices, $m = #mwc_qubo_edges.len()$ edges with weights $(#mwc_qubo_weights.map(str).join(", "))$, and $k = #mwc_qubo_k$ terminals $T = {#mwc_qubo_terminals.map(str).join(", ")}$.
+
+    *Step 2 -- Introduce binary variables.* Assign $k = #mwc_qubo_k$ indicator variables per vertex: $x_(u,t) = 1$ means vertex $u$ belongs to terminal $t$'s component. This gives $n k = #mwc_qubo_n times #mwc_qubo_k = #mwc_qubo_nq$ QUBO variables:
+    $ underbrace(x_(0,0) x_(0,1) x_(0,2), "vertex 0") #h(4pt) underbrace(x_(1,0) x_(1,1) x_(1,2), "vertex 1") #h(4pt) dots.c #h(4pt) underbrace(x_(4,0) x_(4,1) x_(4,2), "vertex 4") $
+
+    *Step 3 -- Penalty coefficient.* $alpha = 1 + sum_(e in E) w(e) = 1 + #mwc_qubo_weights.map(str).join(" + ") = #mwc_qubo_alpha$.
+
+    *Step 4 -- Build $H_A$ (constraints).* One-hot: diagonal entries $Q_(u k+t, u k+t) = -#mwc_qubo_alpha$, off-diagonal $Q_(u k+s, u k+t) = #(2 * mwc_qubo_alpha)$ within each vertex's group. Terminal pinning: for each terminal vertex $t_i$, the wrong-position diagonal entries $Q_(t_i k+s, t_i k+s) += #mwc_qubo_alpha$ for $s != i$, effectively canceling the one-hot incentive for those positions.\
+
+    *Step 5 -- Build $H_B$ (cut cost).* For each edge $(u,v)$ with weight $w$ and each pair $s != t$, add $w$ to $Q_(u k+s, v k+t)$. For example, edge $(0,1)$ with weight $2$ contributes $2$ to positions $(x_(0,0), x_(1,1))$, $(x_(0,0), x_(1,2))$, $(x_(0,1), x_(1,0))$, $(x_(0,1), x_(1,2))$, $(x_(0,2), x_(1,0))$, and $(x_(0,2), x_(1,1))$.\
+
+    *Step 6 -- Verify a solution.* The QUBO ground state $bold(x) = (#mwc_qubo_sol.target_config.map(str).join(", "))$ decodes to the partition: vertex 0 in component 0, vertices 1--3 in component 1, vertex 4 in component 2. Cut edges: $\{#mwc_qubo_cut_indices.map(i => "(" + str(mwc_qubo_edges.at(i).at(0)) + "," + str(mwc_qubo_edges.at(i).at(1)) + ")").join(", ")\}$ with total weight #mwc_qubo_cut_indices.map(i => str(mwc_qubo_weights.at(i))).join(" + ") $= #mwc_qubo_cut_cost$ #sym.checkmark.
+  ],
+)[
+  The multiway cut problem requires a partition of vertices into $k$ components — one per terminal — minimizing the total weight of edges crossing components. The penalty method (@sec:penalty-method) encodes two constraints as QUBO penalties: (1) each vertex belongs to exactly one component (one-hot), and (2) each terminal is pinned to its own component. The cut-cost Hamiltonian counts edge weight across distinct components. Reference: @Heidari2022.
+][
+  _Construction._ Given $G = (V, E)$ with $n = |V|$, edge weights $w: E -> RR_(>0)$, and $k$ terminals $T = {t_0, ..., t_(k-1)}$. Introduce $n k$ binary variables $x_(u,t) in {0,1}$ (indexed by $u dot k + t$), where $x_(u,t) = 1$ means vertex $u$ is in terminal $t$'s component. Let $alpha = 1 + sum_(e in E) w(e)$.
+
+  The QUBO Hamiltonian is $H = H_A + H_B$ where:
+  $ H_A = alpha (sum_(u in V) (1 - sum_(t=0)^(k-1) x_(u,t))^2 + sum_(i=0)^(k-1) sum_(s != i) x_(t_i, s)) $
+  The first term is a _one-hot constraint_ ensuring each vertex is assigned to exactly one component. The second term _pins_ each terminal $t_i$ to position $i$ by penalizing any other assignment. Expanding the one-hot term using $x^2 = x$:
+  $ Q_(u k+t, u k+t) = -alpha, quad Q_(u k+s, u k+t) = 2 alpha quad (s < t) $
+  Terminal pinning adds $alpha$ to the diagonal $Q_(t_i k+s, t_i k+s)$ for $s != i$, canceling the one-hot incentive.
+
+  The cut-cost Hamiltonian:
+  $ H_B = sum_((u,v) in E) sum_(s != t) w(u,v) dot x_(u,s) dot x_(v,t) $
+  counts the total weight of edges whose endpoints lie in different components.
+
+  _Correctness._ ($arrow.r.double$) A valid multiway cut with cost $C$ maps to a QUBO solution with $H_A = 0$ (valid partition with correct terminal pinning) and $H_B = C$. ($arrow.l.double$) If $H_A > 0$, the penalty $alpha > sum_e w(e)$ exceeds the entire cut-cost range, so any QUBO minimizer has $H_A = 0$, encoding a valid partition. Among valid partitions, $H_B$ equals the cut cost, and the minimizer achieves the minimum multiway cut.
+
+  _Solution extraction._ For each vertex $u$, find terminal position $t$ with $x_(u,t) = 1$. For each edge $(u,v)$, output 1 (cut) if $u$ and $v$ are in different components, 0 otherwise.
+]
+
 #let qubo_ilp = load-example("QUBO", "ILP")
 #let qubo_ilp_sol = qubo_ilp.solutions.at(0)
 #reduction-rule("QUBO", "ILP",
diff --git a/docs/paper/references.bib b/docs/paper/references.bib
index 34fc92a17..69cb81d3b 100644
--- a/docs/paper/references.bib
+++ b/docs/paper/references.bib
@@ -734,3 +734,11 @@ @article{papadimitriou1982
   year    = {1982},
   doi     = {10.1145/322307.322309}
 }
+
+@techreport{Heidari2022,
+  author      = {Heidari, Shahrokh and Dinneen, Michael J. and Delmas, Patrice},
+  title       = {An Equivalent {QUBO} Model to the Minimum Multi-Way Cut Problem},
+  institution = {Centre for Discrete Mathematics and Theoretical Computer Science, University of Auckland},
+  year        = {2022},
+  number      = {CDMTCS-565}
+}
diff --git a/docs/src/reductions/problem_schemas.json b/docs/src/reductions/problem_schemas.json
index 7cd236022..0fbb10816 100644
--- a/docs/src/reductions/problem_schemas.json
+++ b/docs/src/reductions/problem_schemas.json
@@ -152,6 +152,37 @@
       }
     ]
   },
+  {
+    "name": "ComparativeContainment",
+    "description": "Compare containment-weight sums for two set families over a shared universe",
+    "fields": [
+      {
+        "name": "universe_size",
+        "type_name": "usize",
+        "description": "Size of the universe X"
+      },
+      {
+        "name": "r_sets",
+        "type_name": "Vec<Vec<usize>>",
+        "description": "First set family R over X"
+      },
+      {
+        "name": "s_sets",
+        "type_name": "Vec<Vec<usize>>",
+        "description": "Second set family S over X"
+      },
+      {
+        "name": "r_weights",
+        "type_name": "Vec<W>",
+        "description": "Positive weights for sets in R"
+      },
+      {
+        "name": "s_weights",
+        "type_name": "Vec<W>",
+        "description": "Positive weights for sets in S"
+      }
+    ]
+  },
   {
     "name": "DirectedTwoCommodityIntegralFlow",
     "description": "Two-commodity integral flow feasibility on a directed graph",
diff --git a/docs/src/reductions/reduction_graph.json b/docs/src/reductions/reduction_graph.json
index 756c52b70..eb6d01861 100644
--- a/docs/src/reductions/reduction_graph.json
+++ b/docs/src/reductions/reduction_graph.json
@@ -84,6 +84,33 @@
       "doc_path": "models/algebraic/struct.ClosestVectorProblem.html",
       "complexity": "2^num_basis_vectors"
     },
+    {
+      "name": "ComparativeContainment",
+      "variant": {
+        "weight": "One"
+      },
+      "category": "set",
+      "doc_path": "models/set/struct.ComparativeContainment.html",
+      "complexity": "2^universe_size"
+    },
+    {
+      "name": "ComparativeContainment",
+      "variant": {
+        "weight": "f64"
+      },
+      "category": "set",
+      "doc_path": "models/set/struct.ComparativeContainment.html",
+      "complexity": "2^universe_size"
+    },
+    {
+      "name": "ComparativeContainment",
+      "variant": {
+        "weight": "i32"
+      },
+      "category": "set",
+      "doc_path": "models/set/struct.ComparativeContainment.html",
+      "complexity": "2^universe_size"
+    },
     {
       "name": "DirectedTwoCommodityIntegralFlow",
       "variant": {},
@@ -631,7 +658,7 @@
   "edges": [
     {
       "source": 5,
-      "target": 16,
+      "target": 19,
       "overhead": [
         {
           "field": "num_vars",
@@ -646,7 +673,7 @@
     },
     {
       "source": 7,
-      "target": 16,
+      "target": 19,
       "overhead": [
         {
           "field": "num_vars",
@@ -661,7 +688,7 @@
     },
     {
       "source": 7,
-      "target": 63,
+      "target": 66,
       "overhead": [
         {
           "field": "num_spins",
@@ -675,7 +702,7 @@
       "doc_path": "rules/circuit_spinglass/index.html"
     },
     {
-      "source": 12,
+      "source": 15,
       "target": 7,
       "overhead": [
         {
@@ -690,8 +717,8 @@
       "doc_path": "rules/factoring_circuit/index.html"
     },
     {
-      "source": 12,
-      "target": 17,
+      "source": 15,
+      "target": 20,
       "overhead": [
         {
           "field": "num_vars",
@@ -705,8 +732,8 @@
       "doc_path": "rules/factoring_ilp/index.html"
     },
     {
-      "source": 16,
-      "target": 17,
+      "source": 19,
+      "target": 20,
       "overhead": [
         {
           "field": "num_vars",
@@ -720,8 +747,8 @@
       "doc_path": "rules/ilp_bool_ilp_i32/index.html"
     },
     {
-      "source": 16,
-      "target": 56,
+      "source": 19,
+      "target": 59,
       "overhead": [
         {
           "field": "num_vars",
@@ -731,8 +758,8 @@
       "doc_path": "rules/ilp_qubo/index.html"
     },
     {
-      "source": 20,
-      "target": 23,
+      "source": 23,
+      "target": 26,
       "overhead": [
         {
           "field": "num_vertices",
@@ -746,8 +773,8 @@
       "doc_path": "rules/kcoloring_casts/index.html"
     },
     {
-      "source": 23,
-      "target": 16,
+      "source": 26,
+      "target": 19,
       "overhead": [
         {
           "field": "num_vars",
@@ -761,8 +788,8 @@
       "doc_path": "rules/coloring_ilp/index.html"
     },
     {
-      "source": 23,
-      "target": 56,
+      "source": 26,
+      "target": 59,
       "overhead": [
         {
           "field": "num_vars",
@@ -772,8 +799,8 @@
       "doc_path": "rules/coloring_qubo/index.html"
     },
     {
-      "source": 24,
-      "target": 26,
+      "source": 27,
+      "target": 29,
       "overhead": [
         {
           "field": "num_vars",
@@ -787,8 +814,8 @@
       "doc_path": "rules/ksatisfiability_casts/index.html"
     },
     {
-      "source": 24,
-      "target": 56,
+      "source": 27,
+      "target": 59,
       "overhead": [
         {
           "field": "num_vars",
@@ -798,8 +825,8 @@
       "doc_path": "rules/ksatisfiability_qubo/index.html"
     },
     {
-      "source": 25,
-      "target": 26,
+      "source": 28,
+      "target": 29,
       "overhead": [
         {
           "field": "num_vars",
@@ -813,8 +840,8 @@
       "doc_path": "rules/ksatisfiability_casts/index.html"
     },
     {
-      "source": 25,
-      "target": 56,
+      "source": 28,
+      "target": 59,
       "overhead": [
         {
           "field": "num_vars",
@@ -824,8 +851,8 @@
       "doc_path": "rules/ksatisfiability_qubo/index.html"
     },
     {
-      "source": 25,
-      "target": 68,
+      "source": 28,
+      "target": 71,
       "overhead": [
         {
           "field": "num_elements",
@@ -835,8 +862,8 @@
       "doc_path": "rules/ksatisfiability_subsetsum/index.html"
     },
     {
-      "source": 26,
-      "target": 58,
+      "source": 29,
+      "target": 61,
       "overhead": [
         {
           "field": "num_clauses",
@@ -854,8 +881,8 @@
       "doc_path": "rules/sat_ksat/index.html"
     },
     {
-      "source": 27,
-      "target": 56,
+      "source": 30,
+      "target": 59,
       "overhead": [
         {
           "field": "num_vars",
@@ -865,8 +892,8 @@
       "doc_path": "rules/knapsack_qubo/index.html"
     },
     {
-      "source": 29,
-      "target": 16,
+      "source": 32,
+      "target": 19,
       "overhead": [
         {
           "field": "num_vars",
@@ -880,8 +907,8 @@
       "doc_path": "rules/longestcommonsubsequence_ilp/index.html"
     },
     {
-      "source": 30,
-      "target": 63,
+      "source": 33,
+      "target": 66,
       "overhead": [
         {
           "field": "num_spins",
@@ -895,8 +922,8 @@
       "doc_path": "rules/spinglass_maxcut/index.html"
     },
     {
-      "source": 32,
-      "target": 16,
+      "source": 35,
+      "target": 19,
       "overhead": [
         {
           "field": "num_vars",
@@ -910,8 +937,8 @@
       "doc_path": "rules/maximumclique_ilp/index.html"
     },
     {
-      "source": 32,
-      "target": 36,
+      "source": 35,
+      "target": 39,
       "overhead": [
         {
           "field": "num_vertices",
@@ -925,8 +952,8 @@
       "doc_path": "rules/maximumclique_maximumindependentset/index.html"
     },
     {
-      "source": 33,
-      "target": 34,
+      "source": 36,
+      "target": 37,
       "overhead": [
         {
           "field": "num_vertices",
@@ -940,8 +967,8 @@
       "doc_path": "rules/maximumindependentset_casts/index.html"
     },
     {
-      "source": 33,
-      "target": 38,
+      "source": 36,
+      "target": 41,
       "overhead": [
         {
           "field": "num_vertices",
@@ -955,8 +982,8 @@
       "doc_path": "rules/maximumindependentset_casts/index.html"
     },
     {
-      "source": 34,
-      "target": 39,
+      "source": 37,
+      "target": 42,
       "overhead": [
         {
           "field": "num_vertices",
@@ -970,8 +997,8 @@
       "doc_path": "rules/maximumindependentset_casts/index.html"
     },
     {
-      "source": 35,
-      "target": 33,
+      "source": 38,
+      "target": 36,
       "overhead": [
         {
           "field": "num_vertices",
@@ -985,8 +1012,8 @@
       "doc_path": "rules/maximumindependentset_gridgraph/index.html"
     },
     {
-      "source": 35,
-      "target": 36,
+      "source": 38,
+      "target": 39,
       "overhead": [
         {
           "field": "num_vertices",
@@ -1000,8 +1027,8 @@
       "doc_path": "rules/maximumindependentset_casts/index.html"
     },
     {
-      "source": 35,
-      "target": 37,
+      "source": 38,
+      "target": 40,
       "overhead": [
         {
           "field": "num_vertices",
@@ -1015,8 +1042,8 @@
       "doc_path": "rules/maximumindependentset_triangular/index.html"
     },
     {
-      "source": 35,
-      "target": 41,
+      "source": 38,
+      "target": 44,
       "overhead": [
         {
           "field": "num_sets",
@@ -1030,8 +1057,8 @@
       "doc_path": "rules/maximumindependentset_maximumsetpacking/index.html"
     },
     {
-      "source": 36,
-      "target": 32,
+      "source": 39,
+      "target": 35,
       "overhead": [
         {
           "field": "num_vertices",
@@ -1045,8 +1072,8 @@
       "doc_path": "rules/maximumindependentset_maximumclique/index.html"
     },
     {
-      "source": 36,
-      "target": 43,
+      "source": 39,
+      "target": 46,
       "overhead": [
         {
           "field": "num_sets",
@@ -1060,8 +1087,8 @@
       "doc_path": "rules/maximumindependentset_maximumsetpacking/index.html"
     },
     {
-      "source": 36,
-      "target": 51,
+      "source": 39,
+      "target": 54,
       "overhead": [
         {
           "field": "num_vertices",
@@ -1075,8 +1102,8 @@
       "doc_path": "rules/minimumvertexcover_maximumindependentset/index.html"
     },
     {
-      "source": 37,
-      "target": 39,
+      "source": 40,
+      "target": 42,
       "overhead": [
         {
           "field": "num_vertices",
@@ -1090,8 +1117,8 @@
       "doc_path": "rules/maximumindependentset_casts/index.html"
     },
     {
-      "source": 38,
-      "target": 35,
+      "source": 41,
+      "target": 38,
       "overhead": [
         {
           "field": "num_vertices",
@@ -1105,8 +1132,8 @@
       "doc_path": "rules/maximumindependentset_casts/index.html"
     },
     {
-      "source": 38,
-      "target": 39,
+      "source": 41,
+      "target": 42,
       "overhead": [
         {
           "field": "num_vertices",
@@ -1120,8 +1147,8 @@
       "doc_path": "rules/maximumindependentset_casts/index.html"
     },
     {
-      "source": 39,
-      "target": 36,
+      "source": 42,
+      "target": 39,
       "overhead": [
         {
           "field": "num_vertices",
@@ -1135,8 +1162,8 @@
       "doc_path": "rules/maximumindependentset_casts/index.html"
     },
     {
-      "source": 40,
-      "target": 16,
+      "source": 43,
+      "target": 19,
       "overhead": [
         {
           "field": "num_vars",
@@ -1150,8 +1177,8 @@
       "doc_path": "rules/maximummatching_ilp/index.html"
     },
     {
-      "source": 40,
-      "target": 43,
+      "source": 43,
+      "target": 46,
       "overhead": [
         {
           "field": "num_sets",
@@ -1165,8 +1192,8 @@
       "doc_path": "rules/maximummatching_maximumsetpacking/index.html"
     },
     {
-      "source": 41,
-      "target": 35,
+      "source": 44,
+      "target": 38,
       "overhead": [
         {
           "field": "num_vertices",
@@ -1180,8 +1207,8 @@
       "doc_path": "rules/maximumindependentset_maximumsetpacking/index.html"
     },
     {
-      "source": 41,
-      "target": 43,
+      "source": 44,
+      "target": 46,
       "overhead": [
         {
           "field": "num_sets",
@@ -1195,8 +1222,8 @@
       "doc_path": "rules/maximumsetpacking_casts/index.html"
     },
     {
-      "source": 42,
-      "target": 56,
+      "source": 45,
+      "target": 59,
       "overhead": [
         {
           "field": "num_vars",
@@ -1206,8 +1233,8 @@
       "doc_path": "rules/maximumsetpacking_qubo/index.html"
     },
     {
-      "source": 43,
-      "target": 16,
+      "source": 46,
+      "target": 19,
       "overhead": [
         {
           "field": "num_vars",
@@ -1221,8 +1248,8 @@
       "doc_path": "rules/maximumsetpacking_ilp/index.html"
     },
     {
-      "source": 43,
-      "target": 36,
+      "source": 46,
+      "target": 39,
       "overhead": [
         {
           "field": "num_vertices",
@@ -1236,8 +1263,8 @@
       "doc_path": "rules/maximumindependentset_maximumsetpacking/index.html"
     },
     {
-      "source": 43,
-      "target": 42,
+      "source": 46,
+      "target": 45,
       "overhead": [
         {
           "field": "num_sets",
@@ -1251,8 +1278,8 @@
       "doc_path": "rules/maximumsetpacking_casts/index.html"
     },
     {
-      "source": 44,
-      "target": 16,
+      "source": 47,
+      "target": 19,
       "overhead": [
         {
           "field": "num_vars",
@@ -1266,8 +1293,34 @@
       "doc_path": "rules/minimumdominatingset_ilp/index.html"
     },
     {
-      "source": 48,
-      "target": 16,
+      "source": 49,
+      "target": 20,
+      "overhead": [
+        {
+          "field": "num_vars",
+          "formula": "2 * num_vertices"
+        },
+        {
+          "field": "num_constraints",
+          "formula": "num_arcs + 2 * num_vertices"
+        }
+      ],
+      "doc_path": "rules/minimumfeedbackvertexset_ilp/index.html"
+    },
+    {
+      "source": 50,
+      "target": 59,
+      "overhead": [
+        {
+          "field": "num_vars",
+          "formula": "num_terminals * num_vertices"
+        }
+      ],
+      "doc_path": "rules/minimummultiwaycut_qubo/index.html"
+    },
+    {
+      "source": 51,
+      "target": 19,
       "overhead": [
         {
           "field": "num_vars",
@@ -1281,8 +1334,8 @@
       "doc_path": "rules/minimumsetcovering_ilp/index.html"
     },
     {
-      "source": 51,
-      "target": 36,
+      "source": 54,
+      "target": 39,
       "overhead": [
         {
           "field": "num_vertices",
@@ -1296,8 +1349,8 @@
       "doc_path": "rules/minimumvertexcover_maximumindependentset/index.html"
     },
     {
-      "source": 51,
-      "target": 48,
+      "source": 54,
+      "target": 51,
       "overhead": [
         {
           "field": "num_sets",
@@ -1311,8 +1364,8 @@
       "doc_path": "rules/minimumvertexcover_minimumsetcovering/index.html"
     },
     {
-      "source": 56,
-      "target": 16,
+      "source": 59,
+      "target": 19,
       "overhead": [
         {
           "field": "num_vars",
@@ -1326,8 +1379,8 @@
       "doc_path": "rules/qubo_ilp/index.html"
     },
     {
-      "source": 56,
-      "target": 62,
+      "source": 59,
+      "target": 65,
       "overhead": [
         {
           "field": "num_spins",
@@ -1337,7 +1390,7 @@
       "doc_path": "rules/spinglass_qubo/index.html"
     },
     {
-      "source": 58,
+      "source": 61,
       "target": 7,
       "overhead": [
         {
@@ -1352,8 +1405,8 @@
       "doc_path": "rules/sat_circuitsat/index.html"
     },
     {
-      "source": 58,
-      "target": 20,
+      "source": 61,
+      "target": 23,
       "overhead": [
         {
           "field": "num_vertices",
@@ -1367,8 +1420,8 @@
       "doc_path": "rules/sat_coloring/index.html"
     },
     {
-      "source": 58,
-      "target": 25,
+      "source": 61,
+      "target": 28,
       "overhead": [
         {
           "field": "num_clauses",
@@ -1382,8 +1435,8 @@
       "doc_path": "rules/sat_ksat/index.html"
     },
     {
-      "source": 58,
-      "target": 35,
+      "source": 61,
+      "target": 38,
       "overhead": [
         {
           "field": "num_vertices",
@@ -1397,8 +1450,8 @@
       "doc_path": "rules/sat_maximumindependentset/index.html"
     },
     {
-      "source": 58,
-      "target": 44,
+      "source": 61,
+      "target": 47,
       "overhead": [
         {
           "field": "num_vertices",
@@ -1412,8 +1465,8 @@
       "doc_path": "rules/sat_minimumdominatingset/index.html"
     },
     {
-      "source": 62,
-      "target": 56,
+      "source": 65,
+      "target": 59,
       "overhead": [
         {
           "field": "num_vars",
@@ -1423,8 +1476,8 @@
       "doc_path": "rules/spinglass_qubo/index.html"
     },
     {
-      "source": 63,
-      "target": 30,
+      "source": 66,
+      "target": 33,
       "overhead": [
         {
           "field": "num_vertices",
@@ -1438,8 +1491,8 @@
       "doc_path": "rules/spinglass_maxcut/index.html"
     },
     {
-      "source": 63,
-      "target": 62,
+      "source": 66,
+      "target": 65,
       "overhead": [
         {
           "field": "num_spins",
@@ -1453,8 +1506,8 @@
       "doc_path": "rules/spinglass_casts/index.html"
     },
     {
-      "source": 69,
-      "target": 16,
+      "source": 72,
+      "target": 19,
       "overhead": [
         {
           "field": "num_vars",
@@ -1468,8 +1521,8 @@
       "doc_path": "rules/travelingsalesman_ilp/index.html"
     },
     {
-      "source": 69,
-      "target": 56,
+      "source": 72,
+      "target": 59,
       "overhead": [
         {
           "field": "num_vars",
diff --git a/src/example_db/fixtures/examples.json b/src/example_db/fixtures/examples.json
index e31260a21..75e16f6a2 100644
--- a/src/example_db/fixtures/examples.json
+++ b/src/example_db/fixtures/examples.json
@@ -75,6 +75,7 @@
     {"source":{"problem":"MaximumSetPacking","variant":{"weight":"i32"},"instance":{"sets":[[0,1,2],[2,3],[4,5,6],[1,5,7],[3,6]],"weights":[1,1,1,1,1]}},"target":{"problem":"MaximumIndependentSet","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,3,null],[1,4,null],[2,3,null],[2,4,null]],"node_holes":[],"nodes":[null,null,null,null,null]}},"weights":[1,1,1,1,1]}},"solutions":[{"source_config":[1,0,0,0,1],"target_config":[1,0,0,0,1]}]},
     {"source":{"problem":"MinimumDominatingSet","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}},"weights":[1,1,1,1,1,1,1,1,1,1]}},"target":{"problem":"ILP","variant":{"variable":"bool"},"instance":{"constraints":[{"cmp":"Ge","rhs":1.0,"terms":[[0,1.0],[5,1.0],[4,1.0],[1,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[1,1.0],[6,1.0],[2,1.0],[0,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[2,1.0],[7,1.0],[3,1.0],[1,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[3,1.0],[8,1.0],[4,1.0],[2,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[4,1.0],[9,1.0],[3,1.0],[0,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[5,1.0],[8,1.0],[7,1.0],[0,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[6,1.0],[9,1.0],[8,1.0],[1,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[7,1.0],[9,1.0],[5,1.0],[2,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[8,1.0],[6,1.0],[5,1.0],[3,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[9,1.0],[7,1.0],[6,1.0],[4,1.0]]}],"num_vars":10,"objective":[[0,1.0],[1,1.0],[2,1.0],[3,1.0],[4,1.0],[5,1.0],[6,1.0],[7,1.0],[8,1.0],[9,1.0]],"sense":"Minimize"}},"solutions":[{"source_config":[0,0,1,0,0,1,0,0,0,1],"target_config":[0,0,1,0,0,1,0,0,0,1]}]},
     {"source":{"problem":"MinimumFeedbackVertexSet","variant":{"weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"directed","edges":[[0,1,null],[1,2,null],[2,0,null]],"node_holes":[],"nodes":[null,null,null]}},"weights":[1,1,1]}},"target":{"problem":"ILP","variant":{"variable":"i32"},"instance":{"constraints":[{"cmp":"Le","rhs":1.0,"terms":[[0,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[1,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[2,1.0]]},{"cmp":"Le","rhs":2.0,"terms":[[3,1.0]]},{"cmp":"Le","rhs":2.0,"terms":[[4,1.0]]},{"cmp":"Le","rhs":2.0,"terms":[[5,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[4,1.0],[3,-1.0],[0,3.0],[1,3.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[5,1.0],[4,-1.0],[1,3.0],[2,3.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[3,1.0],[5,-1.0],[2,3.0],[0,3.0]]}],"num_vars":6,"objective":[[0,1.0],[1,1.0],[2,1.0]],"sense":"Minimize"}},"solutions":[{"source_config":[0,1,0],"target_config":[0,1,0,1,0,0]}]},
+    {"source":{"problem":"MinimumMultiwayCut","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"edge_weights":[2,3,1,2,4,5],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[1,2,null],[2,3,null],[3,4,null],[0,4,null],[1,3,null]],"node_holes":[],"nodes":[null,null,null,null,null]}},"terminals":[0,2,4]}},"target":{"problem":"QUBO","variant":{"weight":"f64"},"instance":{"matrix":[[-18.0,36.0,36.0,0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.0,4.0],[0.0,0.0,36.0,2.0,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,4.0,0.0,4.0],[0.0,0.0,0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.0,4.0,0.0],[0.0,0.0,0.0,-18.0,36.0,36.0,0.0,3.0,3.0,0.0,5.0,5.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,-18.0,36.0,3.0,0.0,3.0,5.0,0.0,5.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,-18.0,3.0,3.0,0.0,5.0,5.0,0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,36.0,36.0,0.0,1.0,1.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,-18.0,36.0,1.0,0.0,1.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-18.0,36.0,36.0,0.0,2.0,2.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-18.0,36.0,2.0,0.0,2.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-18.0,2.0,2.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,36.0,36.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,36.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-18.0]],"num_vars":15}},"solutions":[{"source_config":[1,0,0,1,1,0],"target_config":[1,0,0,0,1,0,0,1,0,0,1,0,0,0,1]}]},
     {"source":{"problem":"MinimumSetCovering","variant":{"weight":"i32"},"instance":{"sets":[[0,1,2],[2,3,4],[4,5,6],[6,7,0],[1,3,5],[0,4,7]],"universe_size":8,"weights":[1,1,1,1,1,1]}},"target":{"problem":"ILP","variant":{"variable":"bool"},"instance":{"constraints":[{"cmp":"Ge","rhs":1.0,"terms":[[0,1.0],[3,1.0],[5,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[0,1.0],[4,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[0,1.0],[1,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[1,1.0],[4,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[1,1.0],[2,1.0],[5,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[2,1.0],[4,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[2,1.0],[3,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[3,1.0],[5,1.0]]}],"num_vars":6,"objective":[[0,1.0],[1,1.0],[2,1.0],[3,1.0],[4,1.0],[5,1.0]],"sense":"Minimize"}},"solutions":[{"source_config":[0,1,0,1,1,0],"target_config":[0,1,0,1,1,0]}]},
     {"source":{"problem":"MinimumVertexCover","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}},"weights":[1,1,1,1,1,1,1,1,1,1]}},"target":{"problem":"MaximumIndependentSet","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}},"weights":[1,1,1,1,1,1,1,1,1,1]}},"solutions":[{"source_config":[0,1,1,0,1,1,0,0,1,1],"target_config":[1,0,0,1,0,0,1,1,0,0]}]},
     {"source":{"problem":"MinimumVertexCover","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}},"weights":[1,1,1,1,1,1,1,1,1,1]}},"target":{"problem":"MinimumSetCovering","variant":{"weight":"i32"},"instance":{"sets":[[0,1,2],[0,3,4],[3,5,6],[5,7,8],[1,7,9],[2,10,11],[4,12,13],[6,10,14],[8,11,12],[9,13,14]],"universe_size":15,"weights":[1,1,1,1,1,1,1,1,1,1]}},"solutions":[{"source_config":[0,1,1,0,1,1,0,0,1,1],"target_config":[0,1,1,0,1,1,0,0,1,1]}]},

From 5d3070c6d9fdf7b7a0ad88a2d825344b56b5c196 Mon Sep 17 00:00:00 2001
From: GiggleLiu <cacate0129@gmail.com>
Date: Wed, 18 Mar 2026 03:03:59 +0800
Subject: [PATCH 4/7] chore: remove plan file after implementation

---
 .../2026-03-18-minimummultiwaycut-to-qubo.md  | 89 -------------------
 1 file changed, 89 deletions(-)
 delete mode 100644 docs/plans/2026-03-18-minimummultiwaycut-to-qubo.md

diff --git a/docs/plans/2026-03-18-minimummultiwaycut-to-qubo.md b/docs/plans/2026-03-18-minimummultiwaycut-to-qubo.md
deleted file mode 100644
index 7ae3d867a..000000000
--- a/docs/plans/2026-03-18-minimummultiwaycut-to-qubo.md
+++ /dev/null
@@ -1,89 +0,0 @@
-# Plan: MinimumMultiwayCut to QUBO Reduction (#186)
-
-## Summary
-
-Implement the reduction from MinimumMultiwayCut to QUBO based on Heidari, Dinneen & Delmas (2022). The reduction uses kn binary variables where k = |terminals| and n = |vertices|, encoding vertex-to-terminal assignments via a penalty Hamiltonian H_A (enforces valid partition + terminal pinning) and a cut-cost Hamiltonian H_B.
-
-## Batch 1: Implementation (Steps 1-4)
-
-All tasks in this batch are independent and can be parallelized.
-
-### Task 1.1: Implement reduction rule
-
-**File:** `src/rules/minimummultiwaycut_qubo.rs`
-
-**Reduction algorithm:**
-- Variable mapping: kn binary variables x_{u,t} indexed as `u * k + pos(t)` where pos(t) is the position of terminal t in the terminals list
-- alpha = penalty coefficient > sum of all edge weights (use sum + 1.0)
-
-**Q-matrix construction (expanding H = H_A + H_B):**
-
-H_A = alpha * (sum_u (1 - sum_t x_{u,t})^2 + sum_t sum_{t'!=t} x_{t,t'})
-
-Expanding (1 - sum_t x_{u,t})^2 with x^2=x for binary:
-= 1 - sum_t x_{u,t} + 2 * sum_{s<t} x_{u,s} * x_{u,t}
-
-So H_A contributes:
-1. **Diagonal** (one-hot penalty): Q[u*k+s, u*k+s] -= alpha, for all u, s
-2. **Off-diagonal** (one-hot cross): Q[u*k+s, u*k+t] += 2*alpha, for all u, s < t
-3. **Diagonal** (terminal pinning): Q[t_idx*k+s, t_idx*k+s] += alpha, for each terminal t_idx and each terminal position s != pos(t_idx)
-
-H_B = sum_{(u,v) in E} sum_s sum_{t!=s} C({u,v}) * x_{u,s} * x_{v,t}
-
-H_B contributes:
-4. **Off-diagonal** (cut cost): Q[min(u*k+s, v*k+t), max(u*k+s, v*k+t)] += C({u,v}), for each edge (u,v) and distinct terminal positions s != t
-
-**ReductionResult struct:** stores target QUBO, source graph reference data (num_vertices, num_edges, terminal list, edges list) for solution extraction.
-
-**Solution extraction:** From QUBO solution (vertex assignments), derive edge cut: for each edge (u,v), if assigned to different terminals, mark as cut (1), else keep (0).
-
-**Overhead:** `num_vars = "num_terminals * num_vertices"`
-
-**Reference patterns:** `src/rules/coloring_qubo.rs` (one-hot encoding + penalty QUBO)
-
-### Task 1.2: Register in mod.rs
-
-**File:** `src/rules/mod.rs`
-- Add `pub(crate) mod minimummultiwaycut_qubo;` (alphabetical order, after `minimumvertexcover_minimumsetcovering`)
-- Add `specs.extend(minimummultiwaycut_qubo::canonical_rule_example_specs());` in `canonical_rule_example_specs()`
-
-### Task 1.3: Write unit tests
-
-**File:** `src/unit_tests/rules/minimummultiwaycut_qubo.rs`
-
-Tests:
-1. `test_minimummultiwaycut_to_qubo_closed_loop` — Use the issue example (5 vertices, 3 terminals {0,2,4}, 6 weighted edges). Reduce, solve QUBO with BruteForce, extract solutions, verify each extracted solution has source cost = 8 (optimal).
-2. `test_minimummultiwaycut_to_qubo_small` — Triangle graph, 2 terminals. Verify correct QUBO size and valid extraction.
-3. `test_minimummultiwaycut_to_qubo_sizes` — Verify QUBO has k*n variables.
-4. `test_minimummultiwaycut_to_qubo_terminal_pinning` — Verify terminals are correctly pinned (each terminal assigned to its own component in all optimal solutions).
-
-### Task 1.4: Add canonical example to example_db
-
-**File:** `src/rules/minimummultiwaycut_qubo.rs` (add `canonical_rule_example_specs` function)
-
-Use the issue example: 5 vertices, terminals {0,2,4}, edges with weights [2,3,1,2,4,5]. Use `direct_best_example` with `|_, _| true` keep function (since MinimumMultiwayCut is an optimization problem).
-
-## Batch 2: Paper Documentation (Step 5)
-
-Depends on Batch 1 completion (needs exports).
-
-### Task 2.1: Write paper entry + regenerate exports
-
-**File:** `docs/paper/reductions.typ`
-
-1. Run `cargo run --example export_graph` and `cargo run --example export_schemas`
-2. Add `reduction-rule("MinimumMultiwayCut", "QUBO", ...)` entry with:
-   - Rule statement: O(kn) reduction, kn binary variables encoding vertex-to-terminal assignments
-   - Proof: Construction (H_A + H_B), Correctness (bidirectional), Solution extraction
-   - Worked example from JSON fixture data
-3. Run `make paper` to verify compilation
-
-## Verification
-
-After all batches:
-```bash
-make test clippy
-cargo run --example export_graph
-cargo run --example export_schemas
-make paper
-```

From 055af5e4227b880ef06578b88bf1bad689d12b6b Mon Sep 17 00:00:00 2001
From: GiggleLiu <cacate0129@gmail.com>
Date: Thu, 19 Mar 2026 15:36:46 +0800
Subject: [PATCH 5/7] fix: remove auto-generated files that should not be
 committed

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---
 docs/src/reductions/problem_schemas.json | 1035 ---------------
 docs/src/reductions/reduction_graph.json | 1535 ----------------------
 src/example_db/fixtures/examples.json    |   94 --
 3 files changed, 2664 deletions(-)
 delete mode 100644 docs/src/reductions/problem_schemas.json
 delete mode 100644 docs/src/reductions/reduction_graph.json
 delete mode 100644 src/example_db/fixtures/examples.json

diff --git a/docs/src/reductions/problem_schemas.json b/docs/src/reductions/problem_schemas.json
deleted file mode 100644
index 0fbb10816..000000000
--- a/docs/src/reductions/problem_schemas.json
+++ /dev/null
@@ -1,1035 +0,0 @@
-[
-  {
-    "name": "BMF",
-    "description": "Boolean matrix factorization",
-    "fields": [
-      {
-        "name": "matrix",
-        "type_name": "Vec<Vec<bool>>",
-        "description": "Target boolean matrix A"
-      },
-      {
-        "name": "k",
-        "type_name": "usize",
-        "description": "Factorization rank"
-      }
-    ]
-  },
-  {
-    "name": "BalancedCompleteBipartiteSubgraph",
-    "description": "Decide whether a bipartite graph contains a K_{k,k} subgraph",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "BipartiteGraph",
-        "description": "The bipartite graph G = (A, B, E)"
-      },
-      {
-        "name": "k",
-        "type_name": "usize",
-        "description": "Balanced biclique size"
-      }
-    ]
-  },
-  {
-    "name": "BicliqueCover",
-    "description": "Cover bipartite edges with k bicliques",
-    "fields": [
-      {
-        "name": "left_size",
-        "type_name": "usize",
-        "description": "Vertices in left partition"
-      },
-      {
-        "name": "right_size",
-        "type_name": "usize",
-        "description": "Vertices in right partition"
-      },
-      {
-        "name": "edges",
-        "type_name": "Vec<(usize, usize)>",
-        "description": "Bipartite edges"
-      },
-      {
-        "name": "k",
-        "type_name": "usize",
-        "description": "Number of bicliques"
-      }
-    ]
-  },
-  {
-    "name": "BiconnectivityAugmentation",
-    "description": "Add weighted potential edges to make a graph biconnected within budget",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The underlying graph G=(V,E)"
-      },
-      {
-        "name": "potential_weights",
-        "type_name": "Vec<(usize, usize, W)>",
-        "description": "Potential edges with augmentation weights"
-      },
-      {
-        "name": "budget",
-        "type_name": "W::Sum",
-        "description": "Maximum total augmentation weight B"
-      }
-    ]
-  },
-  {
-    "name": "BinPacking",
-    "description": "Assign items to bins minimizing number of bins used, subject to capacity",
-    "fields": [
-      {
-        "name": "sizes",
-        "type_name": "Vec<W>",
-        "description": "Item sizes s_i for each item"
-      },
-      {
-        "name": "capacity",
-        "type_name": "W",
-        "description": "Bin capacity C"
-      }
-    ]
-  },
-  {
-    "name": "BoundedComponentSpanningForest",
-    "description": "Partition vertices into at most K connected components, each of total weight at most B",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The underlying graph G=(V,E)"
-      },
-      {
-        "name": "weights",
-        "type_name": "Vec<W>",
-        "description": "Vertex weights w(v) for each vertex v in V"
-      },
-      {
-        "name": "max_components",
-        "type_name": "usize",
-        "description": "Upper bound K on the number of connected components"
-      },
-      {
-        "name": "max_weight",
-        "type_name": "W::Sum",
-        "description": "Upper bound B on the total weight of each component"
-      }
-    ]
-  },
-  {
-    "name": "CircuitSAT",
-    "description": "Find satisfying input to a boolean circuit",
-    "fields": [
-      {
-        "name": "circuit",
-        "type_name": "Circuit",
-        "description": "The boolean circuit"
-      }
-    ]
-  },
-  {
-    "name": "ClosestVectorProblem",
-    "description": "Find the closest lattice point to a target vector",
-    "fields": [
-      {
-        "name": "basis",
-        "type_name": "Vec<Vec<T>>",
-        "description": "Basis matrix B as column vectors"
-      },
-      {
-        "name": "target",
-        "type_name": "Vec<f64>",
-        "description": "Target vector t"
-      },
-      {
-        "name": "bounds",
-        "type_name": "Vec<VarBounds>",
-        "description": "Integer bounds per variable"
-      }
-    ]
-  },
-  {
-    "name": "ComparativeContainment",
-    "description": "Compare containment-weight sums for two set families over a shared universe",
-    "fields": [
-      {
-        "name": "universe_size",
-        "type_name": "usize",
-        "description": "Size of the universe X"
-      },
-      {
-        "name": "r_sets",
-        "type_name": "Vec<Vec<usize>>",
-        "description": "First set family R over X"
-      },
-      {
-        "name": "s_sets",
-        "type_name": "Vec<Vec<usize>>",
-        "description": "Second set family S over X"
-      },
-      {
-        "name": "r_weights",
-        "type_name": "Vec<W>",
-        "description": "Positive weights for sets in R"
-      },
-      {
-        "name": "s_weights",
-        "type_name": "Vec<W>",
-        "description": "Positive weights for sets in S"
-      }
-    ]
-  },
-  {
-    "name": "DirectedTwoCommodityIntegralFlow",
-    "description": "Two-commodity integral flow feasibility on a directed graph",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "DirectedGraph",
-        "description": "Directed graph G = (V, A)"
-      },
-      {
-        "name": "capacities",
-        "type_name": "Vec<u64>",
-        "description": "Capacity c(a) for each arc"
-      },
-      {
-        "name": "source_1",
-        "type_name": "usize",
-        "description": "Source vertex s_1 for commodity 1"
-      },
-      {
-        "name": "sink_1",
-        "type_name": "usize",
-        "description": "Sink vertex t_1 for commodity 1"
-      },
-      {
-        "name": "source_2",
-        "type_name": "usize",
-        "description": "Source vertex s_2 for commodity 2"
-      },
-      {
-        "name": "sink_2",
-        "type_name": "usize",
-        "description": "Sink vertex t_2 for commodity 2"
-      },
-      {
-        "name": "requirement_1",
-        "type_name": "u64",
-        "description": "Flow requirement R_1 for commodity 1"
-      },
-      {
-        "name": "requirement_2",
-        "type_name": "u64",
-        "description": "Flow requirement R_2 for commodity 2"
-      }
-    ]
-  },
-  {
-    "name": "ExactCoverBy3Sets",
-    "description": "Determine if a collection of 3-element subsets contains an exact cover",
-    "fields": [
-      {
-        "name": "universe_size",
-        "type_name": "usize",
-        "description": "Size of universe X (must be divisible by 3)"
-      },
-      {
-        "name": "subsets",
-        "type_name": "Vec<[usize; 3]>",
-        "description": "Collection C of 3-element subsets of X"
-      }
-    ]
-  },
-  {
-    "name": "Factoring",
-    "description": "Factor a composite integer into two factors",
-    "fields": [
-      {
-        "name": "m",
-        "type_name": "usize",
-        "description": "Bits for first factor"
-      },
-      {
-        "name": "n",
-        "type_name": "usize",
-        "description": "Bits for second factor"
-      },
-      {
-        "name": "target",
-        "type_name": "u64",
-        "description": "Number to factor"
-      }
-    ]
-  },
-  {
-    "name": "FlowShopScheduling",
-    "description": "Determine if a flow-shop schedule for jobs on m processors meets a deadline",
-    "fields": [
-      {
-        "name": "num_processors",
-        "type_name": "usize",
-        "description": "Number of machines m"
-      },
-      {
-        "name": "task_lengths",
-        "type_name": "Vec<Vec<u64>>",
-        "description": "task_lengths[j][i] = length of job j's task on machine i"
-      },
-      {
-        "name": "deadline",
-        "type_name": "u64",
-        "description": "Global deadline D"
-      }
-    ]
-  },
-  {
-    "name": "GraphPartitioning",
-    "description": "Find minimum cut balanced bisection of a graph",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The undirected graph G=(V,E)"
-      }
-    ]
-  },
-  {
-    "name": "HamiltonianPath",
-    "description": "Find a Hamiltonian path in a graph",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The underlying graph G=(V,E)"
-      }
-    ]
-  },
-  {
-    "name": "ILP",
-    "description": "Optimize linear objective subject to linear constraints",
-    "fields": [
-      {
-        "name": "num_vars",
-        "type_name": "usize",
-        "description": "Number of integer variables"
-      },
-      {
-        "name": "constraints",
-        "type_name": "Vec<LinearConstraint>",
-        "description": "Linear constraints"
-      },
-      {
-        "name": "objective",
-        "type_name": "Vec<(usize, f64)>",
-        "description": "Sparse objective coefficients"
-      },
-      {
-        "name": "sense",
-        "type_name": "ObjectiveSense",
-        "description": "Optimization direction"
-      }
-    ]
-  },
-  {
-    "name": "IsomorphicSpanningTree",
-    "description": "Does graph G contain a spanning tree isomorphic to tree T?",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "SimpleGraph",
-        "description": "The host graph G"
-      },
-      {
-        "name": "tree",
-        "type_name": "SimpleGraph",
-        "description": "The target tree T (must be a tree with |V(T)| = |V(G)|)"
-      }
-    ]
-  },
-  {
-    "name": "KColoring",
-    "description": "Find valid k-coloring of a graph",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The underlying graph G=(V,E)"
-      }
-    ]
-  },
-  {
-    "name": "KSatisfiability",
-    "description": "SAT with exactly k literals per clause",
-    "fields": [
-      {
-        "name": "num_vars",
-        "type_name": "usize",
-        "description": "Number of Boolean variables"
-      },
-      {
-        "name": "clauses",
-        "type_name": "Vec<CNFClause>",
-        "description": "Clauses each with exactly K literals"
-      }
-    ]
-  },
-  {
-    "name": "Knapsack",
-    "description": "Select items to maximize total value subject to weight capacity constraint",
-    "fields": [
-      {
-        "name": "weights",
-        "type_name": "Vec<i64>",
-        "description": "Nonnegative item weights w_i"
-      },
-      {
-        "name": "values",
-        "type_name": "Vec<i64>",
-        "description": "Nonnegative item values v_i"
-      },
-      {
-        "name": "capacity",
-        "type_name": "i64",
-        "description": "Nonnegative knapsack capacity C"
-      }
-    ]
-  },
-  {
-    "name": "LengthBoundedDisjointPaths",
-    "description": "Find J internally vertex-disjoint s-t paths of length at most K",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The underlying graph G=(V,E)"
-      },
-      {
-        "name": "source",
-        "type_name": "usize",
-        "description": "The shared source vertex s"
-      },
-      {
-        "name": "sink",
-        "type_name": "usize",
-        "description": "The shared sink vertex t"
-      },
-      {
-        "name": "num_paths_required",
-        "type_name": "usize",
-        "description": "Required number J of disjoint s-t paths"
-      },
-      {
-        "name": "max_length",
-        "type_name": "usize",
-        "description": "Maximum path length K in edges"
-      }
-    ]
-  },
-  {
-    "name": "LongestCommonSubsequence",
-    "description": "Find the longest string that is a subsequence of every input string",
-    "fields": [
-      {
-        "name": "strings",
-        "type_name": "Vec<Vec<u8>>",
-        "description": "The input strings"
-      }
-    ]
-  },
-  {
-    "name": "MaxCut",
-    "description": "Find maximum weight cut in a graph",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The graph with edge weights"
-      },
-      {
-        "name": "edge_weights",
-        "type_name": "Vec<W>",
-        "description": "Edge weights w: E -> R"
-      }
-    ]
-  },
-  {
-    "name": "MaximalIS",
-    "description": "Find maximum weight maximal independent set",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The underlying graph G=(V,E)"
-      },
-      {
-        "name": "weights",
-        "type_name": "Vec<W>",
-        "description": "Vertex weights w: V -> R"
-      }
-    ]
-  },
-  {
-    "name": "MaximumClique",
-    "description": "Find maximum weight clique in a graph",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The underlying graph G=(V,E)"
-      },
-      {
-        "name": "weights",
-        "type_name": "Vec<W>",
-        "description": "Vertex weights w: V -> R"
-      }
-    ]
-  },
-  {
-    "name": "MaximumIndependentSet",
-    "description": "Find maximum weight independent set in a graph",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The underlying graph G=(V,E)"
-      },
-      {
-        "name": "weights",
-        "type_name": "Vec<W>",
-        "description": "Vertex weights w: V -> R"
-      }
-    ]
-  },
-  {
-    "name": "MaximumMatching",
-    "description": "Find maximum weight matching in a graph",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The underlying graph G=(V,E)"
-      },
-      {
-        "name": "edge_weights",
-        "type_name": "Vec<W>",
-        "description": "Edge weights w: E -> R"
-      }
-    ]
-  },
-  {
-    "name": "MaximumSetPacking",
-    "description": "Find maximum weight collection of disjoint sets",
-    "fields": [
-      {
-        "name": "sets",
-        "type_name": "Vec<Vec<usize>>",
-        "description": "Collection of sets over a universe"
-      },
-      {
-        "name": "weights",
-        "type_name": "Vec<W>",
-        "description": "Weight for each set"
-      }
-    ]
-  },
-  {
-    "name": "MinimumDominatingSet",
-    "description": "Find minimum weight dominating set in a graph",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The underlying graph G=(V,E)"
-      },
-      {
-        "name": "weights",
-        "type_name": "Vec<W>",
-        "description": "Vertex weights w: V -> R"
-      }
-    ]
-  },
-  {
-    "name": "MinimumFeedbackArcSet",
-    "description": "Find minimum weight feedback arc set in a directed graph",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "DirectedGraph",
-        "description": "The directed graph G=(V,A)"
-      },
-      {
-        "name": "weights",
-        "type_name": "Vec<W>",
-        "description": "Arc weights w: A -> R"
-      }
-    ]
-  },
-  {
-    "name": "MinimumFeedbackVertexSet",
-    "description": "Find minimum weight feedback vertex set in a directed graph",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "DirectedGraph",
-        "description": "The directed graph G=(V,A)"
-      },
-      {
-        "name": "weights",
-        "type_name": "Vec<W>",
-        "description": "Vertex weights w: V -> R"
-      }
-    ]
-  },
-  {
-    "name": "MinimumMultiwayCut",
-    "description": "Find minimum weight set of edges whose removal disconnects all terminal pairs",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The undirected graph G=(V,E)"
-      },
-      {
-        "name": "terminals",
-        "type_name": "Vec<usize>",
-        "description": "Terminal vertices that must be separated"
-      },
-      {
-        "name": "edge_weights",
-        "type_name": "Vec<W>",
-        "description": "Edge weights w: E -> R (same order as graph.edges())"
-      }
-    ]
-  },
-  {
-    "name": "MinimumSetCovering",
-    "description": "Find minimum weight collection covering the universe",
-    "fields": [
-      {
-        "name": "universe_size",
-        "type_name": "usize",
-        "description": "Size of the universe U"
-      },
-      {
-        "name": "sets",
-        "type_name": "Vec<Vec<usize>>",
-        "description": "Collection of subsets of U"
-      },
-      {
-        "name": "weights",
-        "type_name": "Vec<W>",
-        "description": "Weight for each set"
-      }
-    ]
-  },
-  {
-    "name": "MinimumSumMulticenter",
-    "description": "Find K centers minimizing total weighted distance (p-median problem)",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The underlying graph G=(V,E)"
-      },
-      {
-        "name": "vertex_weights",
-        "type_name": "Vec<W>",
-        "description": "Vertex weights w: V -> R"
-      },
-      {
-        "name": "edge_lengths",
-        "type_name": "Vec<W>",
-        "description": "Edge lengths l: E -> R"
-      },
-      {
-        "name": "k",
-        "type_name": "usize",
-        "description": "Number of centers to place"
-      }
-    ]
-  },
-  {
-    "name": "MinimumTardinessSequencing",
-    "description": "Schedule unit-length tasks with precedence constraints and deadlines to minimize the number of tardy tasks",
-    "fields": [
-      {
-        "name": "num_tasks",
-        "type_name": "usize",
-        "description": "Number of tasks |T|"
-      },
-      {
-        "name": "deadlines",
-        "type_name": "Vec<usize>",
-        "description": "Deadline d(t) for each task (1-indexed finish time)"
-      },
-      {
-        "name": "precedences",
-        "type_name": "Vec<(usize, usize)>",
-        "description": "Precedence pairs (predecessor, successor)"
-      }
-    ]
-  },
-  {
-    "name": "MinimumVertexCover",
-    "description": "Find minimum weight vertex cover in a graph",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The underlying graph G=(V,E)"
-      },
-      {
-        "name": "weights",
-        "type_name": "Vec<W>",
-        "description": "Vertex weights w: V -> R"
-      }
-    ]
-  },
-  {
-    "name": "MultipleChoiceBranching",
-    "description": "Find a branching with partition constraints and weight at least K",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "DirectedGraph",
-        "description": "The directed graph G=(V,A)"
-      },
-      {
-        "name": "weights",
-        "type_name": "Vec<W>",
-        "description": "Arc weights w(a) for each arc a in A"
-      },
-      {
-        "name": "partition",
-        "type_name": "Vec<Vec<usize>>",
-        "description": "Partition of arc indices; each arc index must appear in exactly one group"
-      },
-      {
-        "name": "threshold",
-        "type_name": "W::Sum",
-        "description": "Weight threshold K"
-      }
-    ]
-  },
-  {
-    "name": "OptimalLinearArrangement",
-    "description": "Find a vertex ordering on a line with total edge length at most K",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The undirected graph G=(V,E)"
-      },
-      {
-        "name": "bound",
-        "type_name": "usize",
-        "description": "Upper bound K on total edge length"
-      }
-    ]
-  },
-  {
-    "name": "PaintShop",
-    "description": "Minimize color changes in paint shop sequence",
-    "fields": [
-      {
-        "name": "sequence",
-        "type_name": "Vec<String>",
-        "description": "Car labels (each must appear exactly twice)"
-      }
-    ]
-  },
-  {
-    "name": "PartitionIntoTriangles",
-    "description": "Partition vertices into triangles (K3 subgraphs)",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The underlying graph G=(V,E) with |V| divisible by 3"
-      }
-    ]
-  },
-  {
-    "name": "QUBO",
-    "description": "Minimize quadratic unconstrained binary objective",
-    "fields": [
-      {
-        "name": "num_vars",
-        "type_name": "usize",
-        "description": "Number of binary variables"
-      },
-      {
-        "name": "matrix",
-        "type_name": "Vec<Vec<W>>",
-        "description": "Upper-triangular Q matrix"
-      }
-    ]
-  },
-  {
-    "name": "RuralPostman",
-    "description": "Find a circuit covering required edges with total length at most B (Rural Postman Problem)",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The underlying graph G=(V,E)"
-      },
-      {
-        "name": "edge_weights",
-        "type_name": "Vec<W>",
-        "description": "Edge lengths l(e) for each e in E"
-      },
-      {
-        "name": "required_edges",
-        "type_name": "Vec<usize>",
-        "description": "Edge indices of the required subset E' ⊆ E"
-      },
-      {
-        "name": "bound",
-        "type_name": "W::Sum",
-        "description": "Upper bound B on total circuit length"
-      }
-    ]
-  },
-  {
-    "name": "Satisfiability",
-    "description": "Find satisfying assignment for CNF formula",
-    "fields": [
-      {
-        "name": "num_vars",
-        "type_name": "usize",
-        "description": "Number of Boolean variables"
-      },
-      {
-        "name": "clauses",
-        "type_name": "Vec<CNFClause>",
-        "description": "Clauses in conjunctive normal form"
-      }
-    ]
-  },
-  {
-    "name": "SequencingWithinIntervals",
-    "description": "Schedule tasks non-overlappingly within their time windows",
-    "fields": [
-      {
-        "name": "release_times",
-        "type_name": "Vec<u64>",
-        "description": "Release time r(t) for each task"
-      },
-      {
-        "name": "deadlines",
-        "type_name": "Vec<u64>",
-        "description": "Deadline d(t) for each task"
-      },
-      {
-        "name": "lengths",
-        "type_name": "Vec<u64>",
-        "description": "Processing length l(t) for each task"
-      }
-    ]
-  },
-  {
-    "name": "SetBasis",
-    "description": "Determine whether a collection of sets admits a basis of size k under union",
-    "fields": [
-      {
-        "name": "universe_size",
-        "type_name": "usize",
-        "description": "Size of the ground set S"
-      },
-      {
-        "name": "collection",
-        "type_name": "Vec<Vec<usize>>",
-        "description": "Collection C of target subsets of S"
-      },
-      {
-        "name": "k",
-        "type_name": "usize",
-        "description": "Required number of basis sets"
-      }
-    ]
-  },
-  {
-    "name": "ShortestCommonSupersequence",
-    "description": "Find a common supersequence of bounded length for a set of strings",
-    "fields": [
-      {
-        "name": "alphabet_size",
-        "type_name": "usize",
-        "description": "Size of the alphabet"
-      },
-      {
-        "name": "strings",
-        "type_name": "Vec<Vec<usize>>",
-        "description": "Input strings over the alphabet {0, ..., alphabet_size-1}"
-      },
-      {
-        "name": "bound",
-        "type_name": "usize",
-        "description": "Bound on supersequence length (configuration has exactly this many symbols)"
-      }
-    ]
-  },
-  {
-    "name": "SpinGlass",
-    "description": "Minimize Ising Hamiltonian on a graph",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The interaction graph"
-      },
-      {
-        "name": "couplings",
-        "type_name": "Vec<W>",
-        "description": "Pairwise couplings J_ij"
-      },
-      {
-        "name": "fields",
-        "type_name": "Vec<W>",
-        "description": "On-site fields h_i"
-      }
-    ]
-  },
-  {
-    "name": "SteinerTree",
-    "description": "Find minimum weight tree connecting terminal vertices",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The underlying graph G=(V,E)"
-      },
-      {
-        "name": "edge_weights",
-        "type_name": "Vec<W>",
-        "description": "Edge weights w: E -> R"
-      },
-      {
-        "name": "terminals",
-        "type_name": "Vec<usize>",
-        "description": "Terminal vertices T that must be connected"
-      }
-    ]
-  },
-  {
-    "name": "StrongConnectivityAugmentation",
-    "description": "Add a bounded set of weighted candidate arcs to make a digraph strongly connected",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "DirectedGraph",
-        "description": "The initial directed graph G=(V,A)"
-      },
-      {
-        "name": "candidate_arcs",
-        "type_name": "Vec<(usize, usize, W)>",
-        "description": "Candidate augmenting arcs (u, v, w(u,v)) not already present in G"
-      },
-      {
-        "name": "bound",
-        "type_name": "W::Sum",
-        "description": "Upper bound B on the total added weight"
-      }
-    ]
-  },
-  {
-    "name": "SubgraphIsomorphism",
-    "description": "Determine if host graph G contains a subgraph isomorphic to pattern graph H",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "SimpleGraph",
-        "description": "The host graph G = (V_1, E_1) to search in"
-      },
-      {
-        "name": "pattern",
-        "type_name": "SimpleGraph",
-        "description": "The pattern graph H = (V_2, E_2) to find as a subgraph"
-      }
-    ]
-  },
-  {
-    "name": "SubsetSum",
-    "description": "Find a subset of positive integers that sums to exactly a target value",
-    "fields": [
-      {
-        "name": "sizes",
-        "type_name": "Vec<BigUint>",
-        "description": "Positive integer sizes s(a) for each element"
-      },
-      {
-        "name": "target",
-        "type_name": "BigUint",
-        "description": "Target sum B"
-      }
-    ]
-  },
-  {
-    "name": "TravelingSalesman",
-    "description": "Find minimum weight Hamiltonian cycle in a graph (Traveling Salesman Problem)",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "G",
-        "description": "The underlying graph G=(V,E)"
-      },
-      {
-        "name": "edge_weights",
-        "type_name": "Vec<W>",
-        "description": "Edge weights w: E -> R"
-      }
-    ]
-  },
-  {
-    "name": "UndirectedTwoCommodityIntegralFlow",
-    "description": "Determine whether two integral commodities can satisfy sink demands in an undirected capacitated graph",
-    "fields": [
-      {
-        "name": "graph",
-        "type_name": "SimpleGraph",
-        "description": "Undirected graph G=(V,E)"
-      },
-      {
-        "name": "capacities",
-        "type_name": "Vec<u64>",
-        "description": "Edge capacities c(e) in graph edge order"
-      },
-      {
-        "name": "source_1",
-        "type_name": "usize",
-        "description": "Source vertex s_1 for commodity 1"
-      },
-      {
-        "name": "sink_1",
-        "type_name": "usize",
-        "description": "Sink vertex t_1 for commodity 1"
-      },
-      {
-        "name": "source_2",
-        "type_name": "usize",
-        "description": "Source vertex s_2 for commodity 2"
-      },
-      {
-        "name": "sink_2",
-        "type_name": "usize",
-        "description": "Sink vertex t_2 for commodity 2"
-      },
-      {
-        "name": "requirement_1",
-        "type_name": "u64",
-        "description": "Required net inflow R_1 at sink t_1"
-      },
-      {
-        "name": "requirement_2",
-        "type_name": "u64",
-        "description": "Required net inflow R_2 at sink t_2"
-      }
-    ]
-  }
-]
\ No newline at end of file
diff --git a/docs/src/reductions/reduction_graph.json b/docs/src/reductions/reduction_graph.json
deleted file mode 100644
index eb6d01861..000000000
--- a/docs/src/reductions/reduction_graph.json
+++ /dev/null
@@ -1,1535 +0,0 @@
-{
-  "nodes": [
-    {
-      "name": "BMF",
-      "variant": {},
-      "category": "algebraic",
-      "doc_path": "models/algebraic/struct.BMF.html",
-      "complexity": "2^(rows * rank + rank * cols)"
-    },
-    {
-      "name": "BalancedCompleteBipartiteSubgraph",
-      "variant": {},
-      "category": "graph",
-      "doc_path": "models/graph/struct.BalancedCompleteBipartiteSubgraph.html",
-      "complexity": "1.3803^num_vertices"
-    },
-    {
-      "name": "BicliqueCover",
-      "variant": {},
-      "category": "graph",
-      "doc_path": "models/graph/struct.BicliqueCover.html",
-      "complexity": "2^num_vertices"
-    },
-    {
-      "name": "BiconnectivityAugmentation",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.BiconnectivityAugmentation.html",
-      "complexity": "2^num_potential_edges"
-    },
-    {
-      "name": "BinPacking",
-      "variant": {
-        "weight": "f64"
-      },
-      "category": "misc",
-      "doc_path": "models/misc/struct.BinPacking.html",
-      "complexity": "2^num_items"
-    },
-    {
-      "name": "BinPacking",
-      "variant": {
-        "weight": "i32"
-      },
-      "category": "misc",
-      "doc_path": "models/misc/struct.BinPacking.html",
-      "complexity": "2^num_items"
-    },
-    {
-      "name": "BoundedComponentSpanningForest",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.BoundedComponentSpanningForest.html",
-      "complexity": "3^num_vertices"
-    },
-    {
-      "name": "CircuitSAT",
-      "variant": {},
-      "category": "formula",
-      "doc_path": "models/formula/struct.CircuitSAT.html",
-      "complexity": "2^num_variables"
-    },
-    {
-      "name": "ClosestVectorProblem",
-      "variant": {
-        "weight": "f64"
-      },
-      "category": "algebraic",
-      "doc_path": "models/algebraic/struct.ClosestVectorProblem.html",
-      "complexity": "2^num_basis_vectors"
-    },
-    {
-      "name": "ClosestVectorProblem",
-      "variant": {
-        "weight": "i32"
-      },
-      "category": "algebraic",
-      "doc_path": "models/algebraic/struct.ClosestVectorProblem.html",
-      "complexity": "2^num_basis_vectors"
-    },
-    {
-      "name": "ComparativeContainment",
-      "variant": {
-        "weight": "One"
-      },
-      "category": "set",
-      "doc_path": "models/set/struct.ComparativeContainment.html",
-      "complexity": "2^universe_size"
-    },
-    {
-      "name": "ComparativeContainment",
-      "variant": {
-        "weight": "f64"
-      },
-      "category": "set",
-      "doc_path": "models/set/struct.ComparativeContainment.html",
-      "complexity": "2^universe_size"
-    },
-    {
-      "name": "ComparativeContainment",
-      "variant": {
-        "weight": "i32"
-      },
-      "category": "set",
-      "doc_path": "models/set/struct.ComparativeContainment.html",
-      "complexity": "2^universe_size"
-    },
-    {
-      "name": "DirectedTwoCommodityIntegralFlow",
-      "variant": {},
-      "category": "graph",
-      "doc_path": "models/graph/struct.DirectedTwoCommodityIntegralFlow.html",
-      "complexity": "(max_capacity + 1)^(2 * num_arcs)"
-    },
-    {
-      "name": "ExactCoverBy3Sets",
-      "variant": {},
-      "category": "set",
-      "doc_path": "models/set/struct.ExactCoverBy3Sets.html",
-      "complexity": "2^universe_size"
-    },
-    {
-      "name": "Factoring",
-      "variant": {},
-      "category": "misc",
-      "doc_path": "models/misc/struct.Factoring.html",
-      "complexity": "exp((m + n)^(1/3) * log(m + n)^(2/3))"
-    },
-    {
-      "name": "FlowShopScheduling",
-      "variant": {},
-      "category": "misc",
-      "doc_path": "models/misc/struct.FlowShopScheduling.html",
-      "complexity": "factorial(num_jobs)"
-    },
-    {
-      "name": "GraphPartitioning",
-      "variant": {
-        "graph": "SimpleGraph"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.GraphPartitioning.html",
-      "complexity": "2^num_vertices"
-    },
-    {
-      "name": "HamiltonianPath",
-      "variant": {
-        "graph": "SimpleGraph"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.HamiltonianPath.html",
-      "complexity": "1.657^num_vertices"
-    },
-    {
-      "name": "ILP",
-      "variant": {
-        "variable": "bool"
-      },
-      "category": "algebraic",
-      "doc_path": "models/algebraic/struct.ILP.html",
-      "complexity": "2^num_vars"
-    },
-    {
-      "name": "ILP",
-      "variant": {
-        "variable": "i32"
-      },
-      "category": "algebraic",
-      "doc_path": "models/algebraic/struct.ILP.html",
-      "complexity": "num_vars^num_vars"
-    },
-    {
-      "name": "IsomorphicSpanningTree",
-      "variant": {},
-      "category": "graph",
-      "doc_path": "models/graph/struct.IsomorphicSpanningTree.html",
-      "complexity": "factorial(num_vertices)"
-    },
-    {
-      "name": "KColoring",
-      "variant": {
-        "graph": "SimpleGraph",
-        "k": "K2"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.KColoring.html",
-      "complexity": "num_vertices + num_edges"
-    },
-    {
-      "name": "KColoring",
-      "variant": {
-        "graph": "SimpleGraph",
-        "k": "K3"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.KColoring.html",
-      "complexity": "1.3289^num_vertices"
-    },
-    {
-      "name": "KColoring",
-      "variant": {
-        "graph": "SimpleGraph",
-        "k": "K4"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.KColoring.html",
-      "complexity": "1.7159^num_vertices"
-    },
-    {
-      "name": "KColoring",
-      "variant": {
-        "graph": "SimpleGraph",
-        "k": "K5"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.KColoring.html",
-      "complexity": "2^num_vertices"
-    },
-    {
-      "name": "KColoring",
-      "variant": {
-        "graph": "SimpleGraph",
-        "k": "KN"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.KColoring.html",
-      "complexity": "2^num_vertices"
-    },
-    {
-      "name": "KSatisfiability",
-      "variant": {
-        "k": "K2"
-      },
-      "category": "formula",
-      "doc_path": "models/formula/struct.KSatisfiability.html",
-      "complexity": "num_variables + num_clauses"
-    },
-    {
-      "name": "KSatisfiability",
-      "variant": {
-        "k": "K3"
-      },
-      "category": "formula",
-      "doc_path": "models/formula/struct.KSatisfiability.html",
-      "complexity": "1.307^num_variables"
-    },
-    {
-      "name": "KSatisfiability",
-      "variant": {
-        "k": "KN"
-      },
-      "category": "formula",
-      "doc_path": "models/formula/struct.KSatisfiability.html",
-      "complexity": "2^num_variables"
-    },
-    {
-      "name": "Knapsack",
-      "variant": {},
-      "category": "misc",
-      "doc_path": "models/misc/struct.Knapsack.html",
-      "complexity": "2^(num_items / 2)"
-    },
-    {
-      "name": "LengthBoundedDisjointPaths",
-      "variant": {
-        "graph": "SimpleGraph"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.LengthBoundedDisjointPaths.html",
-      "complexity": "2^(num_paths_required * num_vertices)"
-    },
-    {
-      "name": "LongestCommonSubsequence",
-      "variant": {},
-      "category": "misc",
-      "doc_path": "models/misc/struct.LongestCommonSubsequence.html",
-      "complexity": "2^min_string_length"
-    },
-    {
-      "name": "MaxCut",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MaxCut.html",
-      "complexity": "2^(2.372 * num_vertices / 3)"
-    },
-    {
-      "name": "MaximalIS",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MaximalIS.html",
-      "complexity": "3^(num_vertices / 3)"
-    },
-    {
-      "name": "MaximumClique",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MaximumClique.html",
-      "complexity": "1.1996^num_vertices"
-    },
-    {
-      "name": "MaximumIndependentSet",
-      "variant": {
-        "graph": "KingsSubgraph",
-        "weight": "One"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MaximumIndependentSet.html",
-      "complexity": "2^sqrt(num_vertices)"
-    },
-    {
-      "name": "MaximumIndependentSet",
-      "variant": {
-        "graph": "KingsSubgraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MaximumIndependentSet.html",
-      "complexity": "2^sqrt(num_vertices)"
-    },
-    {
-      "name": "MaximumIndependentSet",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "One"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MaximumIndependentSet.html",
-      "complexity": "1.1996^num_vertices"
-    },
-    {
-      "name": "MaximumIndependentSet",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MaximumIndependentSet.html",
-      "complexity": "1.1996^num_vertices"
-    },
-    {
-      "name": "MaximumIndependentSet",
-      "variant": {
-        "graph": "TriangularSubgraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MaximumIndependentSet.html",
-      "complexity": "2^sqrt(num_vertices)"
-    },
-    {
-      "name": "MaximumIndependentSet",
-      "variant": {
-        "graph": "UnitDiskGraph",
-        "weight": "One"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MaximumIndependentSet.html",
-      "complexity": "2^sqrt(num_vertices)"
-    },
-    {
-      "name": "MaximumIndependentSet",
-      "variant": {
-        "graph": "UnitDiskGraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MaximumIndependentSet.html",
-      "complexity": "2^sqrt(num_vertices)"
-    },
-    {
-      "name": "MaximumMatching",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MaximumMatching.html",
-      "complexity": "num_vertices^3"
-    },
-    {
-      "name": "MaximumSetPacking",
-      "variant": {
-        "weight": "One"
-      },
-      "category": "set",
-      "doc_path": "models/set/struct.MaximumSetPacking.html",
-      "complexity": "2^num_sets"
-    },
-    {
-      "name": "MaximumSetPacking",
-      "variant": {
-        "weight": "f64"
-      },
-      "category": "set",
-      "doc_path": "models/set/struct.MaximumSetPacking.html",
-      "complexity": "2^num_sets"
-    },
-    {
-      "name": "MaximumSetPacking",
-      "variant": {
-        "weight": "i32"
-      },
-      "category": "set",
-      "doc_path": "models/set/struct.MaximumSetPacking.html",
-      "complexity": "2^num_sets"
-    },
-    {
-      "name": "MinimumDominatingSet",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MinimumDominatingSet.html",
-      "complexity": "1.4969^num_vertices"
-    },
-    {
-      "name": "MinimumFeedbackArcSet",
-      "variant": {
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MinimumFeedbackArcSet.html",
-      "complexity": "2^num_vertices"
-    },
-    {
-      "name": "MinimumFeedbackVertexSet",
-      "variant": {
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MinimumFeedbackVertexSet.html",
-      "complexity": "1.9977^num_vertices"
-    },
-    {
-      "name": "MinimumMultiwayCut",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MinimumMultiwayCut.html",
-      "complexity": "1.84^num_terminals * num_vertices^3"
-    },
-    {
-      "name": "MinimumSetCovering",
-      "variant": {
-        "weight": "i32"
-      },
-      "category": "set",
-      "doc_path": "models/set/struct.MinimumSetCovering.html",
-      "complexity": "2^num_sets"
-    },
-    {
-      "name": "MinimumSumMulticenter",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MinimumSumMulticenter.html",
-      "complexity": "2^num_vertices"
-    },
-    {
-      "name": "MinimumTardinessSequencing",
-      "variant": {},
-      "category": "misc",
-      "doc_path": "models/misc/struct.MinimumTardinessSequencing.html",
-      "complexity": "2^num_tasks"
-    },
-    {
-      "name": "MinimumVertexCover",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MinimumVertexCover.html",
-      "complexity": "1.1996^num_vertices"
-    },
-    {
-      "name": "MultipleChoiceBranching",
-      "variant": {
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.MultipleChoiceBranching.html",
-      "complexity": "2^num_arcs"
-    },
-    {
-      "name": "OptimalLinearArrangement",
-      "variant": {
-        "graph": "SimpleGraph"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.OptimalLinearArrangement.html",
-      "complexity": "2^num_vertices"
-    },
-    {
-      "name": "PaintShop",
-      "variant": {},
-      "category": "misc",
-      "doc_path": "models/misc/struct.PaintShop.html",
-      "complexity": "2^num_cars"
-    },
-    {
-      "name": "PartitionIntoTriangles",
-      "variant": {
-        "graph": "SimpleGraph"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.PartitionIntoTriangles.html",
-      "complexity": "2^num_vertices"
-    },
-    {
-      "name": "QUBO",
-      "variant": {
-        "weight": "f64"
-      },
-      "category": "algebraic",
-      "doc_path": "models/algebraic/struct.QUBO.html",
-      "complexity": "2^num_vars"
-    },
-    {
-      "name": "RuralPostman",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.RuralPostman.html",
-      "complexity": "2^num_vertices * num_vertices^2"
-    },
-    {
-      "name": "Satisfiability",
-      "variant": {},
-      "category": "formula",
-      "doc_path": "models/formula/struct.Satisfiability.html",
-      "complexity": "2^num_variables"
-    },
-    {
-      "name": "SequencingWithinIntervals",
-      "variant": {},
-      "category": "misc",
-      "doc_path": "models/misc/struct.SequencingWithinIntervals.html",
-      "complexity": "2^num_tasks"
-    },
-    {
-      "name": "SetBasis",
-      "variant": {},
-      "category": "set",
-      "doc_path": "models/set/struct.SetBasis.html",
-      "complexity": "2^(basis_size * universe_size)"
-    },
-    {
-      "name": "ShortestCommonSupersequence",
-      "variant": {},
-      "category": "misc",
-      "doc_path": "models/misc/struct.ShortestCommonSupersequence.html",
-      "complexity": "alphabet_size ^ bound"
-    },
-    {
-      "name": "SpinGlass",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "f64"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.SpinGlass.html",
-      "complexity": "2^num_spins"
-    },
-    {
-      "name": "SpinGlass",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.SpinGlass.html",
-      "complexity": "2^num_spins"
-    },
-    {
-      "name": "SteinerTree",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "One"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.SteinerTree.html",
-      "complexity": "3^num_terminals * num_vertices + 2^num_terminals * num_vertices^2"
-    },
-    {
-      "name": "SteinerTree",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.SteinerTree.html",
-      "complexity": "3^num_terminals * num_vertices + 2^num_terminals * num_vertices^2"
-    },
-    {
-      "name": "StrongConnectivityAugmentation",
-      "variant": {
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.StrongConnectivityAugmentation.html",
-      "complexity": "2^num_potential_arcs"
-    },
-    {
-      "name": "SubgraphIsomorphism",
-      "variant": {},
-      "category": "graph",
-      "doc_path": "models/graph/struct.SubgraphIsomorphism.html",
-      "complexity": "num_host_vertices ^ num_pattern_vertices"
-    },
-    {
-      "name": "SubsetSum",
-      "variant": {},
-      "category": "misc",
-      "doc_path": "models/misc/struct.SubsetSum.html",
-      "complexity": "2^(num_elements / 2)"
-    },
-    {
-      "name": "TravelingSalesman",
-      "variant": {
-        "graph": "SimpleGraph",
-        "weight": "i32"
-      },
-      "category": "graph",
-      "doc_path": "models/graph/struct.TravelingSalesman.html",
-      "complexity": "2^num_vertices"
-    },
-    {
-      "name": "UndirectedTwoCommodityIntegralFlow",
-      "variant": {},
-      "category": "graph",
-      "doc_path": "models/graph/struct.UndirectedTwoCommodityIntegralFlow.html",
-      "complexity": "5^num_edges"
-    }
-  ],
-  "edges": [
-    {
-      "source": 5,
-      "target": 19,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_items * num_items + num_items"
-        },
-        {
-          "field": "num_constraints",
-          "formula": "2 * num_items"
-        }
-      ],
-      "doc_path": "rules/binpacking_ilp/index.html"
-    },
-    {
-      "source": 7,
-      "target": 19,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_variables + num_assignments"
-        },
-        {
-          "field": "num_constraints",
-          "formula": "num_variables + num_assignments"
-        }
-      ],
-      "doc_path": "rules/circuit_ilp/index.html"
-    },
-    {
-      "source": 7,
-      "target": 66,
-      "overhead": [
-        {
-          "field": "num_spins",
-          "formula": "num_assignments"
-        },
-        {
-          "field": "num_interactions",
-          "formula": "num_assignments"
-        }
-      ],
-      "doc_path": "rules/circuit_spinglass/index.html"
-    },
-    {
-      "source": 15,
-      "target": 7,
-      "overhead": [
-        {
-          "field": "num_variables",
-          "formula": "6 * num_bits_first * num_bits_second + num_bits_first + num_bits_second"
-        },
-        {
-          "field": "num_assignments",
-          "formula": "6 * num_bits_first * num_bits_second + num_bits_first + num_bits_second"
-        }
-      ],
-      "doc_path": "rules/factoring_circuit/index.html"
-    },
-    {
-      "source": 15,
-      "target": 20,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_bits_first * num_bits_second"
-        },
-        {
-          "field": "num_constraints",
-          "formula": "num_bits_first * num_bits_second"
-        }
-      ],
-      "doc_path": "rules/factoring_ilp/index.html"
-    },
-    {
-      "source": 19,
-      "target": 20,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_vars"
-        },
-        {
-          "field": "num_constraints",
-          "formula": "num_constraints + num_vars"
-        }
-      ],
-      "doc_path": "rules/ilp_bool_ilp_i32/index.html"
-    },
-    {
-      "source": 19,
-      "target": 59,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_vars + num_constraints * num_vars"
-        }
-      ],
-      "doc_path": "rules/ilp_qubo/index.html"
-    },
-    {
-      "source": 23,
-      "target": 26,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_edges"
-        }
-      ],
-      "doc_path": "rules/kcoloring_casts/index.html"
-    },
-    {
-      "source": 26,
-      "target": 19,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_vertices^2"
-        },
-        {
-          "field": "num_constraints",
-          "formula": "num_vertices + num_vertices * num_edges"
-        }
-      ],
-      "doc_path": "rules/coloring_ilp/index.html"
-    },
-    {
-      "source": 26,
-      "target": 59,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_vertices^2"
-        }
-      ],
-      "doc_path": "rules/coloring_qubo/index.html"
-    },
-    {
-      "source": 27,
-      "target": 29,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_vars"
-        },
-        {
-          "field": "num_clauses",
-          "formula": "num_clauses"
-        }
-      ],
-      "doc_path": "rules/ksatisfiability_casts/index.html"
-    },
-    {
-      "source": 27,
-      "target": 59,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_vars"
-        }
-      ],
-      "doc_path": "rules/ksatisfiability_qubo/index.html"
-    },
-    {
-      "source": 28,
-      "target": 29,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_vars"
-        },
-        {
-          "field": "num_clauses",
-          "formula": "num_clauses"
-        }
-      ],
-      "doc_path": "rules/ksatisfiability_casts/index.html"
-    },
-    {
-      "source": 28,
-      "target": 59,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_vars + num_clauses"
-        }
-      ],
-      "doc_path": "rules/ksatisfiability_qubo/index.html"
-    },
-    {
-      "source": 28,
-      "target": 71,
-      "overhead": [
-        {
-          "field": "num_elements",
-          "formula": "2 * num_vars + 2 * num_clauses"
-        }
-      ],
-      "doc_path": "rules/ksatisfiability_subsetsum/index.html"
-    },
-    {
-      "source": 29,
-      "target": 61,
-      "overhead": [
-        {
-          "field": "num_clauses",
-          "formula": "num_clauses"
-        },
-        {
-          "field": "num_vars",
-          "formula": "num_vars"
-        },
-        {
-          "field": "num_literals",
-          "formula": "num_literals"
-        }
-      ],
-      "doc_path": "rules/sat_ksat/index.html"
-    },
-    {
-      "source": 30,
-      "target": 59,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_items + num_slack_bits"
-        }
-      ],
-      "doc_path": "rules/knapsack_qubo/index.html"
-    },
-    {
-      "source": 32,
-      "target": 19,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_chars_first * num_chars_second"
-        },
-        {
-          "field": "num_constraints",
-          "formula": "num_chars_first + num_chars_second + (num_chars_first * num_chars_second)^2"
-        }
-      ],
-      "doc_path": "rules/longestcommonsubsequence_ilp/index.html"
-    },
-    {
-      "source": 33,
-      "target": 66,
-      "overhead": [
-        {
-          "field": "num_spins",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "num_interactions",
-          "formula": "num_edges"
-        }
-      ],
-      "doc_path": "rules/spinglass_maxcut/index.html"
-    },
-    {
-      "source": 35,
-      "target": 19,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "num_constraints",
-          "formula": "num_vertices^2"
-        }
-      ],
-      "doc_path": "rules/maximumclique_ilp/index.html"
-    },
-    {
-      "source": 35,
-      "target": 39,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_vertices * (num_vertices + -1 * 1) * 2^-1 + -1 * num_edges"
-        }
-      ],
-      "doc_path": "rules/maximumclique_maximumindependentset/index.html"
-    },
-    {
-      "source": 36,
-      "target": 37,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_edges"
-        }
-      ],
-      "doc_path": "rules/maximumindependentset_casts/index.html"
-    },
-    {
-      "source": 36,
-      "target": 41,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_edges"
-        }
-      ],
-      "doc_path": "rules/maximumindependentset_casts/index.html"
-    },
-    {
-      "source": 37,
-      "target": 42,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_edges"
-        }
-      ],
-      "doc_path": "rules/maximumindependentset_casts/index.html"
-    },
-    {
-      "source": 38,
-      "target": 36,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_vertices * num_vertices"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_vertices * num_vertices"
-        }
-      ],
-      "doc_path": "rules/maximumindependentset_gridgraph/index.html"
-    },
-    {
-      "source": 38,
-      "target": 39,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_edges"
-        }
-      ],
-      "doc_path": "rules/maximumindependentset_casts/index.html"
-    },
-    {
-      "source": 38,
-      "target": 40,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_vertices * num_vertices"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_vertices * num_vertices"
-        }
-      ],
-      "doc_path": "rules/maximumindependentset_triangular/index.html"
-    },
-    {
-      "source": 38,
-      "target": 44,
-      "overhead": [
-        {
-          "field": "num_sets",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "universe_size",
-          "formula": "num_edges"
-        }
-      ],
-      "doc_path": "rules/maximumindependentset_maximumsetpacking/index.html"
-    },
-    {
-      "source": 39,
-      "target": 35,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_vertices * (num_vertices + -1 * 1) * 2^-1 + -1 * num_edges"
-        }
-      ],
-      "doc_path": "rules/maximumindependentset_maximumclique/index.html"
-    },
-    {
-      "source": 39,
-      "target": 46,
-      "overhead": [
-        {
-          "field": "num_sets",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "universe_size",
-          "formula": "num_edges"
-        }
-      ],
-      "doc_path": "rules/maximumindependentset_maximumsetpacking/index.html"
-    },
-    {
-      "source": 39,
-      "target": 54,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_edges"
-        }
-      ],
-      "doc_path": "rules/minimumvertexcover_maximumindependentset/index.html"
-    },
-    {
-      "source": 40,
-      "target": 42,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_edges"
-        }
-      ],
-      "doc_path": "rules/maximumindependentset_casts/index.html"
-    },
-    {
-      "source": 41,
-      "target": 38,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_edges"
-        }
-      ],
-      "doc_path": "rules/maximumindependentset_casts/index.html"
-    },
-    {
-      "source": 41,
-      "target": 42,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_edges"
-        }
-      ],
-      "doc_path": "rules/maximumindependentset_casts/index.html"
-    },
-    {
-      "source": 42,
-      "target": 39,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_edges"
-        }
-      ],
-      "doc_path": "rules/maximumindependentset_casts/index.html"
-    },
-    {
-      "source": 43,
-      "target": 19,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_edges"
-        },
-        {
-          "field": "num_constraints",
-          "formula": "num_vertices"
-        }
-      ],
-      "doc_path": "rules/maximummatching_ilp/index.html"
-    },
-    {
-      "source": 43,
-      "target": 46,
-      "overhead": [
-        {
-          "field": "num_sets",
-          "formula": "num_edges"
-        },
-        {
-          "field": "universe_size",
-          "formula": "num_vertices"
-        }
-      ],
-      "doc_path": "rules/maximummatching_maximumsetpacking/index.html"
-    },
-    {
-      "source": 44,
-      "target": 38,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_sets"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_sets^2"
-        }
-      ],
-      "doc_path": "rules/maximumindependentset_maximumsetpacking/index.html"
-    },
-    {
-      "source": 44,
-      "target": 46,
-      "overhead": [
-        {
-          "field": "num_sets",
-          "formula": "num_sets"
-        },
-        {
-          "field": "universe_size",
-          "formula": "universe_size"
-        }
-      ],
-      "doc_path": "rules/maximumsetpacking_casts/index.html"
-    },
-    {
-      "source": 45,
-      "target": 59,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_sets"
-        }
-      ],
-      "doc_path": "rules/maximumsetpacking_qubo/index.html"
-    },
-    {
-      "source": 46,
-      "target": 19,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_sets"
-        },
-        {
-          "field": "num_constraints",
-          "formula": "universe_size"
-        }
-      ],
-      "doc_path": "rules/maximumsetpacking_ilp/index.html"
-    },
-    {
-      "source": 46,
-      "target": 39,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_sets"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_sets^2"
-        }
-      ],
-      "doc_path": "rules/maximumindependentset_maximumsetpacking/index.html"
-    },
-    {
-      "source": 46,
-      "target": 45,
-      "overhead": [
-        {
-          "field": "num_sets",
-          "formula": "num_sets"
-        },
-        {
-          "field": "universe_size",
-          "formula": "universe_size"
-        }
-      ],
-      "doc_path": "rules/maximumsetpacking_casts/index.html"
-    },
-    {
-      "source": 47,
-      "target": 19,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "num_constraints",
-          "formula": "num_vertices"
-        }
-      ],
-      "doc_path": "rules/minimumdominatingset_ilp/index.html"
-    },
-    {
-      "source": 49,
-      "target": 20,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "2 * num_vertices"
-        },
-        {
-          "field": "num_constraints",
-          "formula": "num_arcs + 2 * num_vertices"
-        }
-      ],
-      "doc_path": "rules/minimumfeedbackvertexset_ilp/index.html"
-    },
-    {
-      "source": 50,
-      "target": 59,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_terminals * num_vertices"
-        }
-      ],
-      "doc_path": "rules/minimummultiwaycut_qubo/index.html"
-    },
-    {
-      "source": 51,
-      "target": 19,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_sets"
-        },
-        {
-          "field": "num_constraints",
-          "formula": "universe_size"
-        }
-      ],
-      "doc_path": "rules/minimumsetcovering_ilp/index.html"
-    },
-    {
-      "source": 54,
-      "target": 39,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_edges"
-        }
-      ],
-      "doc_path": "rules/minimumvertexcover_maximumindependentset/index.html"
-    },
-    {
-      "source": 54,
-      "target": 51,
-      "overhead": [
-        {
-          "field": "num_sets",
-          "formula": "num_vertices"
-        },
-        {
-          "field": "universe_size",
-          "formula": "num_edges"
-        }
-      ],
-      "doc_path": "rules/minimumvertexcover_minimumsetcovering/index.html"
-    },
-    {
-      "source": 59,
-      "target": 19,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_vars^2"
-        },
-        {
-          "field": "num_constraints",
-          "formula": "num_vars^2"
-        }
-      ],
-      "doc_path": "rules/qubo_ilp/index.html"
-    },
-    {
-      "source": 59,
-      "target": 65,
-      "overhead": [
-        {
-          "field": "num_spins",
-          "formula": "num_vars"
-        }
-      ],
-      "doc_path": "rules/spinglass_qubo/index.html"
-    },
-    {
-      "source": 61,
-      "target": 7,
-      "overhead": [
-        {
-          "field": "num_variables",
-          "formula": "num_vars + num_clauses + 1"
-        },
-        {
-          "field": "num_assignments",
-          "formula": "num_clauses + 2"
-        }
-      ],
-      "doc_path": "rules/sat_circuitsat/index.html"
-    },
-    {
-      "source": 61,
-      "target": 23,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_vars + num_literals"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_vars + num_literals"
-        }
-      ],
-      "doc_path": "rules/sat_coloring/index.html"
-    },
-    {
-      "source": 61,
-      "target": 28,
-      "overhead": [
-        {
-          "field": "num_clauses",
-          "formula": "4 * num_clauses + num_literals"
-        },
-        {
-          "field": "num_vars",
-          "formula": "num_vars + 3 * num_clauses + num_literals"
-        }
-      ],
-      "doc_path": "rules/sat_ksat/index.html"
-    },
-    {
-      "source": 61,
-      "target": 38,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_literals"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_literals^2"
-        }
-      ],
-      "doc_path": "rules/sat_maximumindependentset/index.html"
-    },
-    {
-      "source": 61,
-      "target": 47,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "3 * num_vars + num_clauses"
-        },
-        {
-          "field": "num_edges",
-          "formula": "3 * num_vars + num_literals"
-        }
-      ],
-      "doc_path": "rules/sat_minimumdominatingset/index.html"
-    },
-    {
-      "source": 65,
-      "target": 59,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_spins"
-        }
-      ],
-      "doc_path": "rules/spinglass_qubo/index.html"
-    },
-    {
-      "source": 66,
-      "target": 33,
-      "overhead": [
-        {
-          "field": "num_vertices",
-          "formula": "num_spins"
-        },
-        {
-          "field": "num_edges",
-          "formula": "num_interactions"
-        }
-      ],
-      "doc_path": "rules/spinglass_maxcut/index.html"
-    },
-    {
-      "source": 66,
-      "target": 65,
-      "overhead": [
-        {
-          "field": "num_spins",
-          "formula": "num_spins"
-        },
-        {
-          "field": "num_interactions",
-          "formula": "num_interactions"
-        }
-      ],
-      "doc_path": "rules/spinglass_casts/index.html"
-    },
-    {
-      "source": 72,
-      "target": 19,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_vertices^2 + 2 * num_vertices * num_edges"
-        },
-        {
-          "field": "num_constraints",
-          "formula": "num_vertices^3 + -1 * 1 * num_vertices^2 + 2 * num_vertices + 4 * num_vertices * num_edges"
-        }
-      ],
-      "doc_path": "rules/travelingsalesman_ilp/index.html"
-    },
-    {
-      "source": 72,
-      "target": 59,
-      "overhead": [
-        {
-          "field": "num_vars",
-          "formula": "num_vertices^2"
-        }
-      ],
-      "doc_path": "rules/travelingsalesman_qubo/index.html"
-    }
-  ]
-}
\ No newline at end of file
diff --git a/src/example_db/fixtures/examples.json b/src/example_db/fixtures/examples.json
deleted file mode 100644
index 75e16f6a2..000000000
--- a/src/example_db/fixtures/examples.json
+++ /dev/null
@@ -1,94 +0,0 @@
-{
-  "models": [
-    {"problem":"BMF","variant":{},"instance":{"k":2,"m":3,"matrix":[[true,true,false],[true,true,true],[false,true,true]],"n":3},"samples":[{"config":[1,0,1,1,0,1,1,1,0,0,1,1],"metric":{"Valid":0}}],"optimal":[{"config":[0,1,1,1,1,0,0,1,1,1,1,0],"metric":{"Valid":0}},{"config":[1,0,1,1,0,1,1,1,0,0,1,1],"metric":{"Valid":0}}]},
-    {"problem":"BalancedCompleteBipartiteSubgraph","variant":{},"instance":{"graph":{"edges":[[0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0],[2,1],[2,2],[3,0],[3,1],[3,3]],"left_size":4,"right_size":4},"k":3},"samples":[{"config":[1,1,1,0,1,1,1,0],"metric":true}],"optimal":[{"config":[1,1,1,0,1,1,1,0],"metric":true}]},
-    {"problem":"BicliqueCover","variant":{},"instance":{"graph":{"edges":[[0,0],[0,1],[1,1],[1,2]],"left_size":2,"right_size":3},"k":2},"samples":[{"config":[1,0,0,1,1,0,1,1,0,1],"metric":{"Valid":6}}],"optimal":[{"config":[0,1,0,1,0,1,0,1,0,1],"metric":{"Valid":5}},{"config":[1,0,1,0,1,0,1,0,1,0],"metric":{"Valid":5}}]},
-    {"problem":"BiconnectivityAugmentation","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"budget":4,"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[1,2,null],[2,3,null],[3,4,null],[4,5,null]],"node_holes":[],"nodes":[null,null,null,null,null,null]}},"potential_weights":[[0,2,1],[0,3,2],[0,4,3],[1,3,1],[1,4,2],[1,5,3],[2,4,1],[2,5,2],[3,5,1]]},"samples":[{"config":[1,0,0,1,0,0,1,0,1],"metric":true}],"optimal":[{"config":[0,0,1,0,0,0,0,0,1],"metric":true},{"config":[0,1,0,0,0,0,0,1,0],"metric":true},{"config":[0,1,0,0,0,0,1,0,1],"metric":true},{"config":[1,0,0,0,0,1,0,0,0],"metric":true},{"config":[1,0,0,0,1,0,0,0,1],"metric":true},{"config":[1,0,0,1,0,0,0,1,0],"metric":true},{"config":[1,0,0,1,0,0,1,0,1],"metric":true}]},
-    {"problem":"BoundedComponentSpanningForest","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[1,2,null],[2,3,null],[3,4,null],[4,5,null],[5,6,null],[6,7,null],[0,7,null],[1,5,null],[2,6,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null]}},"max_components":3,"max_weight":6,"weights":[2,3,1,2,3,1,2,1]},"samples":[{"config":[0,0,1,1,1,2,2,0],"metric":true}],"optimal":[{"config":[0,0,0,1,1,1,2,2],"metric":true},{"config":[0,0,0,1,1,2,2,2],"metric":true},{"config":[0,0,0,2,2,1,1,1],"metric":true},{"config":[0,0,0,2,2,2,1,1],"metric":true},{"config":[0,0,1,1,1,0,2,2],"metric":true},{"config":[0,0,1,1,1,2,2,0],"metric":true},{"config":[0,0,1,1,1,2,2,2],"metric":true},{"config":[0,0,1,1,2,0,1,1],"metric":true},{"config":[0,0,1,1,2,1,1,0],"metric":true},{"config":[0,0,1,1,2,2,1,0],"metric":true},{"config":[0,0,1,1,2,2,1,1],"metric":true},{"config":[0,0,1,1,2,2,2,0],"metric":true},{"config":[0,0,1,2,2,0,1,1],"metric":true},{"config":[0,0,1,2,2,1,1,0],"metric":true},{"config":[0,0,1,2,2,1,1,1],"metric":true},{"config":[0,0,1,2,2,2,1,0],"metric":true},{"config":[0,0,1,2,2,2,1,1],"metric":true},{"config":[0,0,2,1,1,0,2,2],"metric":true},{"config":[0,0,2,1,1,1,2,0],"metric":true},{"config":[0,0,2,1,1,1,2,2],"metric":true},{"config":[0,0,2,1,1,2,2,0],"metric":true},{"config":[0,0,2,1,1,2,2,2],"metric":true},{"config":[0,0,2,2,1,0,2,2],"metric":true},{"config":[0,0,2,2,1,1,1,0],"metric":true},{"config":[0,0,2,2,1,1,2,0],"metric":true},{"config":[0,0,2,2,1,1,2,2],"metric":true},{"config":[0,0,2,2,1,2,2,0],"metric":true},{"config":[0,0,2,2,2,0,1,1],"metric":true},{"config":[0,0,2,2,2,1,1,0],"metric":true},{"config":[0,0,2,2,2,1,1,1],"metric":true},{"config":[0,1,0,2,2,1,0,0],"metric":true},{"config":[0,1,0,2,2,2,0,0],"metric":true},{"config":[0,1,1,1,2,0,0,0],"metric":true},{"config":[0,1,1,1,2,2,0,0],"metric":true},{"config":[0,1,1,1,2,2,2,0],"metric":true},{"config":[0,1,1,2,2,0,0,0],"metric":true},{"config":[0,1,1,2,2,1,0,0],"metric":true},{"config":[0,1,1,2,2,2,0,0],"metric":true},{"config":[0,1,1,2,2,2,1,0],"metric":true},{"config":[0,1,2,2,2,0,0,0],"metric":true},{"config":[0,1,2,2,2,1,0,0],"metric":true},{"config":[0,1,2,2,2,1,1,0],"metric":true},{"config":[0,2,0,1,1,1,0,0],"metric":true},{"config":[0,2,0,1,1,2,0,0],"metric":true},{"config":[0,2,1,1,1,0,0,0],"metric":true},{"config":[0,2,1,1,1,2,0,0],"metric":true},{"config":[0,2,1,1,1,2,2,0],"metric":true},{"config":[0,2,2,1,1,0,0,0],"metric":true},{"config":[0,2,2,1,1,1,0,0],"metric":true},{"config":[0,2,2,1,1,1,2,0],"metric":true},{"config":[0,2,2,1,1,2,0,0],"metric":true},{"config":[0,2,2,2,1,0,0,0],"metric":true},{"config":[0,2,2,2,1,1,0,0],"metric":true},{"config":[0,2,2,2,1,1,1,0],"metric":true},{"config":[1,0,0,0,2,1,1,1],"metric":true},{"config":[1,0,0,0,2,2,1,1],"metric":true},{"config":[1,0,0,0,2,2,2,1],"metric":true},{"config":[1,0,0,2,2,0,1,1],"metric":true},{"config":[1,0,0,2,2,1,1,1],"metric":true},{"config":[1,0,0,2,2,2,0,1],"metric":true},{"config":[1,0,0,2,2,2,1,1],"metric":true},{"config":[1,0,1,2,2,0,1,1],"metric":true},{"config":[1,0,1,2,2,2,1,1],"metric":true},{"config":[1,0,2,2,2,0,0,1],"metric":true},{"config":[1,0,2,2,2,0,1,1],"metric":true},{"config":[1,0,2,2,2,1,1,1],"metric":true},{"config":[1,1,0,0,0,1,2,2],"metric":true},{"config":[1,1,0,0,0,2,2,1],"metric":true},{"config":[1,1,0,0,0,2,2,2],"metric":true},{"config":[1,1,0,0,2,0,0,1],"metric":true},{"config":[1,1,0,0,2,1,0,0],"metric":true},{"config":[1,1,0,0,2,2,0,0],"metric":true},{"config":[1,1,0,0,2,2,0,1],"metric":true},{"config":[1,1,0,0,2,2,2,1],"metric":true},{"config":[1,1,0,2,2,0,0,0],"metric":true},{"config":[1,1,0,2,2,0,0,1],"metric":true},{"config":[1,1,0,2,2,1,0,0],"metric":true},{"config":[1,1,0,2,2,2,0,0],"metric":true},{"config":[1,1,0,2,2,2,0,1],"metric":true},{"config":[1,1,1,0,0,0,2,2],"metric":true},{"config":[1,1,1,0,0,2,2,2],"metric":true},{"config":[1,1,1,2,2,0,0,0],"metric":true},{"config":[1,1,1,2,2,2,0,0],"metric":true},{"config":[1,1,2,0,0,0,2,1],"metric":true},{"config":[1,1,2,0,0,0,2,2],"metric":true},{"config":[1,1,2,0,0,1,2,2],"metric":true},{"config":[1,1,2,0,0,2,2,1],"metric":true},{"config":[1,1,2,0,0,2,2,2],"metric":true},{"config":[1,1,2,2,0,0,0,1],"metric":true},{"config":[1,1,2,2,0,0,2,1],"metric":true},{"config":[1,1,2,2,0,0,2,2],"metric":true},{"config":[1,1,2,2,0,1,2,2],"metric":true},{"config":[1,1,2,2,0,2,2,1],"metric":true},{"config":[1,1,2,2,2,0,0,0],"metric":true},{"config":[1,1,2,2,2,0,0,1],"metric":true},{"config":[1,1,2,2,2,1,0,0],"metric":true},{"config":[1,2,0,0,0,1,1,1],"metric":true},{"config":[1,2,0,0,0,2,1,1],"metric":true},{"config":[1,2,0,0,0,2,2,1],"metric":true},{"config":[1,2,1,0,0,0,1,1],"metric":true},{"config":[1,2,1,0,0,2,1,1],"metric":true},{"config":[1,2,2,0,0,0,1,1],"metric":true},{"config":[1,2,2,0,0,0,2,1],"metric":true},{"config":[1,2,2,0,0,1,1,1],"metric":true},{"config":[1,2,2,0,0,2,1,1],"metric":true},{"config":[1,2,2,2,0,0,0,1],"metric":true},{"config":[1,2,2,2,0,0,1,1],"metric":true},{"config":[1,2,2,2,0,1,1,1],"metric":true},{"config":[2,0,0,0,1,1,1,2],"metric":true},{"config":[2,0,0,0,1,1,2,2],"metric":true},{"config":[2,0,0,0,1,2,2,2],"metric":true},{"config":[2,0,0,1,1,0,2,2],"metric":true},{"config":[2,0,0,1,1,1,0,2],"metric":true},{"config":[2,0,0,1,1,1,2,2],"metric":true},{"config":[2,0,0,1,1,2,2,2],"metric":true},{"config":[2,0,1,1,1,0,0,2],"metric":true},{"config":[2,0,1,1,1,0,2,2],"metric":true},{"config":[2,0,1,1,1,2,2,2],"metric":true},{"config":[2,0,2,1,1,0,2,2],"metric":true},{"config":[2,0,2,1,1,1,2,2],"metric":true},{"config":[2,1,0,0,0,1,1,2],"metric":true},{"config":[2,1,0,0,0,1,2,2],"metric":true},{"config":[2,1,0,0,0,2,2,2],"metric":true},{"config":[2,1,1,0,0,0,1,2],"metric":true},{"config":[2,1,1,0,0,0,2,2],"metric":true},{"config":[2,1,1,0,0,1,2,2],"metric":true},{"config":[2,1,1,0,0,2,2,2],"metric":true},{"config":[2,1,1,1,0,0,0,2],"metric":true},{"config":[2,1,1,1,0,0,2,2],"metric":true},{"config":[2,1,1,1,0,2,2,2],"metric":true},{"config":[2,1,2,0,0,0,2,2],"metric":true},{"config":[2,1,2,0,0,1,2,2],"metric":true},{"config":[2,2,0,0,0,1,1,1],"metric":true},{"config":[2,2,0,0,0,1,1,2],"metric":true},{"config":[2,2,0,0,0,2,1,1],"metric":true},{"config":[2,2,0,0,1,0,0,2],"metric":true},{"config":[2,2,0,0,1,1,0,0],"metric":true},{"config":[2,2,0,0,1,1,0,2],"metric":true},{"config":[2,2,0,0,1,1,1,2],"metric":true},{"config":[2,2,0,0,1,2,0,0],"metric":true},{"config":[2,2,0,1,1,0,0,0],"metric":true},{"config":[2,2,0,1,1,0,0,2],"metric":true},{"config":[2,2,0,1,1,1,0,0],"metric":true},{"config":[2,2,0,1,1,1,0,2],"metric":true},{"config":[2,2,0,1,1,2,0,0],"metric":true},{"config":[2,2,1,0,0,0,1,1],"metric":true},{"config":[2,2,1,0,0,0,1,2],"metric":true},{"config":[2,2,1,0,0,1,1,1],"metric":true},{"config":[2,2,1,0,0,1,1,2],"metric":true},{"config":[2,2,1,0,0,2,1,1],"metric":true},{"config":[2,2,1,1,0,0,0,2],"metric":true},{"config":[2,2,1,1,0,0,1,1],"metric":true},{"config":[2,2,1,1,0,0,1,2],"metric":true},{"config":[2,2,1,1,0,1,1,2],"metric":true},{"config":[2,2,1,1,0,2,1,1],"metric":true},{"config":[2,2,1,1,1,0,0,0],"metric":true},{"config":[2,2,1,1,1,0,0,2],"metric":true},{"config":[2,2,1,1,1,2,0,0],"metric":true},{"config":[2,2,2,0,0,0,1,1],"metric":true},{"config":[2,2,2,0,0,1,1,1],"metric":true},{"config":[2,2,2,1,1,0,0,0],"metric":true},{"config":[2,2,2,1,1,1,0,0],"metric":true}]},
-    {"problem":"CircuitSAT","variant":{},"instance":{"circuit":{"assignments":[{"expr":{"op":{"And":[{"op":{"Var":"x1"}},{"op":{"Var":"x2"}}]}},"outputs":["a"]},{"expr":{"op":{"Or":[{"op":{"Var":"x1"}},{"op":{"Var":"x2"}}]}},"outputs":["b"]},{"expr":{"op":{"Xor":[{"op":{"Var":"a"}},{"op":{"Var":"b"}}]}},"outputs":["c"]}]},"variables":["a","b","c","x1","x2"]},"samples":[{"config":[0,1,1,0,1],"metric":true},{"config":[0,1,1,1,0],"metric":true}],"optimal":[{"config":[0,0,0,0,0],"metric":true},{"config":[0,1,1,0,1],"metric":true},{"config":[0,1,1,1,0],"metric":true},{"config":[1,1,0,1,1],"metric":true}]},
-    {"problem":"ClosestVectorProblem","variant":{"weight":"i32"},"instance":{"basis":[[2,0],[1,2]],"bounds":[{"lower":-2,"upper":4},{"lower":-2,"upper":4}],"target":[2.8,1.5]},"samples":[{"config":[3,3],"metric":{"Valid":0.5385164807134505}}],"optimal":[{"config":[3,3],"metric":{"Valid":0.5385164807134505}}]},
-    {"problem":"ComparativeContainment","variant":{"weight":"i32"},"instance":{"r_sets":[[0,1,2,3],[0,1]],"r_weights":[2,5],"s_sets":[[0,1,2,3],[2,3]],"s_weights":[3,6],"universe_size":4},"samples":[{"config":[1,0,0,0],"metric":true}],"optimal":[{"config":[0,1,0,0],"metric":true},{"config":[1,0,0,0],"metric":true},{"config":[1,1,0,0],"metric":true}]},
-    {"problem":"DirectedTwoCommodityIntegralFlow","variant":{},"instance":{"capacities":[1,1,1,1,1,1,1,1],"graph":{"inner":{"edge_property":"directed","edges":[[0,2,null],[0,3,null],[1,2,null],[1,3,null],[2,4,null],[2,5,null],[3,4,null],[3,5,null]],"node_holes":[],"nodes":[null,null,null,null,null,null]}},"requirement_1":1,"requirement_2":1,"sink_1":4,"sink_2":5,"source_1":0,"source_2":1},"samples":[{"config":[1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1],"metric":true}],"optimal":[{"config":[0,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0],"metric":true},{"config":[0,0,0,1,0,0,1,0,0,1,0,0,0,0,0,1],"metric":true},{"config":[0,0,0,1,0,0,1,0,0,1,1,0,0,1,0,1],"metric":true},{"config":[0,0,0,1,0,0,1,0,0,1,1,0,1,0,0,1],"metric":true},{"config":[0,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0],"metric":true},{"config":[0,0,0,1,0,0,1,0,1,0,1,0,1,1,0,0],"metric":true},{"config":[0,0,0,1,0,0,1,0,1,1,0,0,0,1,0,1],"metric":true},{"config":[0,0,0,1,0,0,1,0,1,1,0,0,1,0,0,1],"metric":true},{"config":[0,0,0,1,0,0,1,0,1,1,1,0,1,1,0,1],"metric":true},{"config":[0,0,1,0,1,0,0,0,0,0,0,1,0,0,0,1],"metric":true},{"config":[0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1],"metric":true},{"config":[0,0,1,0,1,0,0,0,0,1,0,1,0,0,1,1],"metric":true},{"config":[0,0,1,0,1,0,0,0,1,0,0,0,0,1,0,0],"metric":true},{"config":[0,0,1,0,1,0,0,0,1,0,0,1,0,1,0,1],"metric":true},{"config":[0,0,1,0,1,0,0,0,1,0,0,1,0,1,1,0],"metric":true},{"config":[0,0,1,0,1,0,0,0,1,1,0,0,0,1,0,1],"metric":true},{"config":[0,0,1,0,1,0,0,0,1,1,0,0,0,1,1,0],"metric":true},{"config":[0,0,1,0,1,0,0,0,1,1,0,1,0,1,1,1],"metric":true},{"config":[0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,1],"metric":true},{"config":[0,0,1,1,0,1,1,0,1,1,0,0,1,0,0,1],"metric":true},{"config":[0,0,1,1,1,0,0,1,1,0,0,0,0,1,0,0],"metric":true},{"config":[0,0,1,1,1,0,0,1,1,1,0,0,0,1,1,0],"metric":true},{"config":[0,0,1,1,1,0,1,0,0,1,0,0,0,0,0,1],"metric":true},{"config":[0,0,1,1,1,0,1,0,1,0,0,0,0,1,0,0],"metric":true},{"config":[0,0,1,1,1,0,1,0,1,1,0,0,0,1,0,1],"metric":true},{"config":[0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,1],"metric":true},{"config":[0,1,0,0,0,0,1,0,0,0,1,0,0,1,0,0],"metric":true},{"config":[0,1,0,0,0,0,1,0,0,0,1,1,0,1,0,1],"metric":true},{"config":[0,1,0,0,0,0,1,0,0,0,1,1,1,0,0,1],"metric":true},{"config":[0,1,0,0,0,0,1,0,1,0,0,0,0,1,0,0],"metric":true},{"config":[0,1,0,0,0,0,1,0,1,0,0,1,0,1,0,1],"metric":true},{"config":[0,1,0,0,0,0,1,0,1,0,0,1,1,0,0,1],"metric":true},{"config":[0,1,0,0,0,0,1,0,1,0,1,0,1,1,0,0],"metric":true},{"config":[0,1,0,0,0,0,1,0,1,0,1,1,1,1,0,1],"metric":true},{"config":[0,1,0,1,0,0,1,1,0,0,1,0,0,1,0,0],"metric":true},{"config":[0,1,0,1,0,0,1,1,1,0,0,0,0,1,0,0],"metric":true},{"config":[0,1,0,1,0,0,1,1,1,0,1,0,1,1,0,0],"metric":true},{"config":[0,1,1,0,0,1,1,0,0,0,0,1,0,0,0,1],"metric":true},{"config":[0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1],"metric":true},{"config":[0,1,1,0,1,0,0,1,1,0,0,0,0,1,0,0],"metric":true},{"config":[0,1,1,0,1,0,0,1,1,0,0,1,0,1,1,0],"metric":true},{"config":[0,1,1,0,1,0,1,0,0,0,0,1,0,0,0,1],"metric":true},{"config":[0,1,1,0,1,0,1,0,1,0,0,0,0,1,0,0],"metric":true},{"config":[0,1,1,0,1,0,1,0,1,0,0,1,0,1,0,1],"metric":true},{"config":[0,1,1,1,1,0,1,1,1,0,0,0,0,1,0,0],"metric":true},{"config":[1,0,0,0,1,0,0,0,0,0,0,1,0,0,0,1],"metric":true},{"config":[1,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0],"metric":true},{"config":[1,0,0,0,1,0,0,0,0,0,1,1,0,1,0,1],"metric":true},{"config":[1,0,0,0,1,0,0,0,0,0,1,1,0,1,1,0],"metric":true},{"config":[1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1],"metric":true},{"config":[1,0,0,0,1,0,0,0,0,1,0,1,0,0,1,1],"metric":true},{"config":[1,0,0,0,1,0,0,0,0,1,1,0,0,1,0,1],"metric":true},{"config":[1,0,0,0,1,0,0,0,0,1,1,0,0,1,1,0],"metric":true},{"config":[1,0,0,0,1,0,0,0,0,1,1,1,0,1,1,1],"metric":true},{"config":[1,0,0,1,0,1,1,0,0,1,0,0,0,0,0,1],"metric":true},{"config":[1,0,0,1,0,1,1,0,0,1,1,0,1,0,0,1],"metric":true},{"config":[1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0],"metric":true},{"config":[1,0,0,1,1,0,0,1,0,1,1,0,0,1,1,0],"metric":true},{"config":[1,0,0,1,1,0,1,0,0,0,1,0,0,1,0,0],"metric":true},{"config":[1,0,0,1,1,0,1,0,0,1,0,0,0,0,0,1],"metric":true},{"config":[1,0,0,1,1,0,1,0,0,1,1,0,0,1,0,1],"metric":true},{"config":[1,0,1,0,1,1,0,0,0,0,0,1,0,0,0,1],"metric":true},{"config":[1,0,1,0,1,1,0,0,0,1,0,0,0,0,0,1],"metric":true},{"config":[1,0,1,0,1,1,0,0,0,1,0,1,0,0,1,1],"metric":true},{"config":[1,0,1,1,1,1,1,0,0,1,0,0,0,0,0,1],"metric":true},{"config":[1,1,0,0,0,1,1,0,0,0,0,1,0,0,0,1],"metric":true},{"config":[1,1,0,0,0,1,1,0,0,0,1,1,1,0,0,1],"metric":true},{"config":[1,1,0,0,1,0,0,1,0,0,1,0,0,1,0,0],"metric":true},{"config":[1,1,0,0,1,0,0,1,0,0,1,1,0,1,1,0],"metric":true},{"config":[1,1,0,0,1,0,1,0,0,0,0,1,0,0,0,1],"metric":true},{"config":[1,1,0,0,1,0,1,0,0,0,1,0,0,1,0,0],"metric":true},{"config":[1,1,0,0,1,0,1,0,0,0,1,1,0,1,0,1],"metric":true},{"config":[1,1,0,1,1,0,1,1,0,0,1,0,0,1,0,0],"metric":true},{"config":[1,1,1,0,1,1,1,0,0,0,0,1,0,0,0,1],"metric":true}]},
-    {"problem":"ExactCoverBy3Sets","variant":{},"instance":{"subsets":[[0,1,2],[0,2,4],[3,4,5],[3,5,7],[6,7,8],[1,4,6],[2,5,8]],"universe_size":9},"samples":[{"config":[1,0,1,0,1,0,0],"metric":true}],"optimal":[{"config":[1,0,1,0,1,0,0],"metric":true}]},
-    {"problem":"Factoring","variant":{},"instance":{"m":2,"n":3,"target":15},"samples":[{"config":[1,1,1,0,1],"metric":{"Valid":0}}],"optimal":[{"config":[1,1,1,0,1],"metric":{"Valid":0}}]},
-    {"problem":"HamiltonianPath","variant":{"graph":"SimpleGraph"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[1,3,null],[2,3,null],[3,4,null],[3,5,null],[4,2,null],[5,1,null]],"node_holes":[],"nodes":[null,null,null,null,null,null]}}},"samples":[{"config":[0,2,4,3,1,5],"metric":true}],"optimal":[{"config":[0,1,5,3,2,4],"metric":true},{"config":[0,1,5,3,4,2],"metric":true},{"config":[0,2,4,3,1,5],"metric":true},{"config":[0,2,4,3,5,1],"metric":true},{"config":[1,0,2,4,3,5],"metric":true},{"config":[1,5,3,4,2,0],"metric":true},{"config":[2,0,1,5,3,4],"metric":true},{"config":[2,4,3,5,1,0],"metric":true},{"config":[3,4,2,0,1,5],"metric":true},{"config":[3,5,1,0,2,4],"metric":true},{"config":[4,2,0,1,3,5],"metric":true},{"config":[4,2,0,1,5,3],"metric":true},{"config":[4,2,3,5,1,0],"metric":true},{"config":[4,3,2,0,1,5],"metric":true},{"config":[4,3,5,1,0,2],"metric":true},{"config":[5,1,0,2,3,4],"metric":true},{"config":[5,1,0,2,4,3],"metric":true},{"config":[5,1,3,4,2,0],"metric":true},{"config":[5,3,1,0,2,4],"metric":true},{"config":[5,3,4,2,0,1],"metric":true}]},
-    {"problem":"ILP","variant":{"variable":"i32"},"instance":{"constraints":[{"cmp":"Le","rhs":5.0,"terms":[[0,1.0],[1,1.0]]},{"cmp":"Le","rhs":28.0,"terms":[[0,4.0],[1,7.0]]}],"num_vars":2,"objective":[[0,-5.0],[1,-6.0]],"sense":"Minimize"},"samples":[{"config":[0,4],"metric":{"Valid":-24.0}}],"optimal":[{"config":[3,2],"metric":{"Valid":-27.0}}]},
-    {"problem":"IsomorphicSpanningTree","variant":{},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[0,3,null],[1,2,null],[1,3,null],[2,3,null]],"node_holes":[],"nodes":[null,null,null,null]}},"tree":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[0,3,null]],"node_holes":[],"nodes":[null,null,null,null]}}},"samples":[{"config":[0,1,2,3],"metric":true}],"optimal":[{"config":[0,1,2,3],"metric":true},{"config":[0,1,3,2],"metric":true},{"config":[0,2,1,3],"metric":true},{"config":[0,2,3,1],"metric":true},{"config":[0,3,1,2],"metric":true},{"config":[0,3,2,1],"metric":true},{"config":[1,0,2,3],"metric":true},{"config":[1,0,3,2],"metric":true},{"config":[1,2,0,3],"metric":true},{"config":[1,2,3,0],"metric":true},{"config":[1,3,0,2],"metric":true},{"config":[1,3,2,0],"metric":true},{"config":[2,0,1,3],"metric":true},{"config":[2,0,3,1],"metric":true},{"config":[2,1,0,3],"metric":true},{"config":[2,1,3,0],"metric":true},{"config":[2,3,0,1],"metric":true},{"config":[2,3,1,0],"metric":true},{"config":[3,0,1,2],"metric":true},{"config":[3,0,2,1],"metric":true},{"config":[3,1,0,2],"metric":true},{"config":[3,1,2,0],"metric":true},{"config":[3,2,0,1],"metric":true},{"config":[3,2,1,0],"metric":true}]},
-    {"problem":"KColoring","variant":{"graph":"SimpleGraph","k":"K3"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[1,3,null],[2,3,null],[2,4,null],[3,4,null]],"node_holes":[],"nodes":[null,null,null,null,null]}},"num_colors":3},"samples":[{"config":[0,1,1,0,2],"metric":true}],"optimal":[{"config":[0,1,1,0,2],"metric":true},{"config":[0,1,1,2,0],"metric":true},{"config":[0,1,2,0,1],"metric":true},{"config":[0,2,1,0,2],"metric":true},{"config":[0,2,2,0,1],"metric":true},{"config":[0,2,2,1,0],"metric":true},{"config":[1,0,0,1,2],"metric":true},{"config":[1,0,0,2,1],"metric":true},{"config":[1,0,2,1,0],"metric":true},{"config":[1,2,0,1,2],"metric":true},{"config":[1,2,2,0,1],"metric":true},{"config":[1,2,2,1,0],"metric":true},{"config":[2,0,0,1,2],"metric":true},{"config":[2,0,0,2,1],"metric":true},{"config":[2,0,1,2,0],"metric":true},{"config":[2,1,0,2,1],"metric":true},{"config":[2,1,1,0,2],"metric":true},{"config":[2,1,1,2,0],"metric":true}]},
-    {"problem":"KSatisfiability","variant":{"k":"K3"},"instance":{"clauses":[{"literals":[1,2,3]},{"literals":[-1,-2,3]},{"literals":[1,-2,-3]}],"num_vars":3},"samples":[{"config":[1,0,1],"metric":true}],"optimal":[{"config":[0,0,1],"metric":true},{"config":[0,1,0],"metric":true},{"config":[1,0,0],"metric":true},{"config":[1,0,1],"metric":true},{"config":[1,1,1],"metric":true}]},
-    {"problem":"LengthBoundedDisjointPaths","variant":{"graph":"SimpleGraph"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[1,6,null],[0,2,null],[2,3,null],[3,6,null],[0,4,null],[4,5,null],[5,6,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null]}},"max_length":3,"num_paths_required":2,"sink":6,"source":0},"samples":[{"config":[1,1,0,0,0,0,1,1,0,1,1,0,0,1],"metric":true}],"optimal":[{"config":[1,0,0,0,1,1,1,1,0,1,1,0,0,1],"metric":true},{"config":[1,0,0,0,1,1,1,1,1,0,0,0,0,1],"metric":true},{"config":[1,0,1,1,0,0,1,1,0,0,0,1,1,1],"metric":true},{"config":[1,0,1,1,0,0,1,1,1,0,0,0,0,1],"metric":true},{"config":[1,1,0,0,0,0,1,1,0,0,0,1,1,1],"metric":true},{"config":[1,1,0,0,0,0,1,1,0,1,1,0,0,1],"metric":true}]},
-    {"problem":"MaxCut","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"edge_weights":[1,1,1,1,1,1],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[1,3,null],[2,3,null],[2,4,null],[3,4,null]],"node_holes":[],"nodes":[null,null,null,null,null]}}},"samples":[{"config":[1,0,0,1,0],"metric":{"Valid":5}}],"optimal":[{"config":[0,1,1,0,0],"metric":{"Valid":5}},{"config":[0,1,1,0,1],"metric":{"Valid":5}},{"config":[1,0,0,1,0],"metric":{"Valid":5}},{"config":[1,0,0,1,1],"metric":{"Valid":5}}]},
-    {"problem":"MaximalIS","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[1,2,null],[2,3,null],[3,4,null]],"node_holes":[],"nodes":[null,null,null,null,null]}},"weights":[1,1,1,1,1]},"samples":[{"config":[0,1,0,1,0],"metric":{"Valid":2}},{"config":[1,0,1,0,1],"metric":{"Valid":3}}],"optimal":[{"config":[1,0,1,0,1],"metric":{"Valid":3}}]},
-    {"problem":"MaximumClique","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[1,3,null],[2,3,null],[2,4,null],[3,4,null]],"node_holes":[],"nodes":[null,null,null,null,null]}},"weights":[1,1,1,1,1]},"samples":[{"config":[0,0,1,1,1],"metric":{"Valid":3}}],"optimal":[{"config":[0,0,1,1,1],"metric":{"Valid":3}}]},
-    {"problem":"MaximumIndependentSet","variant":{"graph":"SimpleGraph","weight":"One"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[1,2,null],[2,3,null],[3,4,null],[4,0,null],[5,7,null],[7,9,null],[9,6,null],[6,8,null],[8,5,null],[0,5,null],[1,6,null],[2,7,null],[3,8,null],[4,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}},"weights":[1,1,1,1,1,1,1,1,1,1]},"samples":[{"config":[0,1,0,1,0,1,0,0,0,1],"metric":{"Valid":4}}],"optimal":[{"config":[0,0,1,0,1,1,1,0,0,0],"metric":{"Valid":4}},{"config":[0,1,0,0,1,0,0,1,1,0],"metric":{"Valid":4}},{"config":[0,1,0,1,0,1,0,0,0,1],"metric":{"Valid":4}},{"config":[1,0,0,1,0,0,1,1,0,0],"metric":{"Valid":4}},{"config":[1,0,1,0,0,0,0,0,1,1],"metric":{"Valid":4}}]},
-    {"problem":"MaximumIndependentSet","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[1,2,null],[2,3,null],[3,4,null],[4,0,null],[5,7,null],[7,9,null],[9,6,null],[6,8,null],[8,5,null],[0,5,null],[1,6,null],[2,7,null],[3,8,null],[4,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}},"weights":[5,1,1,1,1,3,1,1,1,3]},"samples":[{"config":[1,0,1,0,0,0,0,0,1,1],"metric":{"Valid":10}}],"optimal":[{"config":[1,0,1,0,0,0,0,0,1,1],"metric":{"Valid":10}}]},
-    {"problem":"MaximumMatching","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"edge_weights":[1,1,1,1,1,1],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[1,3,null],[2,3,null],[2,4,null],[3,4,null]],"node_holes":[],"nodes":[null,null,null,null,null]}}},"samples":[{"config":[1,0,0,0,1,0],"metric":{"Valid":2}}],"optimal":[{"config":[0,0,1,0,1,0],"metric":{"Valid":2}},{"config":[0,1,0,0,0,1],"metric":{"Valid":2}},{"config":[0,1,1,0,0,0],"metric":{"Valid":2}},{"config":[1,0,0,0,0,1],"metric":{"Valid":2}},{"config":[1,0,0,0,1,0],"metric":{"Valid":2}},{"config":[1,0,0,1,0,0],"metric":{"Valid":2}}]},
-    {"problem":"MaximumSetPacking","variant":{"weight":"i32"},"instance":{"sets":[[0,1],[1,2],[2,3],[3,4]],"weights":[1,1,1,1]},"samples":[{"config":[1,0,1,0],"metric":{"Valid":2}}],"optimal":[{"config":[0,1,0,1],"metric":{"Valid":2}},{"config":[1,0,0,1],"metric":{"Valid":2}},{"config":[1,0,1,0],"metric":{"Valid":2}}]},
-    {"problem":"MinimumDominatingSet","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[1,3,null],[2,3,null],[2,4,null],[3,4,null]],"node_holes":[],"nodes":[null,null,null,null,null]}},"weights":[1,1,1,1,1]},"samples":[{"config":[0,0,1,1,0],"metric":{"Valid":2}}],"optimal":[{"config":[0,0,1,1,0],"metric":{"Valid":2}},{"config":[0,1,0,0,1],"metric":{"Valid":2}},{"config":[0,1,0,1,0],"metric":{"Valid":2}},{"config":[0,1,1,0,0],"metric":{"Valid":2}},{"config":[1,0,0,0,1],"metric":{"Valid":2}},{"config":[1,0,0,1,0],"metric":{"Valid":2}},{"config":[1,0,1,0,0],"metric":{"Valid":2}}]},
-    {"problem":"MinimumFeedbackVertexSet","variant":{"weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"directed","edges":[[0,1,null],[1,2,null],[2,0,null],[0,3,null],[3,4,null],[4,1,null],[4,2,null]],"node_holes":[],"nodes":[null,null,null,null,null]}},"weights":[1,1,1,1,1]},"samples":[{"config":[1,0,0,0,0],"metric":{"Valid":1}}],"optimal":[{"config":[0,0,1,0,0],"metric":{"Valid":1}},{"config":[1,0,0,0,0],"metric":{"Valid":1}}]},
-    {"problem":"MinimumMultiwayCut","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"edge_weights":[2,3,1,2,4,5],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[1,2,null],[2,3,null],[3,4,null],[0,4,null],[1,3,null]],"node_holes":[],"nodes":[null,null,null,null,null]}},"terminals":[0,2,4]},"samples":[{"config":[1,0,0,1,1,0],"metric":{"Valid":8}}],"optimal":[{"config":[1,0,0,1,1,0],"metric":{"Valid":8}}]},
-    {"problem":"MinimumSetCovering","variant":{"weight":"i32"},"instance":{"sets":[[0,1,2],[1,3],[2,3,4]],"universe_size":5,"weights":[1,1,1]},"samples":[{"config":[1,0,1],"metric":{"Valid":2}}],"optimal":[{"config":[1,0,1],"metric":{"Valid":2}}]},
-    {"problem":"MinimumSumMulticenter","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"edge_lengths":[1,1,1,1,1,1,1,1],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[1,2,null],[2,3,null],[3,4,null],[4,5,null],[5,6,null],[0,6,null],[2,5,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null]}},"k":2,"vertex_weights":[1,1,1,1,1,1,1]},"samples":[{"config":[0,0,1,0,0,1,0],"metric":{"Valid":6}}],"optimal":[{"config":[0,0,0,1,0,0,1],"metric":{"Valid":6}},{"config":[0,0,1,0,0,0,1],"metric":{"Valid":6}},{"config":[0,0,1,0,0,1,0],"metric":{"Valid":6}},{"config":[0,1,0,0,0,1,0],"metric":{"Valid":6}},{"config":[0,1,0,0,1,0,0],"metric":{"Valid":6}},{"config":[1,0,0,0,0,1,0],"metric":{"Valid":6}},{"config":[1,0,0,0,1,0,0],"metric":{"Valid":6}},{"config":[1,0,0,1,0,0,0],"metric":{"Valid":6}},{"config":[1,0,1,0,0,0,0],"metric":{"Valid":6}}]},
-    {"problem":"MinimumTardinessSequencing","variant":{},"instance":{"deadlines":[2,3,1,4],"num_tasks":4,"precedences":[[0,2]]},"samples":[{"config":[0,0,0,0],"metric":{"Valid":1}}],"optimal":[{"config":[0,0,0,0],"metric":{"Valid":1}},{"config":[0,0,1,0],"metric":{"Valid":1}},{"config":[0,1,0,0],"metric":{"Valid":1}},{"config":[0,2,0,0],"metric":{"Valid":1}},{"config":[1,0,0,0],"metric":{"Valid":1}},{"config":[1,0,1,0],"metric":{"Valid":1}},{"config":[3,0,0,0],"metric":{"Valid":1}}]},
-    {"problem":"MinimumVertexCover","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[1,3,null],[2,3,null],[2,4,null],[3,4,null]],"node_holes":[],"nodes":[null,null,null,null,null]}},"weights":[1,1,1,1,1]},"samples":[{"config":[1,0,0,1,1],"metric":{"Valid":3}}],"optimal":[{"config":[0,1,1,0,1],"metric":{"Valid":3}},{"config":[0,1,1,1,0],"metric":{"Valid":3}},{"config":[1,0,0,1,1],"metric":{"Valid":3}},{"config":[1,0,1,1,0],"metric":{"Valid":3}}]},
-    {"problem":"MultipleChoiceBranching","variant":{"weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"directed","edges":[[0,1,null],[0,2,null],[1,3,null],[2,3,null],[1,4,null],[3,5,null],[4,5,null],[2,4,null]],"node_holes":[],"nodes":[null,null,null,null,null,null]}},"partition":[[0,1],[2,3],[4,7],[5,6]],"threshold":10,"weights":[3,2,4,1,2,3,1,3]},"samples":[{"config":[1,0,1,0,0,1,0,1],"metric":true}],"optimal":[{"config":[0,0,1,0,0,1,0,1],"metric":true},{"config":[0,1,1,0,0,0,1,1],"metric":true},{"config":[0,1,1,0,0,1,0,1],"metric":true},{"config":[0,1,1,0,1,1,0,0],"metric":true},{"config":[1,0,0,1,0,1,0,1],"metric":true},{"config":[1,0,1,0,0,0,0,1],"metric":true},{"config":[1,0,1,0,0,0,1,1],"metric":true},{"config":[1,0,1,0,0,1,0,0],"metric":true},{"config":[1,0,1,0,0,1,0,1],"metric":true},{"config":[1,0,1,0,1,0,1,0],"metric":true},{"config":[1,0,1,0,1,1,0,0],"metric":true}]},
-    {"problem":"PaintShop","variant":{},"instance":{"car_labels":["A","B","C"],"is_first":[true,true,false,true,false,false],"num_cars":3,"sequence_indices":[0,1,0,2,1,2]},"samples":[{"config":[0,0,1],"metric":{"Valid":2}}],"optimal":[{"config":[0,0,1],"metric":{"Valid":2}},{"config":[0,1,1],"metric":{"Valid":2}},{"config":[1,0,0],"metric":{"Valid":2}},{"config":[1,1,0],"metric":{"Valid":2}}]},
-    {"problem":"PartitionIntoTriangles","variant":{"graph":"SimpleGraph"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[1,2,null],[3,4,null],[3,5,null],[4,5,null],[0,3,null]],"node_holes":[],"nodes":[null,null,null,null,null,null]}}},"samples":[{"config":[0,0,0,1,1,1],"metric":true}],"optimal":[{"config":[0,0,0,1,1,1],"metric":true},{"config":[1,1,1,0,0,0],"metric":true}]},
-    {"problem":"QUBO","variant":{"weight":"f64"},"instance":{"matrix":[[-1.0,2.0,0.0],[0.0,-1.0,2.0],[0.0,0.0,-1.0]],"num_vars":3},"samples":[{"config":[1,0,1],"metric":{"Valid":-2.0}}],"optimal":[{"config":[1,0,1],"metric":{"Valid":-2.0}}]},
-    {"problem":"Satisfiability","variant":{},"instance":{"clauses":[{"literals":[1,2]},{"literals":[-1,3]},{"literals":[-2,-3]}],"num_vars":3},"samples":[{"config":[1,0,1],"metric":true}],"optimal":[{"config":[0,1,0],"metric":true},{"config":[1,0,1],"metric":true}]},
-    {"problem":"SequencingWithinIntervals","variant":{},"instance":{"deadlines":[11,11,11,11,6],"lengths":[3,1,2,4,1],"release_times":[0,0,0,0,5]},"samples":[{"config":[0,6,3,7,0],"metric":true}],"optimal":[{"config":[0,6,3,7,0],"metric":true},{"config":[0,10,3,6,0],"metric":true},{"config":[2,6,0,7,0],"metric":true},{"config":[2,10,0,6,0],"metric":true},{"config":[6,0,9,1,0],"metric":true},{"config":[6,4,9,0,0],"metric":true},{"config":[8,0,6,1,0],"metric":true},{"config":[8,4,6,0,0],"metric":true}]},
-    {"problem":"SetBasis","variant":{},"instance":{"collection":[[0,1],[1,2],[0,2],[0,1,2]],"k":3,"universe_size":4},"samples":[{"config":[1,0,0,0,0,1,0,0,0,0,1,0],"metric":true}],"optimal":[{"config":[0,0,1,0,0,1,0,0,1,0,0,0],"metric":true},{"config":[0,0,1,0,1,0,0,0,0,1,0,0],"metric":true},{"config":[0,1,0,0,0,0,1,0,1,0,0,0],"metric":true},{"config":[0,1,0,0,1,0,0,0,0,0,1,0],"metric":true},{"config":[0,1,1,0,1,0,1,0,1,1,0,0],"metric":true},{"config":[0,1,1,0,1,1,0,0,1,0,1,0],"metric":true},{"config":[1,0,0,0,0,0,1,0,0,1,0,0],"metric":true},{"config":[1,0,0,0,0,1,0,0,0,0,1,0],"metric":true},{"config":[1,0,1,0,0,1,1,0,1,1,0,0],"metric":true},{"config":[1,0,1,0,1,1,0,0,0,1,1,0],"metric":true},{"config":[1,1,0,0,0,1,1,0,1,0,1,0],"metric":true},{"config":[1,1,0,0,1,0,1,0,0,1,1,0],"metric":true}]},
-    {"problem":"ShortestCommonSupersequence","variant":{},"instance":{"alphabet_size":3,"bound":4,"strings":[[0,1,2],[1,0,2]]},"samples":[{"config":[1,0,1,2],"metric":true}],"optimal":[{"config":[0,1,0,2],"metric":true},{"config":[1,0,1,2],"metric":true}]},
-    {"problem":"SpinGlass","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"couplings":[1,1,1,1,1,1,1],"fields":[0,0,0,0,0],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[1,2,null],[3,4,null],[0,3,null],[1,3,null],[1,4,null],[2,4,null]],"node_holes":[],"nodes":[null,null,null,null,null]}}},"samples":[{"config":[1,0,1,1,0],"metric":{"Valid":-3}}],"optimal":[{"config":[0,0,1,1,0],"metric":{"Valid":-3}},{"config":[0,1,0,0,1],"metric":{"Valid":-3}},{"config":[0,1,0,1,0],"metric":{"Valid":-3}},{"config":[0,1,1,1,0],"metric":{"Valid":-3}},{"config":[1,0,0,0,1],"metric":{"Valid":-3}},{"config":[1,0,1,0,1],"metric":{"Valid":-3}},{"config":[1,0,1,1,0],"metric":{"Valid":-3}},{"config":[1,1,0,0,1],"metric":{"Valid":-3}}]},
-    {"problem":"SteinerTree","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"edge_weights":[2,5,2,1,5,6,1],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,3,null],[1,2,null],[1,3,null],[2,3,null],[2,4,null],[3,4,null]],"node_holes":[],"nodes":[null,null,null,null,null]}},"terminals":[0,2,4]},"samples":[{"config":[1,0,1,1,0,0,1],"metric":{"Valid":6}}],"optimal":[{"config":[1,0,1,1,0,0,1],"metric":{"Valid":6}}]},
-    {"problem":"StrongConnectivityAugmentation","variant":{"weight":"i32"},"instance":{"bound":1,"candidate_arcs":[[3,0,5],[3,1,3],[3,2,4],[4,0,6],[4,1,2],[4,2,7],[5,0,4],[5,1,3],[5,2,1],[0,3,8],[0,4,3],[0,5,2],[1,3,6],[1,4,4],[1,5,5],[2,4,3],[2,5,7],[1,0,2]],"graph":{"inner":{"edge_property":"directed","edges":[[0,1,null],[1,2,null],[2,0,null],[3,4,null],[4,3,null],[2,3,null],[4,5,null],[5,3,null]],"node_holes":[],"nodes":[null,null,null,null,null,null]}}},"samples":[{"config":[0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0],"metric":true},{"config":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"metric":false}],"optimal":[{"config":[0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0],"metric":true}]},
-    {"problem":"TravelingSalesman","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"edge_weights":[1,3,2,2,3,1],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[0,3,null],[1,2,null],[1,3,null],[2,3,null]],"node_holes":[],"nodes":[null,null,null,null]}}},"samples":[{"config":[1,0,1,1,0,1],"metric":{"Valid":6}}],"optimal":[{"config":[1,0,1,1,0,1],"metric":{"Valid":6}}]},
-    {"problem":"UndirectedTwoCommodityIntegralFlow","variant":{},"instance":{"capacities":[1,1,2],"graph":{"inner":{"edge_property":"undirected","edges":[[0,2,null],[1,2,null],[2,3,null]],"node_holes":[],"nodes":[null,null,null,null]}},"requirement_1":1,"requirement_2":1,"sink_1":3,"sink_2":3,"source_1":0,"source_2":1},"samples":[{"config":[1,0,0,0,0,0,1,0,1,0,1,0],"metric":true}],"optimal":[{"config":[0,0,1,0,1,0,0,0,1,0,1,0],"metric":true},{"config":[1,0,0,0,0,0,1,0,1,0,1,0],"metric":true}]}
-  ],
-  "rules": [
-    {"source":{"problem":"BinPacking","variant":{"weight":"i32"},"instance":{"capacity":10,"sizes":[6,5,5,4,3]}},"target":{"problem":"ILP","variant":{"variable":"bool"},"instance":{"constraints":[{"cmp":"Eq","rhs":1.0,"terms":[[0,1.0],[1,1.0],[2,1.0],[3,1.0],[4,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[5,1.0],[6,1.0],[7,1.0],[8,1.0],[9,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[10,1.0],[11,1.0],[12,1.0],[13,1.0],[14,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[15,1.0],[16,1.0],[17,1.0],[18,1.0],[19,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[20,1.0],[21,1.0],[22,1.0],[23,1.0],[24,1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[0,6.0],[5,5.0],[10,5.0],[15,4.0],[20,3.0],[25,-10.0]]},{"cmp":"Le","rhs":0.0,"terms":[[1,6.0],[6,5.0],[11,5.0],[16,4.0],[21,3.0],[26,-10.0]]},{"cmp":"Le","rhs":0.0,"terms":[[2,6.0],[7,5.0],[12,5.0],[17,4.0],[22,3.0],[27,-10.0]]},{"cmp":"Le","rhs":0.0,"terms":[[3,6.0],[8,5.0],[13,5.0],[18,4.0],[23,3.0],[28,-10.0]]},{"cmp":"Le","rhs":0.0,"terms":[[4,6.0],[9,5.0],[14,5.0],[19,4.0],[24,3.0],[29,-10.0]]}],"num_vars":30,"objective":[[25,1.0],[26,1.0],[27,1.0],[28,1.0],[29,1.0]],"sense":"Minimize"}},"solutions":[{"source_config":[2,1,0,0,2],"target_config":[0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,1,1,0,0]}]},
-    {"source":{"problem":"CircuitSAT","variant":{},"instance":{"circuit":{"assignments":[{"expr":{"op":{"Xor":[{"op":{"Var":"a"}},{"op":{"Var":"b"}}]}},"outputs":["t"]},{"expr":{"op":{"Xor":[{"op":{"Var":"t"}},{"op":{"Var":"cin"}}]}},"outputs":["sum"]},{"expr":{"op":{"And":[{"op":{"Var":"a"}},{"op":{"Var":"b"}}]}},"outputs":["ab"]},{"expr":{"op":{"And":[{"op":{"Var":"cin"}},{"op":{"Var":"t"}}]}},"outputs":["cin_t"]},{"expr":{"op":{"Or":[{"op":{"Var":"ab"}},{"op":{"Var":"cin_t"}}]}},"outputs":["cout"]}]},"variables":["a","ab","b","cin","cin_t","cout","sum","t"]}},"target":{"problem":"ILP","variant":{"variable":"bool"},"instance":{"constraints":[{"cmp":"Le","rhs":0.0,"terms":[[8,1.0],[0,-1.0],[2,-1.0]]},{"cmp":"Ge","rhs":0.0,"terms":[[8,1.0],[0,-1.0],[2,1.0]]},{"cmp":"Ge","rhs":0.0,"terms":[[8,1.0],[0,1.0],[2,-1.0]]},{"cmp":"Le","rhs":2.0,"terms":[[8,1.0],[0,1.0],[2,1.0]]},{"cmp":"Eq","rhs":0.0,"terms":[[7,1.0],[8,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[9,1.0],[7,-1.0],[3,-1.0]]},{"cmp":"Ge","rhs":0.0,"terms":[[9,1.0],[7,-1.0],[3,1.0]]},{"cmp":"Ge","rhs":0.0,"terms":[[9,1.0],[7,1.0],[3,-1.0]]},{"cmp":"Le","rhs":2.0,"terms":[[9,1.0],[7,1.0],[3,1.0]]},{"cmp":"Eq","rhs":0.0,"terms":[[6,1.0],[9,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[10,1.0],[0,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[10,1.0],[2,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[10,1.0],[0,-1.0],[2,-1.0]]},{"cmp":"Eq","rhs":0.0,"terms":[[1,1.0],[10,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[11,1.0],[3,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[11,1.0],[7,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[11,1.0],[3,-1.0],[7,-1.0]]},{"cmp":"Eq","rhs":0.0,"terms":[[4,1.0],[11,-1.0]]},{"cmp":"Ge","rhs":0.0,"terms":[[12,1.0],[1,-1.0]]},{"cmp":"Ge","rhs":0.0,"terms":[[12,1.0],[4,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[12,1.0],[1,-1.0],[4,-1.0]]},{"cmp":"Eq","rhs":0.0,"terms":[[5,1.0],[12,-1.0]]}],"num_vars":13,"objective":[],"sense":"Minimize"}},"solutions":[{"source_config":[0,0,0,0,0,0,0,0],"target_config":[0,0,0,0,0,0,0,0,0,0,0,0,0]}]},
-    {"source":{"problem":"CircuitSAT","variant":{},"instance":{"circuit":{"assignments":[{"expr":{"op":{"Xor":[{"op":{"Var":"a"}},{"op":{"Var":"b"}}]}},"outputs":["t"]},{"expr":{"op":{"Xor":[{"op":{"Var":"t"}},{"op":{"Var":"cin"}}]}},"outputs":["sum"]},{"expr":{"op":{"And":[{"op":{"Var":"a"}},{"op":{"Var":"b"}}]}},"outputs":["ab"]},{"expr":{"op":{"And":[{"op":{"Var":"cin"}},{"op":{"Var":"t"}}]}},"outputs":["cin_t"]},{"expr":{"op":{"Or":[{"op":{"Var":"ab"}},{"op":{"Var":"cin_t"}}]}},"outputs":["cout"]}]},"variables":["a","ab","b","cin","cin_t","cout","sum","t"]}},"target":{"problem":"SpinGlass","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"couplings":[2,-1,-2,-2,-1,-2,-2,2,-4,2,-1,-2,-2,-1,-2,-2,2,-4,-4,1,-2,-4,-2,-4],"fields":[-2,-2,1,2,-2,-2,1,2,0,2,1,2,1,-2,0],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[0,3,null],[0,9,null],[1,2,null],[1,3,null],[1,9,null],[2,3,null],[2,4,null],[4,5,null],[4,6,null],[4,7,null],[4,11,null],[5,6,null],[5,7,null],[5,11,null],[6,7,null],[6,8,null],[9,10,null],[10,12,null],[10,13,null],[11,12,null],[12,13,null],[13,14,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}}}},"solutions":[{"source_config":[0,0,0,0,0,0,0,0],"target_config":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}]},
-    {"source":{"problem":"Factoring","variant":{},"instance":{"m":3,"n":3,"target":35}},"target":{"problem":"CircuitSAT","variant":{},"instance":{"circuit":{"assignments":[{"expr":{"op":{"And":[{"op":{"Var":"p1"}},{"op":{"Var":"q1"}}]}},"outputs":["a_1_1"]},{"expr":{"op":{"Xor":[{"op":{"Var":"a_1_1"}},{"op":{"Const":false}}]}},"outputs":["axs_1_1"]},{"expr":{"op":{"Xor":[{"op":{"Var":"axs_1_1"}},{"op":{"Const":false}}]}},"outputs":["s1_1"]},{"expr":{"op":{"And":[{"op":{"Var":"axs_1_1"}},{"op":{"Const":false}}]}},"outputs":["axsc_1_1"]},{"expr":{"op":{"And":[{"op":{"Var":"a_1_1"}},{"op":{"Const":false}}]}},"outputs":["as_1_1"]},{"expr":{"op":{"Or":[{"op":{"Var":"axsc_1_1"}},{"op":{"Var":"as_1_1"}}]}},"outputs":["c1_1"]},{"expr":{"op":{"And":[{"op":{"Var":"p1"}},{"op":{"Var":"q2"}}]}},"outputs":["a_1_2"]},{"expr":{"op":{"Xor":[{"op":{"Var":"a_1_2"}},{"op":{"Const":false}}]}},"outputs":["axs_1_2"]},{"expr":{"op":{"Xor":[{"op":{"Var":"axs_1_2"}},{"op":{"Var":"c1_1"}}]}},"outputs":["s1_2"]},{"expr":{"op":{"And":[{"op":{"Var":"axs_1_2"}},{"op":{"Var":"c1_1"}}]}},"outputs":["axsc_1_2"]},{"expr":{"op":{"And":[{"op":{"Var":"a_1_2"}},{"op":{"Const":false}}]}},"outputs":["as_1_2"]},{"expr":{"op":{"Or":[{"op":{"Var":"axsc_1_2"}},{"op":{"Var":"as_1_2"}}]}},"outputs":["c1_2"]},{"expr":{"op":{"And":[{"op":{"Var":"p1"}},{"op":{"Var":"q3"}}]}},"outputs":["a_1_3"]},{"expr":{"op":{"Xor":[{"op":{"Var":"a_1_3"}},{"op":{"Const":false}}]}},"outputs":["axs_1_3"]},{"expr":{"op":{"Xor":[{"op":{"Var":"axs_1_3"}},{"op":{"Var":"c1_2"}}]}},"outputs":["s1_3"]},{"expr":{"op":{"And":[{"op":{"Var":"axs_1_3"}},{"op":{"Var":"c1_2"}}]}},"outputs":["axsc_1_3"]},{"expr":{"op":{"And":[{"op":{"Var":"a_1_3"}},{"op":{"Const":false}}]}},"outputs":["as_1_3"]},{"expr":{"op":{"Or":[{"op":{"Var":"axsc_1_3"}},{"op":{"Var":"as_1_3"}}]}},"outputs":["c1_3"]},{"expr":{"op":{"And":[{"op":{"Var":"p2"}},{"op":{"Var":"q1"}}]}},"outputs":["a_2_1"]},{"expr":{"op":{"Xor":[{"op":{"Var":"a_2_1"}},{"op":{"Var":"s1_2"}}]}},"outputs":["axs_2_1"]},{"expr":{"op":{"Xor":[{"op":{"Var":"axs_2_1"}},{"op":{"Const":false}}]}},"outputs":["s2_1"]},{"expr":{"op":{"And":[{"op":{"Var":"axs_2_1"}},{"op":{"Const":false}}]}},"outputs":["axsc_2_1"]},{"expr":{"op":{"And":[{"op":{"Var":"a_2_1"}},{"op":{"Var":"s1_2"}}]}},"outputs":["as_2_1"]},{"expr":{"op":{"Or":[{"op":{"Var":"axsc_2_1"}},{"op":{"Var":"as_2_1"}}]}},"outputs":["c2_1"]},{"expr":{"op":{"And":[{"op":{"Var":"p2"}},{"op":{"Var":"q2"}}]}},"outputs":["a_2_2"]},{"expr":{"op":{"Xor":[{"op":{"Var":"a_2_2"}},{"op":{"Var":"s1_3"}}]}},"outputs":["axs_2_2"]},{"expr":{"op":{"Xor":[{"op":{"Var":"axs_2_2"}},{"op":{"Var":"c2_1"}}]}},"outputs":["s2_2"]},{"expr":{"op":{"And":[{"op":{"Var":"axs_2_2"}},{"op":{"Var":"c2_1"}}]}},"outputs":["axsc_2_2"]},{"expr":{"op":{"And":[{"op":{"Var":"a_2_2"}},{"op":{"Var":"s1_3"}}]}},"outputs":["as_2_2"]},{"expr":{"op":{"Or":[{"op":{"Var":"axsc_2_2"}},{"op":{"Var":"as_2_2"}}]}},"outputs":["c2_2"]},{"expr":{"op":{"And":[{"op":{"Var":"p2"}},{"op":{"Var":"q3"}}]}},"outputs":["a_2_3"]},{"expr":{"op":{"Xor":[{"op":{"Var":"a_2_3"}},{"op":{"Var":"c1_3"}}]}},"outputs":["axs_2_3"]},{"expr":{"op":{"Xor":[{"op":{"Var":"axs_2_3"}},{"op":{"Var":"c2_2"}}]}},"outputs":["s2_3"]},{"expr":{"op":{"And":[{"op":{"Var":"axs_2_3"}},{"op":{"Var":"c2_2"}}]}},"outputs":["axsc_2_3"]},{"expr":{"op":{"And":[{"op":{"Var":"a_2_3"}},{"op":{"Var":"c1_3"}}]}},"outputs":["as_2_3"]},{"expr":{"op":{"Or":[{"op":{"Var":"axsc_2_3"}},{"op":{"Var":"as_2_3"}}]}},"outputs":["c2_3"]},{"expr":{"op":{"And":[{"op":{"Var":"p3"}},{"op":{"Var":"q1"}}]}},"outputs":["a_3_1"]},{"expr":{"op":{"Xor":[{"op":{"Var":"a_3_1"}},{"op":{"Var":"s2_2"}}]}},"outputs":["axs_3_1"]},{"expr":{"op":{"Xor":[{"op":{"Var":"axs_3_1"}},{"op":{"Const":false}}]}},"outputs":["s3_1"]},{"expr":{"op":{"And":[{"op":{"Var":"axs_3_1"}},{"op":{"Const":false}}]}},"outputs":["axsc_3_1"]},{"expr":{"op":{"And":[{"op":{"Var":"a_3_1"}},{"op":{"Var":"s2_2"}}]}},"outputs":["as_3_1"]},{"expr":{"op":{"Or":[{"op":{"Var":"axsc_3_1"}},{"op":{"Var":"as_3_1"}}]}},"outputs":["c3_1"]},{"expr":{"op":{"And":[{"op":{"Var":"p3"}},{"op":{"Var":"q2"}}]}},"outputs":["a_3_2"]},{"expr":{"op":{"Xor":[{"op":{"Var":"a_3_2"}},{"op":{"Var":"s2_3"}}]}},"outputs":["axs_3_2"]},{"expr":{"op":{"Xor":[{"op":{"Var":"axs_3_2"}},{"op":{"Var":"c3_1"}}]}},"outputs":["s3_2"]},{"expr":{"op":{"And":[{"op":{"Var":"axs_3_2"}},{"op":{"Var":"c3_1"}}]}},"outputs":["axsc_3_2"]},{"expr":{"op":{"And":[{"op":{"Var":"a_3_2"}},{"op":{"Var":"s2_3"}}]}},"outputs":["as_3_2"]},{"expr":{"op":{"Or":[{"op":{"Var":"axsc_3_2"}},{"op":{"Var":"as_3_2"}}]}},"outputs":["c3_2"]},{"expr":{"op":{"And":[{"op":{"Var":"p3"}},{"op":{"Var":"q3"}}]}},"outputs":["a_3_3"]},{"expr":{"op":{"Xor":[{"op":{"Var":"a_3_3"}},{"op":{"Var":"c2_3"}}]}},"outputs":["axs_3_3"]},{"expr":{"op":{"Xor":[{"op":{"Var":"axs_3_3"}},{"op":{"Var":"c3_2"}}]}},"outputs":["s3_3"]},{"expr":{"op":{"And":[{"op":{"Var":"axs_3_3"}},{"op":{"Var":"c3_2"}}]}},"outputs":["axsc_3_3"]},{"expr":{"op":{"And":[{"op":{"Var":"a_3_3"}},{"op":{"Var":"c2_3"}}]}},"outputs":["as_3_3"]},{"expr":{"op":{"Or":[{"op":{"Var":"axsc_3_3"}},{"op":{"Var":"as_3_3"}}]}},"outputs":["c3_3"]},{"expr":{"op":{"Const":true}},"outputs":["s1_1"]},{"expr":{"op":{"Const":true}},"outputs":["s2_1"]},{"expr":{"op":{"Const":false}},"outputs":["s3_1"]},{"expr":{"op":{"Const":false}},"outputs":["s3_2"]},{"expr":{"op":{"Const":false}},"outputs":["s3_3"]},{"expr":{"op":{"Const":true}},"outputs":["c3_3"]}]},"variables":["a_1_1","a_1_2","a_1_3","a_2_1","a_2_2","a_2_3","a_3_1","a_3_2","a_3_3","as_1_1","as_1_2","as_1_3","as_2_1","as_2_2","as_2_3","as_3_1","as_3_2","as_3_3","axs_1_1","axs_1_2","axs_1_3","axs_2_1","axs_2_2","axs_2_3","axs_3_1","axs_3_2","axs_3_3","axsc_1_1","axsc_1_2","axsc_1_3","axsc_2_1","axsc_2_2","axsc_2_3","axsc_3_1","axsc_3_2","axsc_3_3","c1_1","c1_2","c1_3","c2_1","c2_2","c2_3","c3_1","c3_2","c3_3","p1","p2","p3","q1","q2","q3","s1_1","s1_2","s1_3","s2_1","s2_2","s2_3","s3_1","s3_2","s3_3"]}},"solutions":[{"source_config":[1,0,1,1,1,1],"target_config":[1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,1,0,0,1,1,1,1,1,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,0,0,0]}]},
-    {"source":{"problem":"Factoring","variant":{},"instance":{"m":3,"n":3,"target":35}},"target":{"problem":"ILP","variant":{"variable":"i32"},"instance":{"constraints":[{"cmp":"Le","rhs":0.0,"terms":[[6,1.0],[0,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[6,1.0],[3,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[6,1.0],[0,-1.0],[3,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[7,1.0],[0,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[7,1.0],[4,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[7,1.0],[0,-1.0],[4,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[8,1.0],[0,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[8,1.0],[5,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[8,1.0],[0,-1.0],[5,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[9,1.0],[1,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[9,1.0],[3,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[9,1.0],[1,-1.0],[3,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[10,1.0],[1,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[10,1.0],[4,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[10,1.0],[1,-1.0],[4,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[11,1.0],[1,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[11,1.0],[5,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[11,1.0],[1,-1.0],[5,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[12,1.0],[2,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[12,1.0],[3,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[12,1.0],[2,-1.0],[3,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[13,1.0],[2,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[13,1.0],[4,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[13,1.0],[2,-1.0],[4,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[14,1.0],[2,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[14,1.0],[5,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[14,1.0],[2,-1.0],[5,-1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[6,1.0],[15,-2.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[7,1.0],[9,1.0],[15,1.0],[16,-2.0]]},{"cmp":"Eq","rhs":0.0,"terms":[[8,1.0],[10,1.0],[12,1.0],[16,1.0],[17,-2.0]]},{"cmp":"Eq","rhs":0.0,"terms":[[11,1.0],[13,1.0],[17,1.0],[18,-2.0]]},{"cmp":"Eq","rhs":0.0,"terms":[[14,1.0],[18,1.0],[19,-2.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[19,1.0],[20,-2.0]]},{"cmp":"Eq","rhs":0.0,"terms":[[20,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[0,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[1,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[2,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[3,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[4,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[5,1.0]]},{"cmp":"Ge","rhs":0.0,"terms":[[15,1.0]]},{"cmp":"Le","rhs":3.0,"terms":[[15,1.0]]},{"cmp":"Ge","rhs":0.0,"terms":[[16,1.0]]},{"cmp":"Le","rhs":3.0,"terms":[[16,1.0]]},{"cmp":"Ge","rhs":0.0,"terms":[[17,1.0]]},{"cmp":"Le","rhs":3.0,"terms":[[17,1.0]]},{"cmp":"Ge","rhs":0.0,"terms":[[18,1.0]]},{"cmp":"Le","rhs":3.0,"terms":[[18,1.0]]},{"cmp":"Ge","rhs":0.0,"terms":[[19,1.0]]},{"cmp":"Le","rhs":3.0,"terms":[[19,1.0]]},{"cmp":"Ge","rhs":0.0,"terms":[[20,1.0]]},{"cmp":"Le","rhs":3.0,"terms":[[20,1.0]]}],"num_vars":21,"objective":[],"sense":"Minimize"}},"solutions":[{"source_config":[1,0,1,1,1,1],"target_config":[1,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,1,1,1,0]}]},
-    {"source":{"problem":"ILP","variant":{"variable":"bool"},"instance":{"constraints":[{"cmp":"Le","rhs":10.0,"terms":[[0,3.0],[1,2.0],[2,5.0],[3,4.0],[4,2.0],[5,3.0]]},{"cmp":"Le","rhs":2.0,"terms":[[0,1.0],[1,1.0],[2,1.0]]},{"cmp":"Le","rhs":2.0,"terms":[[3,1.0],[4,1.0],[5,1.0]]}],"num_vars":6,"objective":[[0,10.0],[1,7.0],[2,12.0],[3,8.0],[4,6.0],[5,9.0]],"sense":"Maximize"}},"target":{"problem":"QUBO","variant":{"weight":"f64"},"instance":{"matrix":[[-3628.0,938.0,2144.0,1608.0,804.0,1206.0,402.0,804.0,1608.0,3216.0,134.0,268.0,0.0,0.0],[0.0,-2620.0,1474.0,1072.0,536.0,804.0,268.0,536.0,1072.0,2144.0,134.0,268.0,0.0,0.0],[0.0,0.0,-5238.0,2680.0,1340.0,2010.0,670.0,1340.0,2680.0,5360.0,134.0,268.0,0.0,0.0],[0.0,0.0,0.0,-4497.0,1206.0,1742.0,536.0,1072.0,2144.0,4288.0,0.0,0.0,134.0,268.0],[0.0,0.0,0.0,0.0,-2619.0,938.0,268.0,536.0,1072.0,2144.0,0.0,0.0,134.0,268.0],[0.0,0.0,0.0,0.0,0.0,-3627.0,402.0,804.0,1608.0,3216.0,0.0,0.0,134.0,268.0],[0.0,0.0,0.0,0.0,0.0,0.0,-1273.0,268.0,536.0,1072.0,0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,-2412.0,1072.0,2144.0,0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-4288.0,4288.0,0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-6432.0,0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-201.0,268.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-268.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-201.0,268.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-268.0]],"num_vars":14}},"solutions":[{"source_config":[1,1,0,0,1,1],"target_config":[1,1,0,0,1,1,0,0,0,0,0,0,0,0]}]},
-    {"source":{"problem":"KColoring","variant":{"graph":"SimpleGraph","k":"KN"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}},"num_colors":3}},"target":{"problem":"ILP","variant":{"variable":"bool"},"instance":{"constraints":[{"cmp":"Eq","rhs":1.0,"terms":[[0,1.0],[1,1.0],[2,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[3,1.0],[4,1.0],[5,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[6,1.0],[7,1.0],[8,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[9,1.0],[10,1.0],[11,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[12,1.0],[13,1.0],[14,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[15,1.0],[16,1.0],[17,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[18,1.0],[19,1.0],[20,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[21,1.0],[22,1.0],[23,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[24,1.0],[25,1.0],[26,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[27,1.0],[28,1.0],[29,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[0,1.0],[3,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[1,1.0],[4,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[2,1.0],[5,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[0,1.0],[12,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[1,1.0],[13,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[2,1.0],[14,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[0,1.0],[15,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[1,1.0],[16,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[2,1.0],[17,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[3,1.0],[6,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[4,1.0],[7,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[5,1.0],[8,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[3,1.0],[18,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[4,1.0],[19,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[5,1.0],[20,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[6,1.0],[9,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[7,1.0],[10,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[8,1.0],[11,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[6,1.0],[21,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[7,1.0],[22,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[8,1.0],[23,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[9,1.0],[12,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[10,1.0],[13,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[11,1.0],[14,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[9,1.0],[24,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[10,1.0],[25,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[11,1.0],[26,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[12,1.0],[27,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[13,1.0],[28,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[14,1.0],[29,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[15,1.0],[21,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[16,1.0],[22,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[17,1.0],[23,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[15,1.0],[24,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[16,1.0],[25,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[17,1.0],[26,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[18,1.0],[24,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[19,1.0],[25,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[20,1.0],[26,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[18,1.0],[27,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[19,1.0],[28,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[20,1.0],[29,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[21,1.0],[27,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[22,1.0],[28,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[23,1.0],[29,1.0]]}],"num_vars":30,"objective":[],"sense":"Minimize"}},"solutions":[{"source_config":[0,2,0,1,2,1,1,2,0,0],"target_config":[1,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0,1,0,0,1,0,0,0,1,1,0,0,1,0,0]}]},
-    {"source":{"problem":"KColoring","variant":{"graph":"SimpleGraph","k":"KN"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[1,3,null],[2,3,null],[2,4,null],[3,4,null]],"node_holes":[],"nodes":[null,null,null,null,null]}},"num_colors":3}},"target":{"problem":"QUBO","variant":{"weight":"f64"},"instance":{"matrix":[[-6.0,12.0,12.0,3.0,0.0,0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],[0.0,-6.0,12.0,0.0,3.0,0.0,0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],[0.0,0.0,-6.0,0.0,0.0,3.0,0.0,0.0,3.0,0.0,0.0,0.0,0.0,0.0,0.0],[0.0,0.0,0.0,-6.0,12.0,12.0,0.0,0.0,0.0,3.0,0.0,0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,-6.0,12.0,0.0,0.0,0.0,0.0,3.0,0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,-6.0,0.0,0.0,0.0,0.0,0.0,3.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,-6.0,12.0,12.0,3.0,0.0,0.0,3.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,-6.0,12.0,0.0,3.0,0.0,0.0,3.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-6.0,0.0,0.0,3.0,0.0,0.0,3.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-6.0,12.0,12.0,3.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-6.0,12.0,0.0,3.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-6.0,0.0,0.0,3.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-6.0,12.0,12.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-6.0,12.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-6.0]],"num_vars":15}},"solutions":[{"source_config":[1,2,2,1,0],"target_config":[0,1,0,0,0,1,0,0,1,0,1,0,1,0,0]}]},
-    {"source":{"problem":"KSatisfiability","variant":{"k":"K2"},"instance":{"clauses":[{"literals":[1,2]},{"literals":[-1,3]},{"literals":[-2,4]},{"literals":[-3,-4]}],"num_vars":4}},"target":{"problem":"QUBO","variant":{"weight":"f64"},"instance":{"matrix":[[0.0,1.0,-1.0,0.0],[0.0,0.0,0.0,-1.0],[0.0,0.0,0.0,1.0],[0.0,0.0,0.0,0.0]],"num_vars":4}},"solutions":[{"source_config":[0,1,0,1],"target_config":[0,1,0,1]}]},
-    {"source":{"problem":"KSatisfiability","variant":{"k":"K3"},"instance":{"clauses":[{"literals":[1,2,-3]},{"literals":[-1,3,4]},{"literals":[2,-4,5]},{"literals":[-2,3,-5]},{"literals":[1,-3,5]},{"literals":[-1,-2,4]},{"literals":[3,-4,-5]}],"num_vars":5}},"target":{"problem":"QUBO","variant":{"weight":"f64"},"instance":{"matrix":[[0.0,4.0,-4.0,0.0,0.0,4.0,-4.0,0.0,0.0,4.0,-4.0,0.0],[0.0,0.0,-2.0,-2.0,0.0,4.0,0.0,4.0,-4.0,0.0,-4.0,0.0],[0.0,0.0,2.0,-2.0,0.0,1.0,4.0,0.0,4.0,-4.0,0.0,4.0],[0.0,0.0,0.0,4.0,0.0,0.0,-1.0,-4.0,0.0,0.0,-1.0,-4.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,-1.0,1.0,-1.0,0.0,1.0],[0.0,0.0,0.0,0.0,0.0,-2.0,0.0,0.0,0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,3.0,0.0,0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.0,0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,3.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,7.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.0]],"num_vars":12}},"solutions":[{"source_config":[0,0,0,0,0],"target_config":[0,0,0,0,0,1,0,0,0,0,0,0]}]},
-    {"source":{"problem":"KSatisfiability","variant":{"k":"K3"},"instance":{"clauses":[{"literals":[1,2,3]},{"literals":[-1,-2,3]}],"num_vars":3}},"target":{"problem":"SubsetSum","variant":{},"instance":{"sizes":["10010","10001","1010","1001","111","100","10","20","1","2"],"target":"11144"}},"solutions":[{"source_config":[0,0,1],"target_config":[0,1,0,1,1,0,1,1,1,0]}]},
-    {"source":{"problem":"KSatisfiability","variant":{"k":"KN"},"instance":{"clauses":[{"literals":[1,-2,3]},{"literals":[-1,3,4]},{"literals":[2,-3,-4]}],"num_vars":4}},"target":{"problem":"Satisfiability","variant":{},"instance":{"clauses":[{"literals":[1,-2,3]},{"literals":[-1,3,4]},{"literals":[2,-3,-4]}],"num_vars":4}},"solutions":[{"source_config":[1,1,1,0],"target_config":[1,1,1,0]}]},
-    {"source":{"problem":"Knapsack","variant":{},"instance":{"capacity":7,"values":[3,4,5,7],"weights":[2,3,4,5]}},"target":{"problem":"QUBO","variant":{"weight":"f64"},"instance":{"matrix":[[-483.0,240.0,320.0,400.0,80.0,160.0,320.0],[0.0,-664.0,480.0,600.0,120.0,240.0,480.0],[0.0,0.0,-805.0,800.0,160.0,320.0,640.0],[0.0,0.0,0.0,-907.0,200.0,400.0,800.0],[0.0,0.0,0.0,0.0,-260.0,80.0,160.0],[0.0,0.0,0.0,0.0,0.0,-480.0,320.0],[0.0,0.0,0.0,0.0,0.0,0.0,-800.0]],"num_vars":7}},"solutions":[{"source_config":[1,0,0,1],"target_config":[1,0,0,1,0,0,0]}]},
-    {"source":{"problem":"LongestCommonSubsequence","variant":{},"instance":{"strings":[[65,66,65,67],[66,65,67,65]]}},"target":{"problem":"ILP","variant":{"variable":"bool"},"instance":{"constraints":[{"cmp":"Le","rhs":1.0,"terms":[[0,1.0],[1,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[2,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[3,1.0],[4,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[5,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[2,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[0,1.0],[3,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[5,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[1,1.0],[4,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[0,1.0],[2,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[1,1.0],[2,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[1,1.0],[3,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[1,1.0],[5,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[4,1.0],[5,1.0]]}],"num_vars":6,"objective":[[0,1.0],[1,1.0],[2,1.0],[3,1.0],[4,1.0],[5,1.0]],"sense":"Maximize"}},"solutions":[{"source_config":[0,1,1,1],"target_config":[0,0,1,1,0,1]}]},
-    {"source":{"problem":"MaxCut","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"edge_weights":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}}}},"target":{"problem":"SpinGlass","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"couplings":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"fields":[0,0,0,0,0,0,0,0,0,0],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}}}},"solutions":[{"source_config":[0,1,0,1,0,1,0,0,0,1],"target_config":[0,1,0,1,0,1,0,0,0,1]}]},
-    {"source":{"problem":"MaximumClique","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[0,3,null],[0,4,null],[1,2,null],[1,3,null],[1,5,null],[2,4,null],[2,5,null],[3,4,null],[3,5,null],[4,5,null]],"node_holes":[],"nodes":[null,null,null,null,null,null]}},"weights":[1,1,1,1,1,1]}},"target":{"problem":"ILP","variant":{"variable":"bool"},"instance":{"constraints":[{"cmp":"Le","rhs":1.0,"terms":[[0,1.0],[5,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[1,1.0],[4,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[2,1.0],[3,1.0]]}],"num_vars":6,"objective":[[0,1.0],[1,1.0],[2,1.0],[3,1.0],[4,1.0],[5,1.0]],"sense":"Maximize"}},"solutions":[{"source_config":[1,1,1,0,0,0],"target_config":[1,1,1,0,0,0]}]},
-    {"source":{"problem":"MaximumClique","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[1,2,null],[2,3,null]],"node_holes":[],"nodes":[null,null,null,null]}},"weights":[1,1,1,1]}},"target":{"problem":"MaximumIndependentSet","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,2,null],[0,3,null],[1,3,null]],"node_holes":[],"nodes":[null,null,null,null]}},"weights":[1,1,1,1]}},"solutions":[{"source_config":[0,1,1,0],"target_config":[0,1,1,0]}]},
-    {"source":{"problem":"MaximumIndependentSet","variant":{"graph":"SimpleGraph","weight":"One"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}},"weights":[1,1,1,1,1,1,1,1,1,1]}},"target":{"problem":"MaximumSetPacking","variant":{"weight":"One"},"instance":{"sets":[[0,1,2],[0,3,4],[3,5,6],[5,7,8],[1,7,9],[2,10,11],[4,12,13],[6,10,14],[8,11,12],[9,13,14]],"weights":[1,1,1,1,1,1,1,1,1,1]}},"solutions":[{"source_config":[1,0,0,1,0,0,1,1,0,0],"target_config":[1,0,0,1,0,0,1,1,0,0]}]},
-    {"source":{"problem":"MaximumIndependentSet","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[1,2,null],[2,3,null],[3,4,null]],"node_holes":[],"nodes":[null,null,null,null,null]}},"weights":[1,1,1,1,1]}},"target":{"problem":"MaximumClique","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,2,null],[0,3,null],[0,4,null],[1,3,null],[1,4,null],[2,4,null]],"node_holes":[],"nodes":[null,null,null,null,null]}},"weights":[1,1,1,1,1]}},"solutions":[{"source_config":[1,0,1,0,1],"target_config":[1,0,1,0,1]}]},
-    {"source":{"problem":"MaximumIndependentSet","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}},"weights":[1,1,1,1,1,1,1,1,1,1]}},"target":{"problem":"MaximumSetPacking","variant":{"weight":"i32"},"instance":{"sets":[[0,1,2],[0,3,4],[3,5,6],[5,7,8],[1,7,9],[2,10,11],[4,12,13],[6,10,14],[8,11,12],[9,13,14]],"weights":[1,1,1,1,1,1,1,1,1,1]}},"solutions":[{"source_config":[1,0,0,1,0,0,1,1,0,0],"target_config":[1,0,0,1,0,0,1,1,0,0]}]},
-    {"source":{"problem":"MaximumIndependentSet","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}},"weights":[1,1,1,1,1,1,1,1,1,1]}},"target":{"problem":"MinimumVertexCover","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}},"weights":[1,1,1,1,1,1,1,1,1,1]}},"solutions":[{"source_config":[1,0,0,1,0,0,1,1,0,0],"target_config":[0,1,1,0,1,1,0,0,1,1]}]},
-    {"source":{"problem":"MaximumMatching","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"edge_weights":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}}}},"target":{"problem":"ILP","variant":{"variable":"bool"},"instance":{"constraints":[{"cmp":"Le","rhs":1.0,"terms":[[0,1.0],[1,1.0],[2,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[0,1.0],[3,1.0],[4,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[3,1.0],[5,1.0],[6,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[5,1.0],[7,1.0],[8,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[1,1.0],[7,1.0],[9,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[2,1.0],[10,1.0],[11,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[4,1.0],[12,1.0],[13,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[6,1.0],[10,1.0],[14,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[8,1.0],[11,1.0],[12,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[9,1.0],[13,1.0],[14,1.0]]}],"num_vars":15,"objective":[[0,1.0],[1,1.0],[2,1.0],[3,1.0],[4,1.0],[5,1.0],[6,1.0],[7,1.0],[8,1.0],[9,1.0],[10,1.0],[11,1.0],[12,1.0],[13,1.0],[14,1.0]],"sense":"Maximize"}},"solutions":[{"source_config":[0,0,1,1,0,0,0,1,0,0,0,0,1,0,1],"target_config":[0,0,1,1,0,0,0,1,0,0,0,0,1,0,1]}]},
-    {"source":{"problem":"MaximumMatching","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"edge_weights":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}}}},"target":{"problem":"MaximumSetPacking","variant":{"weight":"i32"},"instance":{"sets":[[0,1],[0,4],[0,5],[1,2],[1,6],[2,3],[2,7],[3,4],[3,8],[4,9],[5,7],[5,8],[6,8],[6,9],[7,9]],"weights":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]}},"solutions":[{"source_config":[0,0,1,1,0,0,0,1,0,0,0,0,1,0,1],"target_config":[0,0,1,1,0,0,0,1,0,0,0,0,1,0,1]}]},
-    {"source":{"problem":"MaximumSetPacking","variant":{"weight":"One"},"instance":{"sets":[[0,1,2],[2,3],[4,5,6],[1,5,7],[3,6]],"weights":[1,1,1,1,1]}},"target":{"problem":"MaximumIndependentSet","variant":{"graph":"SimpleGraph","weight":"One"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,3,null],[1,4,null],[2,3,null],[2,4,null]],"node_holes":[],"nodes":[null,null,null,null,null]}},"weights":[1,1,1,1,1]}},"solutions":[{"source_config":[1,0,0,0,1],"target_config":[1,0,0,0,1]}]},
-    {"source":{"problem":"MaximumSetPacking","variant":{"weight":"f64"},"instance":{"sets":[[0,1,2],[2,3,4],[4,5,6],[6,7,0],[1,3,5],[0,4,7]],"weights":[1.0,1.0,1.0,1.0,1.0,1.0]}},"target":{"problem":"QUBO","variant":{"weight":"f64"},"instance":{"matrix":[[-1.0,7.0,0.0,7.0,7.0,7.0],[0.0,-1.0,7.0,0.0,7.0,7.0],[0.0,0.0,-1.0,7.0,7.0,7.0],[0.0,0.0,0.0,-1.0,0.0,7.0],[0.0,0.0,0.0,0.0,-1.0,0.0],[0.0,0.0,0.0,0.0,0.0,-1.0]],"num_vars":6}},"solutions":[{"source_config":[0,0,0,1,1,0],"target_config":[0,0,0,1,1,0]}]},
-    {"source":{"problem":"MaximumSetPacking","variant":{"weight":"i32"},"instance":{"sets":[[0,1,2],[2,3,4],[4,5,6],[6,7,0],[1,3,5],[0,4,7]],"weights":[1,1,1,1,1,1]}},"target":{"problem":"ILP","variant":{"variable":"bool"},"instance":{"constraints":[{"cmp":"Le","rhs":1.0,"terms":[[0,1.0],[3,1.0],[5,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[0,1.0],[4,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[0,1.0],[1,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[1,1.0],[4,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[1,1.0],[2,1.0],[5,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[2,1.0],[4,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[2,1.0],[3,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[3,1.0],[5,1.0]]}],"num_vars":6,"objective":[[0,1.0],[1,1.0],[2,1.0],[3,1.0],[4,1.0],[5,1.0]],"sense":"Maximize"}},"solutions":[{"source_config":[0,0,0,1,1,0],"target_config":[0,0,0,1,1,0]}]},
-    {"source":{"problem":"MaximumSetPacking","variant":{"weight":"i32"},"instance":{"sets":[[0,1,2],[2,3],[4,5,6],[1,5,7],[3,6]],"weights":[1,1,1,1,1]}},"target":{"problem":"MaximumIndependentSet","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,3,null],[1,4,null],[2,3,null],[2,4,null]],"node_holes":[],"nodes":[null,null,null,null,null]}},"weights":[1,1,1,1,1]}},"solutions":[{"source_config":[1,0,0,0,1],"target_config":[1,0,0,0,1]}]},
-    {"source":{"problem":"MinimumDominatingSet","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}},"weights":[1,1,1,1,1,1,1,1,1,1]}},"target":{"problem":"ILP","variant":{"variable":"bool"},"instance":{"constraints":[{"cmp":"Ge","rhs":1.0,"terms":[[0,1.0],[5,1.0],[4,1.0],[1,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[1,1.0],[6,1.0],[2,1.0],[0,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[2,1.0],[7,1.0],[3,1.0],[1,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[3,1.0],[8,1.0],[4,1.0],[2,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[4,1.0],[9,1.0],[3,1.0],[0,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[5,1.0],[8,1.0],[7,1.0],[0,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[6,1.0],[9,1.0],[8,1.0],[1,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[7,1.0],[9,1.0],[5,1.0],[2,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[8,1.0],[6,1.0],[5,1.0],[3,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[9,1.0],[7,1.0],[6,1.0],[4,1.0]]}],"num_vars":10,"objective":[[0,1.0],[1,1.0],[2,1.0],[3,1.0],[4,1.0],[5,1.0],[6,1.0],[7,1.0],[8,1.0],[9,1.0]],"sense":"Minimize"}},"solutions":[{"source_config":[0,0,1,0,0,1,0,0,0,1],"target_config":[0,0,1,0,0,1,0,0,0,1]}]},
-    {"source":{"problem":"MinimumFeedbackVertexSet","variant":{"weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"directed","edges":[[0,1,null],[1,2,null],[2,0,null]],"node_holes":[],"nodes":[null,null,null]}},"weights":[1,1,1]}},"target":{"problem":"ILP","variant":{"variable":"i32"},"instance":{"constraints":[{"cmp":"Le","rhs":1.0,"terms":[[0,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[1,1.0]]},{"cmp":"Le","rhs":1.0,"terms":[[2,1.0]]},{"cmp":"Le","rhs":2.0,"terms":[[3,1.0]]},{"cmp":"Le","rhs":2.0,"terms":[[4,1.0]]},{"cmp":"Le","rhs":2.0,"terms":[[5,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[4,1.0],[3,-1.0],[0,3.0],[1,3.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[5,1.0],[4,-1.0],[1,3.0],[2,3.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[3,1.0],[5,-1.0],[2,3.0],[0,3.0]]}],"num_vars":6,"objective":[[0,1.0],[1,1.0],[2,1.0]],"sense":"Minimize"}},"solutions":[{"source_config":[0,1,0],"target_config":[0,1,0,1,0,0]}]},
-    {"source":{"problem":"MinimumMultiwayCut","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"edge_weights":[2,3,1,2,4,5],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[1,2,null],[2,3,null],[3,4,null],[0,4,null],[1,3,null]],"node_holes":[],"nodes":[null,null,null,null,null]}},"terminals":[0,2,4]}},"target":{"problem":"QUBO","variant":{"weight":"f64"},"instance":{"matrix":[[-18.0,36.0,36.0,0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.0,4.0],[0.0,0.0,36.0,2.0,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,4.0,0.0,4.0],[0.0,0.0,0.0,2.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.0,4.0,0.0],[0.0,0.0,0.0,-18.0,36.0,36.0,0.0,3.0,3.0,0.0,5.0,5.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,-18.0,36.0,3.0,0.0,3.0,5.0,0.0,5.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,-18.0,3.0,3.0,0.0,5.0,5.0,0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,36.0,36.0,0.0,1.0,1.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,-18.0,36.0,1.0,0.0,1.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,0.0,0.0,0.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-18.0,36.0,36.0,0.0,2.0,2.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-18.0,36.0,2.0,0.0,2.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-18.0,2.0,2.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,36.0,36.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,36.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-18.0]],"num_vars":15}},"solutions":[{"source_config":[1,0,0,1,1,0],"target_config":[1,0,0,0,1,0,0,1,0,0,1,0,0,0,1]}]},
-    {"source":{"problem":"MinimumSetCovering","variant":{"weight":"i32"},"instance":{"sets":[[0,1,2],[2,3,4],[4,5,6],[6,7,0],[1,3,5],[0,4,7]],"universe_size":8,"weights":[1,1,1,1,1,1]}},"target":{"problem":"ILP","variant":{"variable":"bool"},"instance":{"constraints":[{"cmp":"Ge","rhs":1.0,"terms":[[0,1.0],[3,1.0],[5,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[0,1.0],[4,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[0,1.0],[1,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[1,1.0],[4,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[1,1.0],[2,1.0],[5,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[2,1.0],[4,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[2,1.0],[3,1.0]]},{"cmp":"Ge","rhs":1.0,"terms":[[3,1.0],[5,1.0]]}],"num_vars":6,"objective":[[0,1.0],[1,1.0],[2,1.0],[3,1.0],[4,1.0],[5,1.0]],"sense":"Minimize"}},"solutions":[{"source_config":[0,1,0,1,1,0],"target_config":[0,1,0,1,1,0]}]},
-    {"source":{"problem":"MinimumVertexCover","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}},"weights":[1,1,1,1,1,1,1,1,1,1]}},"target":{"problem":"MaximumIndependentSet","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}},"weights":[1,1,1,1,1,1,1,1,1,1]}},"solutions":[{"source_config":[0,1,1,0,1,1,0,0,1,1],"target_config":[1,0,0,1,0,0,1,1,0,0]}]},
-    {"source":{"problem":"MinimumVertexCover","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}},"weights":[1,1,1,1,1,1,1,1,1,1]}},"target":{"problem":"MinimumSetCovering","variant":{"weight":"i32"},"instance":{"sets":[[0,1,2],[0,3,4],[3,5,6],[5,7,8],[1,7,9],[2,10,11],[4,12,13],[6,10,14],[8,11,12],[9,13,14]],"universe_size":15,"weights":[1,1,1,1,1,1,1,1,1,1]}},"solutions":[{"source_config":[0,1,1,0,1,1,0,0,1,1],"target_config":[0,1,1,0,1,1,0,0,1,1]}]},
-    {"source":{"problem":"QUBO","variant":{"weight":"f64"},"instance":{"matrix":[[-2.0,1.0,0.0,0.0],[0.0,-3.0,2.0,0.0],[0.0,0.0,-1.0,-1.0],[0.0,0.0,0.0,-4.0]],"num_vars":4}},"target":{"problem":"ILP","variant":{"variable":"bool"},"instance":{"constraints":[{"cmp":"Le","rhs":0.0,"terms":[[4,1.0],[0,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[4,1.0],[1,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[4,1.0],[0,-1.0],[1,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[5,1.0],[1,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[5,1.0],[2,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[5,1.0],[1,-1.0],[2,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[6,1.0],[2,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[6,1.0],[3,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[6,1.0],[2,-1.0],[3,-1.0]]}],"num_vars":7,"objective":[[0,-2.0],[1,-3.0],[2,-1.0],[3,-4.0],[4,1.0],[5,2.0],[6,-1.0]],"sense":"Minimize"}},"solutions":[{"source_config":[1,1,1,1],"target_config":[1,1,1,1,1,1,1]}]},
-    {"source":{"problem":"QUBO","variant":{"weight":"f64"},"instance":{"matrix":[[-1.0,2.0,0.0,0.0,-1.5,2.0,0.0,0.0,0.0,0.0],[0.0,-0.8,-1.5,0.0,0.0,0.0,2.0,0.0,0.0,0.0],[0.0,0.0,-0.6,-1.5,0.0,0.0,0.0,2.0,0.0,0.0],[0.0,0.0,0.0,-0.3999999999999999,-1.5,0.0,0.0,0.0,2.0,0.0],[0.0,0.0,0.0,0.0,-0.19999999999999996,0.0,0.0,0.0,0.0,-1.5],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.0,-1.5,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.20000000000000018,0.0,2.0,-1.5],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.40000000000000013,0.0,2.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.6000000000000001,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.8]],"num_vars":10}},"target":{"problem":"SpinGlass","variant":{"graph":"SimpleGraph","weight":"f64"},"instance":{"couplings":[0.5,-0.375,0.5,-0.375,0.5,-0.375,0.5,-0.375,0.5,-0.375,0.5,-0.375,0.5,-0.375,0.5],"fields":[0.125,0.22499999999999998,-0.55,-0.44999999999999996,-1.225,0.625,0.7250000000000001,1.7000000000000002,0.925,0.15000000000000002],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}}}},"solutions":[{"source_config":[1,0,1,1,1,0,1,0,0,1],"target_config":[1,0,1,1,1,0,1,0,0,1]}]},
-    {"source":{"problem":"Satisfiability","variant":{},"instance":{"clauses":[{"literals":[1,-2,3]},{"literals":[-1,2]},{"literals":[2,3]}],"num_vars":3}},"target":{"problem":"CircuitSAT","variant":{},"instance":{"circuit":{"assignments":[{"expr":{"op":{"Or":[{"op":{"Var":"x1"}},{"op":{"Not":{"op":{"Var":"x2"}}}},{"op":{"Var":"x3"}}]}},"outputs":["__clause_0"]},{"expr":{"op":{"Or":[{"op":{"Not":{"op":{"Var":"x1"}}}},{"op":{"Var":"x2"}}]}},"outputs":["__clause_1"]},{"expr":{"op":{"Or":[{"op":{"Var":"x2"}},{"op":{"Var":"x3"}}]}},"outputs":["__clause_2"]},{"expr":{"op":{"And":[{"op":{"Var":"__clause_0"}},{"op":{"Var":"__clause_1"}},{"op":{"Var":"__clause_2"}}]}},"outputs":["__out"]},{"expr":{"op":{"Const":true}},"outputs":["__out"]}]},"variables":["__clause_0","__clause_1","__clause_2","__out","x1","x2","x3"]}},"solutions":[{"source_config":[1,1,1],"target_config":[1,1,1,1,1,1,1]}]},
-    {"source":{"problem":"Satisfiability","variant":{},"instance":{"clauses":[{"literals":[1]},{"literals":[-3]},{"literals":[5]}],"num_vars":5}},"target":{"problem":"KColoring","variant":{"graph":"SimpleGraph","k":"K3"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[1,2,null],[3,2,null],[8,2,null],[3,8,null],[4,2,null],[9,2,null],[4,9,null],[5,2,null],[10,2,null],[5,10,null],[6,2,null],[11,2,null],[6,11,null],[7,2,null],[12,2,null],[7,12,null],[3,2,null],[3,1,null],[10,2,null],[10,1,null],[7,2,null],[7,1,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null,null,null,null]}},"num_colors":3}},"solutions":[{"source_config":[1,1,0,1,1],"target_config":[2,1,0,2,2,1,2,2,1,1,2,1,1]}]},
-    {"source":{"problem":"Satisfiability","variant":{},"instance":{"clauses":[{"literals":[1]},{"literals":[2,-3]},{"literals":[-1,3,4]},{"literals":[2,-4,5]},{"literals":[1,-2,3,-5]},{"literals":[-1,2,-3,4,5]}],"num_vars":5}},"target":{"problem":"KSatisfiability","variant":{"k":"K3"},"instance":{"clauses":[{"literals":[1,6,7]},{"literals":[1,6,-7]},{"literals":[1,-6,8]},{"literals":[1,-6,-8]},{"literals":[2,-3,9]},{"literals":[2,-3,-9]},{"literals":[-1,3,4]},{"literals":[2,-4,5]},{"literals":[1,-2,10]},{"literals":[-10,3,-5]},{"literals":[-1,2,11]},{"literals":[-11,-3,12]},{"literals":[-12,4,5]}],"num_vars":12}},"solutions":[{"source_config":[1,1,1,0,1],"target_config":[1,1,1,0,1,0,0,0,0,1,1,1]}]},
-    {"source":{"problem":"Satisfiability","variant":{},"instance":{"clauses":[{"literals":[1,2,-3]},{"literals":[-1,3,4]},{"literals":[2,-4,5]},{"literals":[-2,3,-5]},{"literals":[1,-3,5]},{"literals":[-1,-2,4]},{"literals":[3,-4,-5]}],"num_vars":5}},"target":{"problem":"MaximumIndependentSet","variant":{"graph":"SimpleGraph","weight":"One"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[1,2,null],[3,4,null],[3,5,null],[4,5,null],[6,7,null],[6,8,null],[7,8,null],[9,10,null],[9,11,null],[10,11,null],[12,13,null],[12,14,null],[13,14,null],[15,16,null],[15,17,null],[16,17,null],[18,19,null],[18,20,null],[19,20,null],[0,3,null],[0,15,null],[1,9,null],[1,16,null],[2,4,null],[2,10,null],[2,18,null],[3,12,null],[4,13,null],[5,7,null],[5,19,null],[6,9,null],[6,16,null],[7,17,null],[8,11,null],[8,20,null],[10,13,null],[11,14,null],[12,15,null],[13,18,null],[14,20,null],[17,19,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}},"weights":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]}},"solutions":[{"source_config":[1,1,1,1,0],"target_config":[1,0,0,0,1,0,1,0,0,0,0,1,1,0,0,0,0,1,1,0,0]}]},
-    {"source":{"problem":"Satisfiability","variant":{},"instance":{"clauses":[{"literals":[1,2,-3]},{"literals":[-1,3,4]},{"literals":[2,-4,5]},{"literals":[-2,3,-5]},{"literals":[1,-3,5]},{"literals":[-1,-2,4]},{"literals":[3,-4,-5]}],"num_vars":5}},"target":{"problem":"MinimumDominatingSet","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[1,2,null],[3,4,null],[3,5,null],[4,5,null],[6,7,null],[6,8,null],[7,8,null],[9,10,null],[9,11,null],[10,11,null],[12,13,null],[12,14,null],[13,14,null],[0,15,null],[3,15,null],[7,15,null],[1,16,null],[6,16,null],[9,16,null],[3,17,null],[10,17,null],[12,17,null],[4,18,null],[6,18,null],[13,18,null],[0,19,null],[7,19,null],[12,19,null],[1,20,null],[4,20,null],[9,20,null],[6,21,null],[10,21,null],[13,21,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]}},"weights":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]}},"solutions":[{"source_config":[1,0,1,1,1],"target_config":[1,0,0,0,1,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0]}]},
-    {"source":{"problem":"SpinGlass","variant":{"graph":"SimpleGraph","weight":"f64"},"instance":{"couplings":[1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0,-1.0,1.0],"fields":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}}}},"target":{"problem":"QUBO","variant":{"weight":"f64"},"instance":{"matrix":[[-2.0,4.0,0.0,0.0,-4.0,4.0,0.0,0.0,0.0,0.0],[0.0,-2.0,-4.0,0.0,0.0,0.0,4.0,0.0,0.0,0.0],[0.0,0.0,2.0,-4.0,0.0,0.0,0.0,4.0,0.0,0.0],[0.0,0.0,0.0,2.0,-4.0,0.0,0.0,0.0,4.0,0.0],[0.0,0.0,0.0,0.0,6.0,0.0,0.0,0.0,0.0,-4.0],[0.0,0.0,0.0,0.0,0.0,-2.0,0.0,4.0,-4.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,-2.0,0.0,4.0,-4.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,-6.0,0.0,4.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-2.0,0.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.0]],"num_vars":10}},"solutions":[{"source_config":[1,0,1,1,1,0,1,0,0,1],"target_config":[1,0,1,1,1,0,1,0,0,1]}]},
-    {"source":{"problem":"SpinGlass","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"couplings":[1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1],"fields":[0,0,0,0,0,0,0,0,0,0],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}}}},"target":{"problem":"MaxCut","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"edge_weights":[1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,4,null],[0,5,null],[1,2,null],[1,6,null],[2,3,null],[2,7,null],[3,4,null],[3,8,null],[4,9,null],[5,7,null],[5,8,null],[6,8,null],[6,9,null],[7,9,null]],"node_holes":[],"nodes":[null,null,null,null,null,null,null,null,null,null]}}}},"solutions":[{"source_config":[1,0,1,1,1,0,1,0,0,1],"target_config":[1,0,1,1,1,0,1,0,0,1]}]},
-    {"source":{"problem":"TravelingSalesman","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"edge_weights":[10,15,20,35,25,30],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[0,3,null],[1,2,null],[1,3,null],[2,3,null]],"node_holes":[],"nodes":[null,null,null,null]}}}},"target":{"problem":"ILP","variant":{"variable":"bool"},"instance":{"constraints":[{"cmp":"Eq","rhs":1.0,"terms":[[0,1.0],[1,1.0],[2,1.0],[3,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[4,1.0],[5,1.0],[6,1.0],[7,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[8,1.0],[9,1.0],[10,1.0],[11,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[12,1.0],[13,1.0],[14,1.0],[15,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[0,1.0],[4,1.0],[8,1.0],[12,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[1,1.0],[5,1.0],[9,1.0],[13,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[2,1.0],[6,1.0],[10,1.0],[14,1.0]]},{"cmp":"Eq","rhs":1.0,"terms":[[3,1.0],[7,1.0],[11,1.0],[15,1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[16,1.0],[0,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[16,1.0],[5,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[16,1.0],[0,-1.0],[5,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[17,1.0],[4,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[17,1.0],[1,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[17,1.0],[4,-1.0],[1,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[18,1.0],[1,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[18,1.0],[6,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[18,1.0],[1,-1.0],[6,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[19,1.0],[5,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[19,1.0],[2,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[19,1.0],[5,-1.0],[2,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[20,1.0],[2,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[20,1.0],[7,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[20,1.0],[2,-1.0],[7,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[21,1.0],[6,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[21,1.0],[3,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[21,1.0],[6,-1.0],[3,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[22,1.0],[3,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[22,1.0],[4,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[22,1.0],[3,-1.0],[4,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[23,1.0],[7,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[23,1.0],[0,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[23,1.0],[7,-1.0],[0,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[24,1.0],[0,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[24,1.0],[9,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[24,1.0],[0,-1.0],[9,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[25,1.0],[8,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[25,1.0],[1,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[25,1.0],[8,-1.0],[1,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[26,1.0],[1,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[26,1.0],[10,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[26,1.0],[1,-1.0],[10,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[27,1.0],[9,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[27,1.0],[2,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[27,1.0],[9,-1.0],[2,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[28,1.0],[2,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[28,1.0],[11,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[28,1.0],[2,-1.0],[11,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[29,1.0],[10,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[29,1.0],[3,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[29,1.0],[10,-1.0],[3,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[30,1.0],[3,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[30,1.0],[8,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[30,1.0],[3,-1.0],[8,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[31,1.0],[11,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[31,1.0],[0,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[31,1.0],[11,-1.0],[0,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[32,1.0],[0,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[32,1.0],[13,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[32,1.0],[0,-1.0],[13,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[33,1.0],[12,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[33,1.0],[1,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[33,1.0],[12,-1.0],[1,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[34,1.0],[1,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[34,1.0],[14,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[34,1.0],[1,-1.0],[14,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[35,1.0],[13,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[35,1.0],[2,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[35,1.0],[13,-1.0],[2,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[36,1.0],[2,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[36,1.0],[15,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[36,1.0],[2,-1.0],[15,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[37,1.0],[14,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[37,1.0],[3,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[37,1.0],[14,-1.0],[3,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[38,1.0],[3,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[38,1.0],[12,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[38,1.0],[3,-1.0],[12,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[39,1.0],[15,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[39,1.0],[0,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[39,1.0],[15,-1.0],[0,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[40,1.0],[4,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[40,1.0],[9,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[40,1.0],[4,-1.0],[9,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[41,1.0],[8,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[41,1.0],[5,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[41,1.0],[8,-1.0],[5,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[42,1.0],[5,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[42,1.0],[10,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[42,1.0],[5,-1.0],[10,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[43,1.0],[9,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[43,1.0],[6,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[43,1.0],[9,-1.0],[6,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[44,1.0],[6,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[44,1.0],[11,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[44,1.0],[6,-1.0],[11,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[45,1.0],[10,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[45,1.0],[7,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[45,1.0],[10,-1.0],[7,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[46,1.0],[7,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[46,1.0],[8,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[46,1.0],[7,-1.0],[8,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[47,1.0],[11,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[47,1.0],[4,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[47,1.0],[11,-1.0],[4,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[48,1.0],[4,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[48,1.0],[13,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[48,1.0],[4,-1.0],[13,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[49,1.0],[12,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[49,1.0],[5,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[49,1.0],[12,-1.0],[5,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[50,1.0],[5,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[50,1.0],[14,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[50,1.0],[5,-1.0],[14,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[51,1.0],[13,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[51,1.0],[6,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[51,1.0],[13,-1.0],[6,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[52,1.0],[6,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[52,1.0],[15,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[52,1.0],[6,-1.0],[15,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[53,1.0],[14,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[53,1.0],[7,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[53,1.0],[14,-1.0],[7,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[54,1.0],[7,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[54,1.0],[12,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[54,1.0],[7,-1.0],[12,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[55,1.0],[15,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[55,1.0],[4,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[55,1.0],[15,-1.0],[4,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[56,1.0],[8,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[56,1.0],[13,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[56,1.0],[8,-1.0],[13,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[57,1.0],[12,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[57,1.0],[9,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[57,1.0],[12,-1.0],[9,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[58,1.0],[9,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[58,1.0],[14,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[58,1.0],[9,-1.0],[14,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[59,1.0],[13,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[59,1.0],[10,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[59,1.0],[13,-1.0],[10,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[60,1.0],[10,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[60,1.0],[15,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[60,1.0],[10,-1.0],[15,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[61,1.0],[14,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[61,1.0],[11,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[61,1.0],[14,-1.0],[11,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[62,1.0],[11,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[62,1.0],[12,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[62,1.0],[11,-1.0],[12,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[63,1.0],[15,-1.0]]},{"cmp":"Le","rhs":0.0,"terms":[[63,1.0],[8,-1.0]]},{"cmp":"Ge","rhs":-1.0,"terms":[[63,1.0],[15,-1.0],[8,-1.0]]}],"num_vars":64,"objective":[[16,10.0],[17,10.0],[18,10.0],[19,10.0],[20,10.0],[21,10.0],[22,10.0],[23,10.0],[24,15.0],[25,15.0],[26,15.0],[27,15.0],[28,15.0],[29,15.0],[30,15.0],[31,15.0],[32,20.0],[33,20.0],[34,20.0],[35,20.0],[36,20.0],[37,20.0],[38,20.0],[39,20.0],[40,35.0],[41,35.0],[42,35.0],[43,35.0],[44,35.0],[45,35.0],[46,35.0],[47,35.0],[48,25.0],[49,25.0],[50,25.0],[51,25.0],[52,25.0],[53,25.0],[54,25.0],[55,25.0],[56,30.0],[57,30.0],[58,30.0],[59,30.0],[60,30.0],[61,30.0],[62,30.0],[63,30.0]],"sense":"Minimize"}},"solutions":[{"source_config":[1,1,0,0,1,1],"target_config":[1,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0]}]},
-    {"source":{"problem":"TravelingSalesman","variant":{"graph":"SimpleGraph","weight":"i32"},"instance":{"edge_weights":[1,2,3],"graph":{"inner":{"edge_property":"undirected","edges":[[0,1,null],[0,2,null],[1,2,null]],"node_holes":[],"nodes":[null,null,null]}}}},"target":{"problem":"QUBO","variant":{"weight":"f64"},"instance":{"matrix":[[-14.0,14.0,14.0,14.0,1.0,1.0,14.0,2.0,2.0],[0.0,-14.0,14.0,1.0,14.0,1.0,2.0,14.0,2.0],[0.0,0.0,-14.0,1.0,1.0,14.0,2.0,2.0,14.0],[0.0,0.0,0.0,-14.0,14.0,14.0,14.0,3.0,3.0],[0.0,0.0,0.0,0.0,-14.0,14.0,3.0,14.0,3.0],[0.0,0.0,0.0,0.0,0.0,-14.0,3.0,3.0,14.0],[0.0,0.0,0.0,0.0,0.0,0.0,-14.0,14.0,14.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,-14.0,14.0],[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-14.0]],"num_vars":9}},"solutions":[{"source_config":[1,1,1],"target_config":[0,0,1,1,0,0,0,1,0]}]}
-  ]
-}

From bf81873eb1264b01a091f3ebe51a4e9fae23c948 Mon Sep 17 00:00:00 2001
From: GiggleLiu <cacate0129@gmail.com>
Date: Thu, 19 Mar 2026 15:39:07 +0800
Subject: [PATCH 6/7] fix: alphabetical ordering in mod.rs and rustfmt

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---
 src/rules/minimummultiwaycut_qubo.rs | 3 +--
 src/rules/mod.rs                     | 4 ++--
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/src/rules/minimummultiwaycut_qubo.rs b/src/rules/minimummultiwaycut_qubo.rs
index 4806a5fb0..787a6dc66 100644
--- a/src/rules/minimummultiwaycut_qubo.rs
+++ b/src/rules/minimummultiwaycut_qubo.rs
@@ -143,8 +143,7 @@ pub(crate) fn canonical_rule_example_specs() -> Vec<crate::example_db::specs::Ru
             use crate::models::algebraic::QUBO;
             use crate::models::graph::MinimumMultiwayCut;
             use crate::topology::SimpleGraph;
-            let graph =
-                SimpleGraph::new(5, vec![(0, 1), (1, 2), (2, 3), (3, 4), (0, 4), (1, 3)]);
+            let graph = SimpleGraph::new(5, vec![(0, 1), (1, 2), (2, 3), (3, 4), (0, 4), (1, 3)]);
             let source = MinimumMultiwayCut::new(graph, vec![0, 2, 4], vec![2, 3, 1, 2, 4, 5]);
             crate::example_db::specs::direct_best_example::<_, QUBO<f64>, _>(source, |_, _| true)
         },
diff --git a/src/rules/mod.rs b/src/rules/mod.rs
index 2a0c6d259..b60c7086c 100644
--- a/src/rules/mod.rs
+++ b/src/rules/mod.rs
@@ -24,8 +24,8 @@ mod maximumindependentset_triangular;
 pub(crate) mod maximummatching_maximumsetpacking;
 mod maximumsetpacking_casts;
 pub(crate) mod maximumsetpacking_qubo;
-pub(crate) mod minimumvertexcover_maximumindependentset;
 pub(crate) mod minimummultiwaycut_qubo;
+pub(crate) mod minimumvertexcover_maximumindependentset;
 pub(crate) mod minimumvertexcover_minimumsetcovering;
 pub(crate) mod sat_circuitsat;
 pub(crate) mod sat_coloring;
@@ -93,8 +93,8 @@ pub(crate) fn canonical_rule_example_specs() -> Vec<crate::example_db::specs::Ru
     specs.extend(maximumindependentset_maximumsetpacking::canonical_rule_example_specs());
     specs.extend(maximummatching_maximumsetpacking::canonical_rule_example_specs());
     specs.extend(maximumsetpacking_qubo::canonical_rule_example_specs());
-    specs.extend(minimumvertexcover_maximumindependentset::canonical_rule_example_specs());
     specs.extend(minimummultiwaycut_qubo::canonical_rule_example_specs());
+    specs.extend(minimumvertexcover_maximumindependentset::canonical_rule_example_specs());
     specs.extend(minimumvertexcover_minimumsetcovering::canonical_rule_example_specs());
     specs.extend(sat_circuitsat::canonical_rule_example_specs());
     specs.extend(sat_coloring::canonical_rule_example_specs());

From aaf6fe7f64b657366904e5d39120564bbabeb4e1 Mon Sep 17 00:00:00 2001
From: GiggleLiu <cacate0129@gmail.com>
Date: Thu, 19 Mar 2026 15:50:26 +0800
Subject: [PATCH 7/7] fix: update canonical example to use
 rule_example_with_witness API

The direct_best_example function was removed on main. Update to use
the current rule_example_with_witness API with explicit solution pair.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---
 src/rules/minimummultiwaycut_qubo.rs | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/rules/minimummultiwaycut_qubo.rs b/src/rules/minimummultiwaycut_qubo.rs
index 787a6dc66..610ec7397 100644
--- a/src/rules/minimummultiwaycut_qubo.rs
+++ b/src/rules/minimummultiwaycut_qubo.rs
@@ -137,6 +137,8 @@ impl ReduceTo<QUBO<f64>> for MinimumMultiwayCut<SimpleGraph, i32> {
 
 #[cfg(feature = "example-db")]
 pub(crate) fn canonical_rule_example_specs() -> Vec<crate::example_db::specs::RuleExampleSpec> {
+    use crate::export::SolutionPair;
+
     vec![crate::example_db::specs::RuleExampleSpec {
         id: "minimummultiwaycut_to_qubo",
         build: || {
@@ -145,7 +147,13 @@ pub(crate) fn canonical_rule_example_specs() -> Vec<crate::example_db::specs::Ru
             use crate::topology::SimpleGraph;
             let graph = SimpleGraph::new(5, vec![(0, 1), (1, 2), (2, 3), (3, 4), (0, 4), (1, 3)]);
             let source = MinimumMultiwayCut::new(graph, vec![0, 2, 4], vec![2, 3, 1, 2, 4, 5]);
-            crate::example_db::specs::direct_best_example::<_, QUBO<f64>, _>(source, |_, _| true)
+            crate::example_db::specs::rule_example_with_witness::<_, QUBO<f64>>(
+                source,
+                SolutionPair {
+                    source_config: vec![1, 0, 0, 1, 1, 0],
+                    target_config: vec![1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1],
+                },
+            )
         },
     }]
 }
