Exemplo n.º 1
0
    def normalize(self: Z) -> Z:
        if (self == Z.cons(pos=var.x, neg=var.y)):
            # if self.x == 0 or self.y == 0
            if var.x == Nat.zero() or var.y == Nat.zero():
                return self

            # else we reduce
            elif var.x == Nat.suc(var.xx) and var.y == Nat.suc(var.yy):
                return Z.cons(pos=var.xx, neg=var.yy).normalize()
Exemplo n.º 2
0
    def __init__(self, *args, **kwargs):
        if (len(args) == 1) and isinstance(args[0], int):
            number = args[0]

            Sort.__init__(self)
            if number == 0:
                self._generator = Z.cons
                self._generator_args = {'pos': Nat.zero(), 'neg': Nat.zero()}
            elif number > 0:
                self._generator = Z.cons
                self._generator_args = {'pos': Nat(number), 'neg': Nat.zero()}
            else:
                self._generator = Z.cons
                self._generator_args = {'pos': Nat.zero(), 'neg': Nat(-number)}

        else:
            Sort.__init__(self, **kwargs)
Exemplo n.º 3
0
    def __init__(self, *args, **kwargs):
        if (len(args) == 1) and isinstance(args[0], Sequence):
            list_args = args[0]

            Sort.__init__(self)
            if len(list_args) == 0:
                self._generator = State.cons
                self._generator_args = {
                    "program": Expr_list.empty(),
                    "choice": Nat.zero(),
                    "stack": Expr_list.empty()
                }
            else:
                self._generator = State.cons
                self._generator_args = {
                    "program": list_args[0],
                    "choice": list_args[1],
                    "stack": list_args[2]
                }
        else:
            Sort.__init__(self, **kwargs)
Exemplo n.º 4
0
 def empty() -> State:
     return State.cons(program=Expr_list.empty(),
                       choice=Nat.zero(),
                       stack=Expr_list.empty())