code: public boolean setRelation(TemporalExtendedPropositionDefinition lhsDef,
              TemporalExtendedPropositionDefinition rhsDef, Relation relation) {
          if (lhsDef == null || rhsDef == null || relation == null) {
              return false;
          }
  
          if (!defs.contains(lhsDef) || !defs.contains(rhsDef)) {
              return false;
          }
  
          List<TemporalExtendedPropositionDefinition> rulePair = Arrays.asList(
                  lhsDef, rhsDef);
  
          defPairsMap.put(rulePair, relation);
          return true;
      }
docs: Sets the relation between the two temporal extended proposition
  definitions.
  
  @param lhsDef
  a {@link TemporalExtendedPropositionDefinition}.
  @param rhsDef
  a {@link TemporalExtendedPropositionDefinition}.
  @param relation
  a {@link Relation}.
  @return <code>true</code> if setting the relation was successful,
  <code>false</code> otherwise (e.g., if one or both of the
  temporal extended proposition definitions is not already part of
  this abstraction definition, or if any of the arguments are
  <code>null</code>).