# # Copyright (c) 2026 BEL ESPRIT D ACCORD TRUST HOLDINGS INC # All rights reserved. # run_phase2.py — Classical driver for Phase 2 Lindblad Collapse import numpy as np def run_on_hardware(backend: str = "qsharp.simulator"): """Run Phase 2 on specified backend.""" import qsharp from BlackHoleEngine.Phase2 import RunPhase2Collapse qsharp.config.target = backend # 3-SAT instance: (x0 | x1 | x2) & (~x0 | x1 | ~x2) n = 3 clauses = [(0, 1, 2), (0, 1, 2)] violations = [(False, False, False), (True, False, True)] gamma_dt = 0.01 delta = 1e-4 scramble_interval = 5 scramble_time = 5.0 * np.log(2**n) max_steps = 1000 print(f"Running Phase 2 on {backend}...") print(f"n={n}, m={len(clauses)}, gamma_dt={gamma_dt}, delta={delta}") result = RunPhase2Collapse.simulate( nQubits=n, clauses=clauses, violations=violations, gamma_dt=gamma_dt, delta=delta, scrambleInterval=scramble_interval, scrambleTime=scramble_time, maxSteps=max_steps ) solution, final_energy = result print(f"Solution: {solution}") print(f"Final energy: {final_energy}") for (a, b, c), (va, vb, vc) in zip(clauses, violations): vals = (solution[a], solution[b], solution[c]) violated = (vals == (va, vb, vc)) print(f" Clause ({a},{b},{c}): assignment {vals}, violated={violated}") return solution, final_energy if __name__ == "__main__": run_on_hardware("qsharp.simulator") # run_on_hardware("ionq.simulator") # run_on_hardware("ionq.qpu") # run_on_hardware("quantinuum.simulator") # run_on_hardware("quantinuum.qpu") # run_on_hardware("ibm.heron")