drop stl. in utils version of canonicalization

This commit is contained in:
Marcell Vazquez-Chanlatte 2016-12-15 21:18:10 -08:00
parent d86d155b7a
commit 6fdb0edcf6
3 changed files with 19 additions and 18 deletions

View file

@ -5,4 +5,3 @@ from stl.parser import parse
from stl.synth import lex_param_project
from stl.boolean_eval import pointwise_sat
from stl.fastboolean_eval import pointwise_satf
from stl.smooth_robustness import smooth_robustness

View file

@ -42,11 +42,13 @@ def admissible_params(phi, eps, L):
def symbolic_params(phi, eps, L):
L = sym.Dummy("L")
eps = sym.Dummy("eps")
return Param(
L=sym.Dummy("L"),
h=sym.Dummy("h"),
L=L,
h=sample_rate(eps, L),
B=sym.Dummy("B"),
eps=sym.Dummy("eps"),
eps=eps,
)
def smooth_robustness(phi, *, L=None, eps=None):

View file

@ -4,7 +4,7 @@ from lenses import lens, Lens
import funcy as fn
import sympy
from stl.ast import LinEq, And, Or, NaryOpSTL, F, G, Interval
from stl.ast import LinEq, And, Or, NaryOpSTL, F, G, Interval, Neg
def walk(stl, bfs=False):
"""Walks Ast. Defaults to DFS unless BFS flag is set."""
@ -88,23 +88,23 @@ def set_params(stl_or_lens, val):
def f_neg_or_canonical_form(phi):
if isinstance(phi, stl.LinEq):
if isinstance(phi, LinEq):
return phi
children = [f_neg_or_canonical_form(s) for s in phi.children()]
if isinstance(phi, (stl.And, stl.G)):
children = [stl.ast.Neg(s) for s in children]
if isinstance(phi, (And, G)):
children = [Neg(s) for s in children]
children = tuple(children)
if isinstance(phi, stl.Or):
return stl.Or(children)
elif isinstance(phi, stl.And):
return stl.Neg(stl.Or(children))
elif isinstance(phi, stl.Neg):
return stl.Neg(children[0])
elif isinstance(phi, stl.F):
return stl.F(phi.interval, children[0])
elif isinstance(phi, stl.G):
return stl.Neg(stl.F(phi.interval, children[0]))
if isinstance(phi, Or):
return Or(children)
elif isinstance(phi, And):
return Neg(Or(children))
elif isinstance(phi, Neg):
return Neg(children[0])
elif isinstance(phi, F):
return F(phi.interval, children[0])
elif isinstance(phi, G):
return Neg(F(phi.interval, children[0]))
else:
raise NotImplementedError