Exemple #1
0
# -*- encoding: utf-8 -*-
import math
import operator

from propagator.generic_operator import make_generic_operator

add = make_generic_operator(2, "add", operator.add)

sub = make_generic_operator(2, "sub", operator.sub)

mul = make_generic_operator(2, "mul", operator.mul)

truediv = make_generic_operator(2, "truediv", operator.truediv)

lt = make_generic_operator(2, "lt", operator.lt)

gt = make_generic_operator(2, "gt", operator.gt)

le = make_generic_operator(2, "le", operator.le)

ge = make_generic_operator(2, "ge", operator.ge)

not_ = make_generic_operator(1, "not_", operator.not_)

sqrt = make_generic_operator(1, "sqrt", math.sqrt)

abs = make_generic_operator(1, "abs", abs)

square = make_generic_operator(1, "square", lambda x: mul(x, x))
Exemple #2
0
        self.message = message

    def __repr__(self):
        if self.message is None:
            return "Contradiction()"
        else:
            return "Contradiction('{message}')".format(**vars(self))

    def __str__(self):
        return repr(self)

    def __unicode__(self):
        return repr(self)


is_contradictory = make_generic_operator(
    1, "is_contradictory", lambda x: isinstance(x, Contradiction))
is_nothing = make_generic_operator(1, "is_nothing", partial(is_, None))
is_not_nothing = make_generic_operator(1, "is_not_nothing",
                                       lambda x: not is_nothing(x))
is_anything = lambda x: True


def _default_merge(content, increment):
    debug("Merging {content} and {increment}...".format(**vars()))
    if content == increment:
        return content
    else:
        return Contradiction('{content} != {increment}'.format(**vars()))


merge = make_generic_operator(2, "merge", _default_merge)
Exemple #3
0
    def __init__(self, message=None):
        self.message = message

    def __repr__(self):
        if self.message is None:
            return "Contradiction()"
        else:
            return "Contradiction('{message}')".format(**vars(self))

    def __str__(self):
        return repr(self)

    def __unicode__(self):
        return repr(self)

is_contradictory = make_generic_operator(1, "is_contradictory", lambda x: isinstance(x, Contradiction))
is_nothing = make_generic_operator(1, "is_nothing", partial(is_, None))
is_not_nothing = make_generic_operator(1, "is_not_nothing", lambda x: not is_nothing(x))
is_anything = lambda x: True

def _default_merge(content, increment):
    debug("Merging {content} and {increment}...".format(**vars()))
    if content == increment:
        return content
    else:
        return Contradiction('{content} != {increment}'.format(**vars()))

merge = make_generic_operator(2, "merge", _default_merge)

def implies(v1, v2):
    return v1 == merge(v1, v2)