///|
fn main raise {
let net = @k.Network::new(
["A", "B"],
[
@k.Reaction::new([1, 0], [0, 1], 2.0),
@k.Reaction::new([0, 1], [1, 0], 1.0),
],
volume=20.0,
)
let path = net.simulate([20, 0], 2.0, seed=2026)
for state in path.count_states() {
assert_eq(state[0] + state[1], 20)
}
let replay = @k.path_from_json(net, path.to_json().stringify())
assert_eq(replay.count_states(), path.count_states())
println(path.to_json().stringify())
println(net.log_likelihood(path))
}