///|
fn main {
  let output = try {
    // Demonstration equipment categories, not medical diagnoses.
    let fine = @belief.frame(["power", "mechanical", "software"])
    let coarse = @belief.frame(["hardware", "software"])
    let input = @belief.mass(fine, [(1, 0.2), (2, 0.3), (7, 0.5)])
    let observed = input.discount(0.8).condition(3)
    let grouped = observed.coarsen(coarse, [0, 0, 1])
    let interval = observed.interval(1)
    Json::object({
      "workflow": Json::string("equipment-diagnostic"),
      "conditioned": observed.to_json(),
      "grouped": grouped.to_json(),
      "power_belief": Json::number(interval.0),
      "power_plausibility": Json::number(interval.1),
      "hardware_belief": Json::number(grouped.belief(1)),
    })
  } catch {
    _ => abort("diagnostic example failed")
  }
  println(output.stringify())
}