///|
fn main {
  let builder = @sat.CnfBuilder::new()
  let variables : Array[@sat.Var] = []
  for index = 0; index < 24; index = index + 1 {
    variables.push(builder.new_var("feature_\{index}"))
  }
  builder.at_most_one_pairwise(variables)
  let choices : Array[@sat.Lit] = []
  for variable in variables {
    choices.push(@sat.Lit::pos(variable))
  }
  let cnf = builder.cnf()
  let report = @sat.minimal_unsat_core(cnf, choices)
  println("MoonSatKit deterministic workload")
  println(cnf.stats().to_json())
  println(
    "{\"assumptions\":\{choices.length()},\"core_size\":\{report.core.length()},\"solver_calls\":\{report.solver_calls}}",
  )
}