private boolean visitArgs()

in meta/src/main/java/org/arend/lib/meta/cong/CongVisitor.java [102:134]


  private boolean visitArgs(List<? extends CoreExpression> args1, List<? extends CoreExpression> args2, List<CoreParameter> parameters, boolean paramExplicitness, List<ConcreteArgument> resultArgs) {
    boolean abstracted = false;
    int currentIndex = 0;
    CoreParameter current = null;
    for (int i = 0; i < args1.size(); i++) {
      while (current == null || !current.hasNext()) {
        current = parameters.get(currentIndex++);
      }

      Result arg = args1.get(i).accept(this, new ParamType(() -> new Result(null), args2.get(i)));
      if (arg != null) {
        boolean ok = true;
        if (arg.expression != null) {
          abstracted = true;
          if (findFreeVar(current.getNext(), current.getBinding())) {
            ok = false;
          }
          for (int j = currentIndex; j < parameters.size(); j++) {
            if (findFreeVar(parameters.get(j), current.getBinding())) {
              ok = false;
              break;
            }
          }
        }
        if (ok) {
          resultArgs.add(factory.arg(arg.getExpression(args1.get(i), factory), paramExplicitness && current.isExplicit()));
        }
      }

      current = current.getNext();
    }
    return abstracted;
  }