let of_three =
    let yes = Yes(dep0) and no = No(dep0) in
      fun p a ->
        match p a with
          | Three.Yes -> yes
          | Three.No -> no
          | Three.X -> X