code: def OneHot(*xs, simplify=True, conj=True):
      
      xs = [Expression.box(x).node for x in xs]
      terms = list()
      if conj:
          for x0, x1 in itertools.combinations(xs, 2):
              terms.append(exprnode.or_(exprnode.not_(x0),
                                        exprnode.not_(x1)))
          terms.append(exprnode.or_(*xs))
          y = exprnode.and_(*terms)
      else:
          for i, xi in enumerate(xs):
              zeros = [exprnode.not_(x) for x in xs[:i] + xs[i+1:]]
              terms.append(exprnode.and_(xi, *zeros))
          y = exprnode.or_(*terms)
      if simplify:
          y = y.simplify()
      return _expr(y)
docs: Return an expression that means
      "exactly one input function is true".
  
      If *simplify* is ``True``, return a simplified expression.
  
      If *conj* is ``True``, return a CNF.
      Otherwise, return a DNF.