/**************************************************************
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 *************************************************************/



#include "solver.hrc"

String RID_SOLVER_COMPONENT
{
    Text [ en-US ] = "%PRODUCTNAME Linear Solver";
};

String RID_PROPERTY_NONNEGATIVE
{
    Text [ en-US ] = "Assume variables as non-negative";
};
String RID_PROPERTY_INTEGER
{
    Text [ en-US ] = "Assume variables as integer";
};
String RID_PROPERTY_TIMEOUT
{
    Text [ en-US ] = "Solving time limit (seconds)";
};
String RID_PROPERTY_EPSILONLEVEL
{
    Text [ en-US ] = "Epsilon level (0-3)";
};
String RID_PROPERTY_LIMITBBDEPTH
{
    Text [ en-US ] = "Limit branch-and-bound depth";
};
String RID_PROPERTY_NONLINEARTEST
{
    Text [ en-US ] = "Run strict linearity checks";
};
String RID_ERROR_NONLINEAR
{
    Text [ en-US ] = "The model seems nonlinear (see options).";
};
String RID_ERROR_EPSILONLEVEL
{
    Text [ en-US ] = "The epsilon level is invalid.";
};
String RID_ERROR_INFEASIBLE
{
    Text [ en-US ] = "The model is infeasible. Check limiting conditions.";
};
String RID_ERROR_UNBOUNDED
{
    Text [ en-US ] = "The model is unbounded.";
};
String RID_ERROR_TIMEOUT
{
    Text [ en-US ] = "The time limit was reached.";
};
