class Gecode::Bool::BooleanConstraint
Public Instance Methods
post()
click to toggle source
# File doc/tmp/rdoc_dev/gecoder/interface/constraints/bool/boolean.rb, line 137 def post lhs, rhs, negate, reif_var = @params.values_at(:lhs, :rhs, :negate, :reif) if lhs.respond_to? :to_bool_var lhs = ExpressionNode.new(lhs, @model) end space = (lhs.model || rhs.model).active_space bot_eqv = Gecode::Raw::IRT_EQ bot_xor = Gecode::Raw::IRT_NQ if rhs.respond_to? :to_minimodel_bool_expr if reif_var.nil? tree = ExpressionTree.new(lhs, :==, rhs) tree.to_minimodel_bool_expr.post(space, !negate, *propagation_options) else tree = ExpressionTree.new(lhs, :==, rhs) var = tree.to_minimodel_bool_expr.post(space, *propagation_options) Gecode::Raw::rel(space, var, (negate ? bot_xor : bot_eqv), reif_var.to_bool_var.bind, *propagation_options) end else should_hold = !negate & rhs if reif_var.nil? lhs.to_minimodel_bool_expr.post(space, should_hold, *propagation_options) else var = lhs.to_minimodel_bool_expr.post(space, *propagation_options) Gecode::Raw::rel(space, var, (should_hold ? bot_eqv : bot_xor), reif_var.to_bool_var.bind, *propagation_options) end end end