Interface ConstraintProtoOrBuilder

All Superinterfaces:
com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder
All Known Implementing Classes:
ConstraintProto, ConstraintProto.Builder

@Generated public interface ConstraintProtoOrBuilder extends com.google.protobuf.MessageOrBuilder
  • Method Details

    • getName

      String getName()
      For debug/logging only. Can be empty.
      
      string name = 1;
      Returns:
      The name.
    • getNameBytes

      com.google.protobuf.ByteString getNameBytes()
      For debug/logging only. Can be empty.
      
      string name = 1;
      Returns:
      The bytes for name.
    • getEnforcementLiteralList

      List<Integer> getEnforcementLiteralList()
      The constraint will be enforced iff all literals listed here are true. If
      this is empty, then the constraint will always be enforced. An enforced
      constraint must be satisfied, and an un-enforced one will simply be
      ignored.
      
      This is also called half-reification. To have an equivalence between a
      literal and a constraint (full reification), one must add both a constraint
      (controlled by a literal l) and its negation (controlled by the negation of
      l).
      
      Important: as of September 2025, some constraints might be less efficient
      with enforcement than without: circuit, routes, no_overlap, no_overlap_2d,
      and cumulative. If performance is not great, consider using a model without
      these constraints enforced.
      
      repeated int32 enforcement_literal = 2;
      Returns:
      A list containing the enforcementLiteral.
    • getEnforcementLiteralCount

      int getEnforcementLiteralCount()
      The constraint will be enforced iff all literals listed here are true. If
      this is empty, then the constraint will always be enforced. An enforced
      constraint must be satisfied, and an un-enforced one will simply be
      ignored.
      
      This is also called half-reification. To have an equivalence between a
      literal and a constraint (full reification), one must add both a constraint
      (controlled by a literal l) and its negation (controlled by the negation of
      l).
      
      Important: as of September 2025, some constraints might be less efficient
      with enforcement than without: circuit, routes, no_overlap, no_overlap_2d,
      and cumulative. If performance is not great, consider using a model without
      these constraints enforced.
      
      repeated int32 enforcement_literal = 2;
      Returns:
      The count of enforcementLiteral.
    • getEnforcementLiteral

      int getEnforcementLiteral(int index)
      The constraint will be enforced iff all literals listed here are true. If
      this is empty, then the constraint will always be enforced. An enforced
      constraint must be satisfied, and an un-enforced one will simply be
      ignored.
      
      This is also called half-reification. To have an equivalence between a
      literal and a constraint (full reification), one must add both a constraint
      (controlled by a literal l) and its negation (controlled by the negation of
      l).
      
      Important: as of September 2025, some constraints might be less efficient
      with enforcement than without: circuit, routes, no_overlap, no_overlap_2d,
      and cumulative. If performance is not great, consider using a model without
      these constraints enforced.
      
      repeated int32 enforcement_literal = 2;
      Parameters:
      index - The index of the element to return.
      Returns:
      The enforcementLiteral at the given index.
    • hasBoolOr

      boolean hasBoolOr()
      The bool_or constraint forces at least one literal to be true.
      
      .operations_research.sat.BoolArgumentProto bool_or = 3;
      Returns:
      Whether the boolOr field is set.
    • getBoolOr

      BoolArgumentProto getBoolOr()
      The bool_or constraint forces at least one literal to be true.
      
      .operations_research.sat.BoolArgumentProto bool_or = 3;
      Returns:
      The boolOr.
    • getBoolOrOrBuilder

      BoolArgumentProtoOrBuilder getBoolOrOrBuilder()
      The bool_or constraint forces at least one literal to be true.
      
      .operations_research.sat.BoolArgumentProto bool_or = 3;
    • hasBoolAnd

      boolean hasBoolAnd()
      The bool_and constraint forces all of the literals to be true.
      
      This is a "redundant" constraint in the sense that this can easily be
      encoded with many bool_or or at_most_one. It is just more space efficient
      and handled slightly differently internally.
      
      .operations_research.sat.BoolArgumentProto bool_and = 4;
      Returns:
      Whether the boolAnd field is set.
    • getBoolAnd

      BoolArgumentProto getBoolAnd()
      The bool_and constraint forces all of the literals to be true.
      
      This is a "redundant" constraint in the sense that this can easily be
      encoded with many bool_or or at_most_one. It is just more space efficient
      and handled slightly differently internally.
      
      .operations_research.sat.BoolArgumentProto bool_and = 4;
      Returns:
      The boolAnd.
    • getBoolAndOrBuilder

      BoolArgumentProtoOrBuilder getBoolAndOrBuilder()
      The bool_and constraint forces all of the literals to be true.
      
      This is a "redundant" constraint in the sense that this can easily be
      encoded with many bool_or or at_most_one. It is just more space efficient
      and handled slightly differently internally.
      
      .operations_research.sat.BoolArgumentProto bool_and = 4;
    • hasAtMostOne

      boolean hasAtMostOne()
      The at_most_one constraint enforces that no more than one literal is
      true at the same time.
      
      Note that an at most one constraint of length n could be encoded with n
      bool_and constraint with n-1 term on the right hand side. So in a sense,
      this constraint contribute directly to the "implication-graph" or the
      2-SAT part of the model.
      
      .operations_research.sat.BoolArgumentProto at_most_one = 26;
      Returns:
      Whether the atMostOne field is set.
    • getAtMostOne

      BoolArgumentProto getAtMostOne()
      The at_most_one constraint enforces that no more than one literal is
      true at the same time.
      
      Note that an at most one constraint of length n could be encoded with n
      bool_and constraint with n-1 term on the right hand side. So in a sense,
      this constraint contribute directly to the "implication-graph" or the
      2-SAT part of the model.
      
      .operations_research.sat.BoolArgumentProto at_most_one = 26;
      Returns:
      The atMostOne.
    • getAtMostOneOrBuilder

      BoolArgumentProtoOrBuilder getAtMostOneOrBuilder()
      The at_most_one constraint enforces that no more than one literal is
      true at the same time.
      
      Note that an at most one constraint of length n could be encoded with n
      bool_and constraint with n-1 term on the right hand side. So in a sense,
      this constraint contribute directly to the "implication-graph" or the
      2-SAT part of the model.
      
      .operations_research.sat.BoolArgumentProto at_most_one = 26;
    • hasExactlyOne

      boolean hasExactlyOne()
      The exactly_one constraint force exactly one literal to true and no more.
      
      Anytime a bool_or (it could have been called at_least_one) is included
      into an at_most_one, then the bool_or is actually an exactly one
      constraint, and the extra literal in the at_most_one can be set to false.
      So in this sense, this constraint is not really needed. it is just here
      for a better description of the problem structure and to facilitate some
      algorithm.
      
      .operations_research.sat.BoolArgumentProto exactly_one = 29;
      Returns:
      Whether the exactlyOne field is set.
    • getExactlyOne

      BoolArgumentProto getExactlyOne()
      The exactly_one constraint force exactly one literal to true and no more.
      
      Anytime a bool_or (it could have been called at_least_one) is included
      into an at_most_one, then the bool_or is actually an exactly one
      constraint, and the extra literal in the at_most_one can be set to false.
      So in this sense, this constraint is not really needed. it is just here
      for a better description of the problem structure and to facilitate some
      algorithm.
      
      .operations_research.sat.BoolArgumentProto exactly_one = 29;
      Returns:
      The exactlyOne.
    • getExactlyOneOrBuilder

      BoolArgumentProtoOrBuilder getExactlyOneOrBuilder()
      The exactly_one constraint force exactly one literal to true and no more.
      
      Anytime a bool_or (it could have been called at_least_one) is included
      into an at_most_one, then the bool_or is actually an exactly one
      constraint, and the extra literal in the at_most_one can be set to false.
      So in this sense, this constraint is not really needed. it is just here
      for a better description of the problem structure and to facilitate some
      algorithm.
      
      .operations_research.sat.BoolArgumentProto exactly_one = 29;
    • hasBoolXor

      boolean hasBoolXor()
      The bool_xor constraint forces an odd number of the literals to be true.
      
      .operations_research.sat.BoolArgumentProto bool_xor = 5;
      Returns:
      Whether the boolXor field is set.
    • getBoolXor

      BoolArgumentProto getBoolXor()
      The bool_xor constraint forces an odd number of the literals to be true.
      
      .operations_research.sat.BoolArgumentProto bool_xor = 5;
      Returns:
      The boolXor.
    • getBoolXorOrBuilder

      BoolArgumentProtoOrBuilder getBoolXorOrBuilder()
      The bool_xor constraint forces an odd number of the literals to be true.
      
      .operations_research.sat.BoolArgumentProto bool_xor = 5;
    • hasIntDiv

      boolean hasIntDiv()
      The int_div constraint forces the target to equal exprs[0] / exprs[1].
      The division is "rounded" towards zero, so we can have for instance
      (2 = 12 / 5) or (-3 = -10 / 3). If you only want exact integer division,
      then you should use instead of t = a / b, the int_prod constraint
      a = b * t.
      
      If 0 belongs to the domain of exprs[1], then the model is deemed invalid.
      
      .operations_research.sat.LinearArgumentProto int_div = 7;
      Returns:
      Whether the intDiv field is set.
    • getIntDiv

      LinearArgumentProto getIntDiv()
      The int_div constraint forces the target to equal exprs[0] / exprs[1].
      The division is "rounded" towards zero, so we can have for instance
      (2 = 12 / 5) or (-3 = -10 / 3). If you only want exact integer division,
      then you should use instead of t = a / b, the int_prod constraint
      a = b * t.
      
      If 0 belongs to the domain of exprs[1], then the model is deemed invalid.
      
      .operations_research.sat.LinearArgumentProto int_div = 7;
      Returns:
      The intDiv.
    • getIntDivOrBuilder

      LinearArgumentProtoOrBuilder getIntDivOrBuilder()
      The int_div constraint forces the target to equal exprs[0] / exprs[1].
      The division is "rounded" towards zero, so we can have for instance
      (2 = 12 / 5) or (-3 = -10 / 3). If you only want exact integer division,
      then you should use instead of t = a / b, the int_prod constraint
      a = b * t.
      
      If 0 belongs to the domain of exprs[1], then the model is deemed invalid.
      
      .operations_research.sat.LinearArgumentProto int_div = 7;
    • hasIntMod

      boolean hasIntMod()
      The int_mod constraint forces the target to equal exprs[0] % exprs[1].
      The domain of exprs[1] must be strictly positive. The sign of the target
      is the same as the sign of exprs[0].
      
      .operations_research.sat.LinearArgumentProto int_mod = 8;
      Returns:
      Whether the intMod field is set.
    • getIntMod

      LinearArgumentProto getIntMod()
      The int_mod constraint forces the target to equal exprs[0] % exprs[1].
      The domain of exprs[1] must be strictly positive. The sign of the target
      is the same as the sign of exprs[0].
      
      .operations_research.sat.LinearArgumentProto int_mod = 8;
      Returns:
      The intMod.
    • getIntModOrBuilder

      LinearArgumentProtoOrBuilder getIntModOrBuilder()
      The int_mod constraint forces the target to equal exprs[0] % exprs[1].
      The domain of exprs[1] must be strictly positive. The sign of the target
      is the same as the sign of exprs[0].
      
      .operations_research.sat.LinearArgumentProto int_mod = 8;
    • hasIntProd

      boolean hasIntProd()
      The int_prod constraint forces the target to equal the product of all
      variables. By convention, because we can just remove term equal to one,
      the empty product forces the target to be one.
      
      Note that the solver checks for potential integer overflow. So the
      product of the maximum absolute value of all the terms (using the initial
      domain) should fit on an int64. Otherwise the model will be declared
      invalid.
      
      .operations_research.sat.LinearArgumentProto int_prod = 11;
      Returns:
      Whether the intProd field is set.
    • getIntProd

      LinearArgumentProto getIntProd()
      The int_prod constraint forces the target to equal the product of all
      variables. By convention, because we can just remove term equal to one,
      the empty product forces the target to be one.
      
      Note that the solver checks for potential integer overflow. So the
      product of the maximum absolute value of all the terms (using the initial
      domain) should fit on an int64. Otherwise the model will be declared
      invalid.
      
      .operations_research.sat.LinearArgumentProto int_prod = 11;
      Returns:
      The intProd.
    • getIntProdOrBuilder

      LinearArgumentProtoOrBuilder getIntProdOrBuilder()
      The int_prod constraint forces the target to equal the product of all
      variables. By convention, because we can just remove term equal to one,
      the empty product forces the target to be one.
      
      Note that the solver checks for potential integer overflow. So the
      product of the maximum absolute value of all the terms (using the initial
      domain) should fit on an int64. Otherwise the model will be declared
      invalid.
      
      .operations_research.sat.LinearArgumentProto int_prod = 11;
    • hasLinMax

      boolean hasLinMax()
      The lin_max constraint forces the target to equal the maximum of all
      linear expressions.
      Note that this can model a minimum simply by negating all expressions.
      
      .operations_research.sat.LinearArgumentProto lin_max = 27;
      Returns:
      Whether the linMax field is set.
    • getLinMax

      LinearArgumentProto getLinMax()
      The lin_max constraint forces the target to equal the maximum of all
      linear expressions.
      Note that this can model a minimum simply by negating all expressions.
      
      .operations_research.sat.LinearArgumentProto lin_max = 27;
      Returns:
      The linMax.
    • getLinMaxOrBuilder

      LinearArgumentProtoOrBuilder getLinMaxOrBuilder()
      The lin_max constraint forces the target to equal the maximum of all
      linear expressions.
      Note that this can model a minimum simply by negating all expressions.
      
      .operations_research.sat.LinearArgumentProto lin_max = 27;
    • hasLinear

      boolean hasLinear()
      The linear constraint enforces a linear inequality among the variables,
      such as 0 <= x + 2y <= 10.
      
      .operations_research.sat.LinearConstraintProto linear = 12;
      Returns:
      Whether the linear field is set.
    • getLinear

      The linear constraint enforces a linear inequality among the variables,
      such as 0 <= x + 2y <= 10.
      
      .operations_research.sat.LinearConstraintProto linear = 12;
      Returns:
      The linear.
    • getLinearOrBuilder

      LinearConstraintProtoOrBuilder getLinearOrBuilder()
      The linear constraint enforces a linear inequality among the variables,
      such as 0 <= x + 2y <= 10.
      
      .operations_research.sat.LinearConstraintProto linear = 12;
    • hasAllDiff

      boolean hasAllDiff()
      The all_diff constraint forces all variables to take different values.
      
      .operations_research.sat.AllDifferentConstraintProto all_diff = 13;
      Returns:
      Whether the allDiff field is set.
    • getAllDiff

      The all_diff constraint forces all variables to take different values.
      
      .operations_research.sat.AllDifferentConstraintProto all_diff = 13;
      Returns:
      The allDiff.
    • getAllDiffOrBuilder

      The all_diff constraint forces all variables to take different values.
      
      .operations_research.sat.AllDifferentConstraintProto all_diff = 13;
    • hasElement

      boolean hasElement()
      The element constraint forces the variable with the given index
      to be equal to the target.
      
      .operations_research.sat.ElementConstraintProto element = 14;
      Returns:
      Whether the element field is set.
    • getElement

      The element constraint forces the variable with the given index
      to be equal to the target.
      
      .operations_research.sat.ElementConstraintProto element = 14;
      Returns:
      The element.
    • getElementOrBuilder

      ElementConstraintProtoOrBuilder getElementOrBuilder()
      The element constraint forces the variable with the given index
      to be equal to the target.
      
      .operations_research.sat.ElementConstraintProto element = 14;
    • hasCircuit

      boolean hasCircuit()
      The circuit constraint takes a graph and forces the arcs present
      (with arc presence indicated by a literal) to form a unique cycle.
      
      .operations_research.sat.CircuitConstraintProto circuit = 15;
      Returns:
      Whether the circuit field is set.
    • getCircuit

      The circuit constraint takes a graph and forces the arcs present
      (with arc presence indicated by a literal) to form a unique cycle.
      
      .operations_research.sat.CircuitConstraintProto circuit = 15;
      Returns:
      The circuit.
    • getCircuitOrBuilder

      CircuitConstraintProtoOrBuilder getCircuitOrBuilder()
      The circuit constraint takes a graph and forces the arcs present
      (with arc presence indicated by a literal) to form a unique cycle.
      
      .operations_research.sat.CircuitConstraintProto circuit = 15;
    • hasRoutes

      boolean hasRoutes()
      The routes constraint implements the vehicle routing problem.
      
      .operations_research.sat.RoutesConstraintProto routes = 23;
      Returns:
      Whether the routes field is set.
    • getRoutes

      The routes constraint implements the vehicle routing problem.
      
      .operations_research.sat.RoutesConstraintProto routes = 23;
      Returns:
      The routes.
    • getRoutesOrBuilder

      RoutesConstraintProtoOrBuilder getRoutesOrBuilder()
      The routes constraint implements the vehicle routing problem.
      
      .operations_research.sat.RoutesConstraintProto routes = 23;
    • hasTable

      boolean hasTable()
      The table constraint enforces what values a tuple of variables may
      take.
      
      .operations_research.sat.TableConstraintProto table = 16;
      Returns:
      Whether the table field is set.
    • getTable

      The table constraint enforces what values a tuple of variables may
      take.
      
      .operations_research.sat.TableConstraintProto table = 16;
      Returns:
      The table.
    • getTableOrBuilder

      TableConstraintProtoOrBuilder getTableOrBuilder()
      The table constraint enforces what values a tuple of variables may
      take.
      
      .operations_research.sat.TableConstraintProto table = 16;
    • hasAutomaton

      boolean hasAutomaton()
      The automaton constraint forces a sequence of variables to be accepted
      by an automaton.
      
      .operations_research.sat.AutomatonConstraintProto automaton = 17;
      Returns:
      Whether the automaton field is set.
    • getAutomaton

      AutomatonConstraintProto getAutomaton()
      The automaton constraint forces a sequence of variables to be accepted
      by an automaton.
      
      .operations_research.sat.AutomatonConstraintProto automaton = 17;
      Returns:
      The automaton.
    • getAutomatonOrBuilder

      AutomatonConstraintProtoOrBuilder getAutomatonOrBuilder()
      The automaton constraint forces a sequence of variables to be accepted
      by an automaton.
      
      .operations_research.sat.AutomatonConstraintProto automaton = 17;
    • hasInverse

      boolean hasInverse()
      The inverse constraint forces two arrays to be inverses of each other:
      the values of one are the indices of the other, and vice versa.
      
      .operations_research.sat.InverseConstraintProto inverse = 18;
      Returns:
      Whether the inverse field is set.
    • getInverse

      The inverse constraint forces two arrays to be inverses of each other:
      the values of one are the indices of the other, and vice versa.
      
      .operations_research.sat.InverseConstraintProto inverse = 18;
      Returns:
      The inverse.
    • getInverseOrBuilder

      InverseConstraintProtoOrBuilder getInverseOrBuilder()
      The inverse constraint forces two arrays to be inverses of each other:
      the values of one are the indices of the other, and vice versa.
      
      .operations_research.sat.InverseConstraintProto inverse = 18;
    • hasReservoir

      boolean hasReservoir()
      The reservoir constraint forces the sum of a set of active demands
      to always be between a specified minimum and maximum value during
      specific times.
      
      .operations_research.sat.ReservoirConstraintProto reservoir = 24;
      Returns:
      Whether the reservoir field is set.
    • getReservoir

      ReservoirConstraintProto getReservoir()
      The reservoir constraint forces the sum of a set of active demands
      to always be between a specified minimum and maximum value during
      specific times.
      
      .operations_research.sat.ReservoirConstraintProto reservoir = 24;
      Returns:
      The reservoir.
    • getReservoirOrBuilder

      ReservoirConstraintProtoOrBuilder getReservoirOrBuilder()
      The reservoir constraint forces the sum of a set of active demands
      to always be between a specified minimum and maximum value during
      specific times.
      
      .operations_research.sat.ReservoirConstraintProto reservoir = 24;
    • hasInterval

      boolean hasInterval()
      The interval constraint takes a start, end, and size, and forces
      start + size == end.
      
      .operations_research.sat.IntervalConstraintProto interval = 19;
      Returns:
      Whether the interval field is set.
    • getInterval

      The interval constraint takes a start, end, and size, and forces
      start + size == end.
      
      .operations_research.sat.IntervalConstraintProto interval = 19;
      Returns:
      The interval.
    • getIntervalOrBuilder

      IntervalConstraintProtoOrBuilder getIntervalOrBuilder()
      The interval constraint takes a start, end, and size, and forces
      start + size == end.
      
      .operations_research.sat.IntervalConstraintProto interval = 19;
    • hasNoOverlap

      boolean hasNoOverlap()
      The no_overlap constraint prevents a set of intervals from
      overlapping; in scheduling, this is called a disjunctive
      constraint.
      
      .operations_research.sat.NoOverlapConstraintProto no_overlap = 20;
      Returns:
      Whether the noOverlap field is set.
    • getNoOverlap

      NoOverlapConstraintProto getNoOverlap()
      The no_overlap constraint prevents a set of intervals from
      overlapping; in scheduling, this is called a disjunctive
      constraint.
      
      .operations_research.sat.NoOverlapConstraintProto no_overlap = 20;
      Returns:
      The noOverlap.
    • getNoOverlapOrBuilder

      NoOverlapConstraintProtoOrBuilder getNoOverlapOrBuilder()
      The no_overlap constraint prevents a set of intervals from
      overlapping; in scheduling, this is called a disjunctive
      constraint.
      
      .operations_research.sat.NoOverlapConstraintProto no_overlap = 20;
    • hasNoOverlap2D

      boolean hasNoOverlap2D()
      The no_overlap_2d constraint prevents a set of boxes from overlapping.
      
      .operations_research.sat.NoOverlap2DConstraintProto no_overlap_2d = 21;
      Returns:
      Whether the noOverlap2d field is set.
    • getNoOverlap2D

      NoOverlap2DConstraintProto getNoOverlap2D()
      The no_overlap_2d constraint prevents a set of boxes from overlapping.
      
      .operations_research.sat.NoOverlap2DConstraintProto no_overlap_2d = 21;
      Returns:
      The noOverlap2d.
    • getNoOverlap2DOrBuilder

      NoOverlap2DConstraintProtoOrBuilder getNoOverlap2DOrBuilder()
      The no_overlap_2d constraint prevents a set of boxes from overlapping.
      
      .operations_research.sat.NoOverlap2DConstraintProto no_overlap_2d = 21;
    • hasCumulative

      boolean hasCumulative()
      The cumulative constraint ensures that for any integer point, the sum
      of the demands of the intervals containing that point does not exceed
      the capacity.
      
      .operations_research.sat.CumulativeConstraintProto cumulative = 22;
      Returns:
      Whether the cumulative field is set.
    • getCumulative

      CumulativeConstraintProto getCumulative()
      The cumulative constraint ensures that for any integer point, the sum
      of the demands of the intervals containing that point does not exceed
      the capacity.
      
      .operations_research.sat.CumulativeConstraintProto cumulative = 22;
      Returns:
      The cumulative.
    • getCumulativeOrBuilder

      CumulativeConstraintProtoOrBuilder getCumulativeOrBuilder()
      The cumulative constraint ensures that for any integer point, the sum
      of the demands of the intervals containing that point does not exceed
      the capacity.
      
      .operations_research.sat.CumulativeConstraintProto cumulative = 22;
    • hasDummyConstraint

      boolean hasDummyConstraint()
      This constraint is not meant to be used and will be rejected by the
      solver. It is meant to mark variable when testing the presolve code.
      
      .operations_research.sat.ListOfVariablesProto dummy_constraint = 30;
      Returns:
      Whether the dummyConstraint field is set.
    • getDummyConstraint

      ListOfVariablesProto getDummyConstraint()
      This constraint is not meant to be used and will be rejected by the
      solver. It is meant to mark variable when testing the presolve code.
      
      .operations_research.sat.ListOfVariablesProto dummy_constraint = 30;
      Returns:
      The dummyConstraint.
    • getDummyConstraintOrBuilder

      ListOfVariablesProtoOrBuilder getDummyConstraintOrBuilder()
      This constraint is not meant to be used and will be rejected by the
      solver. It is meant to mark variable when testing the presolve code.
      
      .operations_research.sat.ListOfVariablesProto dummy_constraint = 30;
    • getConstraintCase

      ConstraintProto.ConstraintCase getConstraintCase()