private static boolean removeSemiJoinPredicate(ParseContext context,
          ReduceSinkOperator rs, ExprNodeDesc nodeToRemove) {
    boolean remove = false;
    for (ExprNodeDesc expr : nodeToRemove.getChildren()) {
      if (expr instanceof ExprNodeDynamicValueDesc ) {
        String dynamicValueIdFromExpr = ((ExprNodeDynamicValueDesc) expr)
                .getDynamicValue().getId();
        List<String> dynamicValueIdsFromMap = context.
                getRsToRuntimeValuesInfoMap().get(rs).getDynamicValueIDs();
        for (String dynamicValueIdFromMap : dynamicValueIdsFromMap) {
          if (dynamicValueIdFromExpr.equals(dynamicValueIdFromMap)) {
            // Intended predicate to be removed
            remove = true;
            break;
          }
        }
      }
    }
    return remove;
  }
Find out if this predicate constains the synthetic predicate to be removed
ql/src/java/org/apache/hadoop/hive/ql/parse/GenTezUtils.java