diff --git a/stl/utils.py b/stl/utils.py index 025b9ca..79e8d12 100644 --- a/stl/utils.py +++ b/stl/utils.py @@ -121,12 +121,12 @@ def from_mtl(phi:MTL, ap_map:Dict[AtomicPred, LinEq]) -> STL: focus = AP_lens(phi) return focus.modify(ap_map.get) +def _lineq_lipschitz(lineq): + return sum(map(abs, lens(lineq).terms.each_().coeff.get_all())) + def linear_stl_lipschitz(phi): - r = max(abs(c) for c in terms_lens(phi).coeff.get_all()) - try: - return float(r) - except TypeError: - return r + """Infinity norm lipschitz bound of linear inequality predicate.""" + return float(max(map(_lineq_lipschitz, lineq_lens(phi).get_all()))) # EDSL