/*
         * private List<GroundedFunctionPredicate> GetInitAmountOfDependenciesRevealedToZeroPredicates(List<Agent> m_agents)
         * {
         *  List<GroundedFunctionPredicate> predicates = new List<GroundedFunctionPredicate>();
         *  foreach(Agent agent in m_agents)
         *  {
         *      predicates.Add(GetInitAmountOfDependenciesRevealedToZeroForAgentPredicate(agent));
         *  }
         *  return predicates;
         * }
         *
         * private GroundedFunctionPredicate GetInitAmountOfDependenciesRevealedToZeroForAgentPredicate(Agent agent)
         * {
         *  GroundedFunctionPredicate initAmountOfDependenciesRevealedToZero = new GroundedFunctionPredicate("=");
         *  Constant a = mapAgentToConstant[agent];
         *  GroundedFunctionPredicate amountOfDepRevGrounded = GetAmountOfDependenciesRevealedGrounded(a);
         *  FunctionConstant functionConstant = new FunctionConstant(amountOfDepRevGrounded);
         *  initAmountOfDependenciesRevealedToZero.AddFunction(functionConstant);
         *  initAmountOfDependenciesRevealedToZero.AddNumber(0);
         *
         *  return initAmountOfDependenciesRevealedToZero;
         * }
         */

        private GroundedFunctionPredicate GetInitTotalCostToZeroPredicate(GroundedFunctionPredicate totalCostFunctionPredicate)
        {
            GroundedFunctionPredicate initTotalCostToZeroPredicate = new GroundedFunctionPredicate("=");
            FunctionConstant          functionConstant             = new FunctionConstant(totalCostFunctionPredicate);

            initTotalCostToZeroPredicate.AddFunction(functionConstant);
            initTotalCostToZeroPredicate.AddNumber(0);

            return(initTotalCostToZeroPredicate);
        }
        /*
         * private ParameterizedFunctionPredicate GetIncreaseAmountOfDependenciesRevealedParameterized(ParameterizedFunctionPredicate amountOfDependenciesRevealedParameterized)
         * {
         *  ParameterizedFunctionPredicate increaseAmountOfDepRev = new ParameterizedFunctionPredicate("increase");
         *  FunctionParameter functionParameterAmountOfDepRev = new FunctionParameter(amountOfDependenciesRevealedParameterized);
         *  increaseAmountOfDepRev.AddFunction(functionParameterAmountOfDepRev);
         *  increaseAmountOfDepRev.AddNumber(1); //increase by 1.
         *  return increaseAmountOfDepRev;
         * }
         *
         * private GroundedFunctionPredicate GetIncreaseAmountOfDependenciesRevealedGrounded(GroundedFunctionPredicate amountOfDepRevGrounded)
         * {
         *  GroundedFunctionPredicate increaseAmountOfDepRev = new GroundedFunctionPredicate("increase");
         *  FunctionConstant functionParameterAmountOfDepRev = new FunctionConstant(amountOfDepRevGrounded);
         *  increaseAmountOfDepRev.AddFunction(functionParameterAmountOfDepRev);
         *  increaseAmountOfDepRev.AddNumber(1); //increase by 1.
         *  return increaseAmountOfDepRev;
         * }
         *
         * private ParameterizedFunctionPredicate GetEqualsToMax(ParameterizedFunctionPredicate amountOfDependenciesRevealedParameterized)
         * {
         *  ParameterizedFunctionPredicate equalsToMax = new ParameterizedFunctionPredicate("=");
         *  FunctionParameter functionParameterAmountOfDepRev = new FunctionParameter(amountOfDependenciesRevealedParameterized);
         *  equalsToMax.AddFunction(functionParameterAmountOfDepRev);
         *  equalsToMax.AddNumber(maxAmountOfDependencies);
         *  return equalsToMax;
         * }
         *
         * private GroundedFunctionPredicate GetEqualsToMaxGrounded(GroundedFunctionPredicate amountOfDepRevGrounded)
         * {
         *  GroundedFunctionPredicate equalsToMax = new GroundedFunctionPredicate("=");
         *  FunctionConstant functionConstantAmountOfDepRev = new FunctionConstant(amountOfDepRevGrounded);
         *  equalsToMax.AddFunction(functionConstantAmountOfDepRev);
         *  equalsToMax.AddNumber(maxAmountOfDependencies);
         *  return equalsToMax;
         * }
         *
         * private ParameterizedFunctionPredicate GetAmountOfDependenciesRevealedParameterized()
         * {
         *  ParameterizedFunctionPredicate amountOfDependenciesRevealed = new ParameterizedFunctionPredicate("amount-of-dependencies-revealed");
         *  Parameter agentParameter = GetAgentParameter();
         *  amountOfDependenciesRevealed.AddParameter(agentParameter);
         *  return amountOfDependenciesRevealed;
         * }
         *
         * private GroundedFunctionPredicate GetAmountOfDependenciesRevealedGrounded(Constant agent)
         * {
         *  GroundedFunctionPredicate amountOfDependenciesRevealed = new GroundedFunctionPredicate("amount-of-dependencies-revealed");
         *  amountOfDependenciesRevealed.AddConstant(agent);
         *
         *  return amountOfDependenciesRevealed;
         * }
         */

        private GroundedFunctionPredicate GetIncreaseTotalCostFunction(GroundedFunctionPredicate totalCostFunctionPredicate, int cost)
        {
            GroundedFunctionPredicate increaseFP = new GroundedFunctionPredicate("increase");

            FunctionConstant functionConstant = new FunctionConstant(totalCostFunctionPredicate);

            increaseFP.AddFunction(functionConstant);
            increaseFP.AddNumber(cost);

            return(increaseFP);
        }