예제 #1
0
def substOne(a: PPSortOrDimVar, b: PPSortOrDim, sortTerm: PPSort) -> PPSort:
    """
    substitute b for all the occurrences of variable a in sortTerm
    """
    term1 = ASTUtils.applyTd(sortTerm, lambda x: type(x) == PPSortVar,
                             lambda x: b if x == a else x)
    term2 = ASTUtils.applyTd(term1, lambda x: type(x) == PPDimVar, lambda x: b
                             if x == a else x)
    return term2
예제 #2
0
    def _giveUniqueNamesToUnks(self, st: PPTerm):
        def rename(nt: PPTermUnk):
            if nt.name == 'Unk':
                return PPTermUnk("nn_fun_%s_%d" % (self.nnprefix, self._ntNameGen()), nt.sort)
            else:  # Renaming not required.
                return nt

        return ASTUtils.applyTd(st, ASTUtils.isUnk, rename)
예제 #3
0
    def _giveUniqueNamesToUnks(self, st: PPTerm):
        def rename(nt: PPTermUnk):
            return PPTermUnk(
                "nn_fun_%s_%d" % (self.nnprefix, self._ntNameGen()), nt.sort)

        return ASTUtils.applyTd(st, ASTUtils.isUnk, rename)