fact: Definition assoc_opt {A B C : Type} (x : option (A * B) * C) : option (A * (B * C)) := match x with | (None, _) => None | (Some (a, b), c) => Some (a, (b, c)) end.
imports: ZArith mathcomp(all_ssreflect) infotheo(ssrZ) ihierarchy imonad_lib