Skip to content

implies

relationalai.semantics.reasoners.prescriptive.problem
implies(left: Any, right: Any) -> b.Expression

Return an implication constraint (left => right).

Use this inside Model.require and pass the resulting fragment to Problem.satisfy. When passed to Problem.satisfy, both sides must reference at least one decision variable declared via Problem.solve_for.

  • left

    (Any) - Antecedent condition (a comparison or constraint).
  • right

    (Any) - Consequent condition (a comparison or constraint).
  • Expression - A solver expression representing the implication constraint.

Constrain two binary variables:

>>> from relationalai.semantics import Float, Model
>>> from relationalai.semantics.reasoners.prescriptive import Problem, implies
>>> m = Model("implies_demo")
>>> x = m.Relationship(f"{Float:x}")
>>> y = m.Relationship(f"{Float:y}")
>>> p = Problem(m, Float)
>>> p.solve_for(x, name="x", type="bin")
>>> p.solve_for(y, name="y", type="bin")
>>> p.satisfy(m.require(implies(x == 1, y == 1)))
RelationalAI Documentation
└──  Build With RelationalAI
    └──  Understand how PyRel works > Use advanced reasoning > Prescriptive reasoning
        ├──  Choose a backend
        │   ├──  Use HiGHS
        │   │   └──  Limitations
        │   └──  Use Ipopt
        │       └──  Limitations
        └──  Solve a decision problem
            └──  Add constraints