public static boolean conjunctCancelsIsaPropositionP(Proposition isaconjunct, Proposition otherconjunct) {
    { Keyword testValue000 = otherconjunct.kind;

      if (testValue000 == Logic.KWD_ISA) {
        return (Stella_Object.eqlP((otherconjunct.arguments.theArray)[0], (isaconjunct.arguments.theArray)[0]) &&
            ((((Boolean)(Logic.$POSTOPTIMIZATIONp$.get())).booleanValue() ? Logic.relationrefSpecializesRelationrefP(((Surrogate)(otherconjunct.operator)), ((Surrogate)(isaconjunct.operator))) : (((Surrogate)(otherconjunct.operator)) == ((Surrogate)(isaconjunct.operator))))));
      }
      else if ((testValue000 == Logic.KWD_FUNCTION) ||
          (testValue000 == Logic.KWD_PREDICATE)) {
        { Stella_Object inmember = (isaconjunct.arguments.theArray)[0];
          Surrogate intype = ((Surrogate)(isaconjunct.operator));

          { boolean testValue001 = false;

            testValue001 = ((Boolean)(Logic.$POSTOPTIMIZATIONp$.get())).booleanValue();
            if (testValue001) {
              testValue001 = Stella_Object.typeP(intype);
              if (testValue001) {
                testValue001 = Stella_Object.surrogateP(((Surrogate)(otherconjunct.operator)));
                if (testValue001) {
                  { boolean foundP000 = false;

                    { Stella_Object arg = null;
                      Vector vector000 = otherconjunct.arguments;
                      int index000 = 0;
                      int length000 = vector000.length();
                      Surrogate argtype = null;
                      Cons iter000 = Logic.getDescription(((Surrogate)(otherconjunct.operator))).ioVariableTypes.theConsList;

                      loop000 : for (;(index000 < length000) &&
                                (!(iter000 == Stella.NIL)); index000 = index000 + 1, iter000 = iter000.rest) {
                        arg = (vector000.theArray)[index000];
                        argtype = ((Surrogate)(iter000.value));
                        if (Stella_Object.eqlP(arg, inmember) &&
                            Logic.logicalSubtypeOfP(argtype, intype)) {
                          foundP000 = true;
                          break loop000;
                        }
                      }
                    }
                    testValue001 = foundP000;
                  }
                }
              }
            }
            { boolean value000 = testValue001;

              return (value000);
            }
          }
        }
      }
      else {
        return (false);
      }
    }
  }