octagon_domain.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:Lyra 作者: caterinaurban 项目源码 文件源码
def __repr__(self):
        if self.is_bottom():
            return "?"
        elif self.is_top():
            return "?"
        else:
            res = []
            # represent unary constraints first
            for var in self.variables:
                lower = - self[PLUS, var, MINUS, var] // 2
                upper = self[MINUS, var, PLUS, var] // 2
                if lower < inf and upper < inf:
                    res.append(f"{lower}?{var.name}?{upper}")
                elif lower < inf:
                    res.append(f"{lower}?{var.name}")
                elif upper < inf:
                    res.append(f"{var.name}?{upper}")
            # represent binary constraints second, do not repeat identical inequalities
            for i, var1 in enumerate(self.variables):
                for j, var2 in enumerate(self.variables):
                    if i > j:
                        c = self[MINUS, var1, PLUS, var2]
                        if c < inf:
                            res.append(f"{var1.name}+{var2.name}?{c}")
                        c = self[MINUS, var1, MINUS, var2]
                        if c < inf:
                            res.append(f"{var1.name}-{var2.name}?{c}")
                        c = self[PLUS, var1, PLUS, var2]
                        if c < inf:
                            res.append(f"-{var1.name}+{var2.name}?{c}")
                        c = self[PLUS, var1, MINUS, var2]
                        if c < inf:
                            res.append(f"-{var1.name}-{var2.name}?{c}")
            return ", ".join(res)
评论列表


问题


面经


文章

微信
公众号

扫码关注公众号