public static boolean taxonomyImpliesOrIsSubsumedP(Relation premise, Relation conclusion) {
    { NamedDescription premisedescription = ((NamedDescription)(KeyValueList.dynamicSlotValue(premise.dynamicSlots, Logic.SYM_LOGIC_DESCRIPTION, null)));
      Description conclusiondescription = null;

      if ((premisedescription == null) ||
          (Description.findDescriptionImplicationSubsumptionNode(premisedescription) == null)) {
        premisedescription = ((NamedDescription)(Logic.createDescriptionForStellaRelationAndAncestors(premise)));
      }
      conclusiondescription = ((NamedDescription)(KeyValueList.dynamicSlotValue(conclusion.dynamicSlots, Logic.SYM_LOGIC_DESCRIPTION, null)));
      if (conclusiondescription == null) {
        return (false);
      }
      if (Description.findDescriptionImplicationSubsumptionNode(conclusiondescription) == null) {
        throw ((StellaException)(StellaException.newStellaException("'taxonomy-implies-or-is-subsumed?' conclusionDescription should have taxonomy-node").fillInStackTrace()));
      }
      return (TaxonomyNode.taxonomySubnodeOfP(Description.findDescriptionImplicationSubsumptionNode(premisedescription), Description.findDescriptionImplicationSubsumptionNode(conclusiondescription)));
    }
  }