Beispiel #1
0
def sort_infer(term):
    res = concretize_sorts(term)
    for x in chain(lu.used_variables(res),lu.used_constants(res)):
        if lg.contains_topsort(x.sort) or lg.is_polymorphic(x.sort):
            raise IvyError(None,"cannot infer sort of {} in {}".format(x,term))
#    print "sort_infer: res = {!r}".format(res)
    return res
Beispiel #2
0
 def __call__(self, *terms):
     if len(terms) != self.arity:
         raise ArityError(self.arity, terms)
     return substitute(self.formula, dict(
         (v, concretize_sorts(t, v.sort))
         for v, t in zip(self.variables, terms)
     ))
Beispiel #3
0
def sort_infer(term):
    res = concretize_sorts(term)
    for x in chain(lu.used_variables(res),lu.used_constants(res)):
        if lg.contains_topsort(x.sort) or lg.is_polymorphic(x.sort):
            raise IvyError(None,"cannot infer sort of {}".format(x))
#    print "sort_infer: res = {!r}".format(res)
    return res
Beispiel #4
0
 def __call__(self, *concepts):
     if len(concepts) != self.arity:
         raise ArityError(self.arity, concepts)
     assert all(type(c) is Concept for c in concepts)
     if tuple(c.arity for c in concepts) != self.arities:
         raise ArityError(self.arities, concepts)
     return concretize_sorts(substitute_apply(
         self.formula,
         zip(self.variables, concepts),
         by_name=True,
     ))
Beispiel #5
0
def sort_infer(term, sort=None, no_error=False):
    res = concretize_sorts(term, sort)
    check_concretely_sorted(res, no_error)
    return res
Beispiel #6
0
def sort_infer(term,sort=None,no_error=False):
    res = concretize_sorts(term,sort)
    check_concretely_sorted(res,no_error)
    return res