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
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)
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)