let join_predicate x y = match x, y with
  | TrueTrue -> True
  | FalseFalse -> False
  | TrueFalse | FalseTrue
  | Unknown, _ | _, Unknown -> Unknown