private static Term convertConjunctionOfAtomsAntecedant(Term consequent, Term[] conjunctionOfAtoms) {
      ArrayList<Term> newSequence = new ArrayList<>();

      Variable lastArg = new Variable("A0");

      int varctr = 1;
      Term previous = lastArg;
      Term previousList = null;
      for (int i = conjunctionOfAtoms.length - 1; i > -1; i--) {
         Term term = conjunctionOfAtoms[i];
         if (term.getName().equals("{")) {
            Term newAntecedantArg = term.getArgument(0).getArgument(0);
            newSequence.add(0, newAntecedantArg);
         } else if (term.getType() == TermType.LIST) {
            if (previousList != null) {
               term = appendToEndOfList(term, previousList);
            }
            previousList = term;
         } else {
            if (previousList != null) {
               Variable next = new Variable("A" + (varctr++));
               Term newAntecedantArg = Structure.createStructure("=", new Term[] {next, appendToEndOfList(previousList, previous)});
               newSequence.add(0, newAntecedantArg);
               previousList = null;
               previous = next;
            }

            Variable next = new Variable("A" + (varctr++));
            Term newAntecedantArg = createNewPredicate(term, next, previous);
            previous = next;
            newSequence.add(0, newAntecedantArg);
         }
      }

      Term newAntecedant;
      if (newSequence.isEmpty()) {
         newAntecedant = null;
      } else {
         newAntecedant = newSequence.get(0);
         for (int i = 1; i < newSequence.size(); i++) {
            newAntecedant = Structure.createStructure(CONJUNCTION_PREDICATE_NAME, new Term[] {newAntecedant, newSequence.get(i)});
         }
      }

      if (previousList != null) {
         previous = appendToEndOfList(previousList, previous);
      }
      Term newConsequent = createNewPredicate(consequent, previous, lastArg);

      if (newAntecedant == null) {
         return newConsequent;
      } else {
         return Structure.createStructure(IMPLICATION_PREDICATE_NAME, new Term[] {newConsequent, newAntecedant});
      }
   }