Exemple #1
0
    /** Concatenates terms of sort Set to this builder */
    public void concatenate(Term... terms) {
      for (Term term : terms) {
        if (!term.sort().equals(Sort.SET)) {
          throw KEMException.criticalError(
              "unexpected sort "
                  + term.sort()
                  + " of concatenated term "
                  + term
                  + "; expected "
                  + Sort.SET);
        }

        if (term instanceof BuiltinSet) {
          BuiltinSet set = (BuiltinSet) term;
          elements.addAll(set.elements);
          patternsBuilder.addAll(set.collectionPatterns);
          functionsBuilder.addAll(set.collectionFunctions);
          variablesBuilder.addAll(set.collectionVariables);
        } else if (term instanceof KItem && ((KLabel) ((KItem) term).kLabel()).isPattern()) {
          patternsBuilder.add((KItem) term);
        } else if (term instanceof KItem && ((KLabel) ((KItem) term).kLabel()).isFunction()) {
          functionsBuilder.add(term);
        } else if (term instanceof Variable) {
          variablesBuilder.add((Variable) term);
        } else {
          throw KEMException.criticalError("unexpected concatenated term" + term);
        }
      }
    }