def val_func(p, a, b): if p.signature.id != "Is": return False if not issubtype(a.signature.return_type, b.signature.return_type) and \ not issubtype(b.signature.return_type, a.signature.return_type): return False if not (issubtype(a.signature.return_type, 'number') or issubtype(a.signature.return_type, 'entity')): return False return BinaryRule.val_func(p, a, b)
def val_func(p, a, b): if p.signature.id != "CC": return False if a.signature.valence > 0: return False if b.signature.valence > 0: return False if a.signature.return_type != b.signature.return_type: return False return BinaryRule.val_func(p, a, b)
def val_func(p, a, b): if p.signature.id in ('Is', 'CC') or a.signature.id in ('Is', 'CC') or b.signature.id in ('Is', 'CC'): return False return BinaryRule.val_func(p, a, b)