return del self.symbols[symbol.name] def contains_symbol(self, symbol): if symbol.name not in self.symbols: return False sort = self.symbols[symbol.name].sort if isinstance(sort, UnionSort): return symbol.sort in sort.sorts return True def __str__(self): return sig_to_str(self) alpha = lg.TopSort('alpha') lg.BooleanSort.name = 'bool' polymorphic_symbols_list = [ ('<', [alpha, alpha, lg.Boolean]), ('<=', [alpha, alpha, lg.Boolean]), ('>', [alpha, alpha, lg.Boolean]), ('>=', [alpha, alpha, lg.Boolean]), ('+', [alpha, alpha, alpha]), ('*', [alpha, alpha, alpha]), ('-', [alpha, alpha, alpha]), ('/', [alpha, alpha, alpha]), ] polymorphic_symbols = dict(
def TopFunctionSort(arity): if arity == 0: return lg.TopSort('alpha') res = FunctionSort( *[lg.TopSort('alpha{}'.format(idx)) for idx in range(arity + 1)]) return res
def __init__(self): self.sort = lg.TopSort('alpha')