X-Git-Url: https://scm.cri.ensmp.fr/git/linpy.git/blobdiff_plain/25ce908cffca380f930182a77c1e5a4491042a1c..960f0c252361dfd696359f803aae40a9b13b14a6:/pypol/polyhedra.py diff --git a/pypol/polyhedra.py b/pypol/polyhedra.py index fe143d4..9bfc64b 100644 --- a/pypol/polyhedra.py +++ b/pypol/polyhedra.py @@ -1,3 +1,20 @@ +# Copyright 2014 MINES ParisTech +# +# This file is part of Linpy. +# +# Linpy is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Linpy is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Linpy. If not, see . + import functools import math import numbers @@ -56,23 +73,23 @@ class Polyhedron(Domain): @property def equalities(self): - """ - Return a list of the equalities in a set. - """ + """ + Return a list of the equalities in a set. + """ return self._equalities @property def inequalities(self): - """ - Return a list of the inequalities in a set. - """ + """ + Return a list of the inequalities in a set. + """ return self._inequalities @property def constraints(self): - """ - Return ta list of the constraints of a set. - """ + """ + Return ta list of the constraints of a set. + """ return self._constraints @property @@ -115,9 +132,10 @@ class Polyhedron(Domain): return True def subs(self, symbol, expression=None): - """ - Subsitute the given value into an expression and return the resulting expression. - """ + """ + Subsitute the given value into an expression and return the resulting + expression. + """ equalities = [equality.subs(symbol, expression) for equality in self.equalities] inequalities = [inequality.subs(symbol, expression) @@ -242,18 +260,18 @@ class Polyhedron(Domain): @classmethod def fromsympy(cls, expr): - """ - Convert a sympy object to an expression. - """ + """ + Convert a sympy object to an expression. + """ domain = Domain.fromsympy(expr) if not isinstance(domain, Polyhedron): raise ValueError('non-polyhedral expression: {!r}'.format(expr)) return domain def tosympy(self): - """ - Return an expression as a sympy object. - """ + """ + Return an expression as a sympy object. + """ import sympy constraints = [] for equality in self.equalities: @@ -262,6 +280,7 @@ class Polyhedron(Domain): constraints.append(sympy.Ge(inequality.tosympy(), 0)) return sympy.And(*constraints) + class EmptyType(Polyhedron): __slots__ = Polyhedron.__slots__ @@ -370,4 +389,3 @@ def Ge(left, right): Assert first set is greater than or equal to the second set. """ return Polyhedron([], [left - right]) -