# File ai/csp/constraint.rb, line 59
        def propagate(variable, level)
            return true unless v = forward_checkable?

            v.each_value_with_index(level) { |value,index|
                v.value = value
                v.prune(level, index) unless check?
            }
            v.value = UNSET
            not v.domain_empty?(level)
        end