* @param strength the assertion strength (e.g. :default or :monotonic)
   *
   * @throws UnknownHostException if cyc server host not found on the network
   * @throws IOException if a data communication error occurs
   * @throws CycApiException if the api request results in a cyc server error
   */
  public void assertHLGaf(final CycList gaf, final CycObject mt, final CycSymbol strength)
          throws UnknownHostException, IOException, CycApiException {
    // (HL-ADD-ARGUMENT '(:ASSERTED-ARGUMENT <strength>) '(NIL ((<gaf>)) <mt> :FORWARD NIL)
    final CycList command = new CycList();
    command.add(makeCycSymbol("hl-add-argument"));
    final CycList command1 = new CycList();
    command1.add(makeCycSymbol(":asserted-argument"));
    command1.add(strength);
    command.addQuoted(command1);
    final CycList command2 = new CycList();
    command2.add(CycObjectFactory.nil);
    final CycList command3 = new CycList();
    final CycList canonicalGaf = new CycList();
    final int gaf_size = gaf.size();
    for (int i = 0; i < gaf_size; i++) {
      final Object obj = gaf.get(i);
      if (obj instanceof CycNart) {
        canonicalGaf.add(((CycNart) obj).getFormula());
      } else {
        canonicalGaf.add(obj);
      }
    }
    command3.add(canonicalGaf);
    command2.add(command3);
    command.addQuoted(command2);
    command.add(mt);
    command.add(makeCycSymbol(":forward"));
    command.add(CycObjectFactory.nil);
    converseCycObject(command);
  }