コード例 #1
0
 def test_init(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     x = PyLinexpr1(e)
     x.set_coeff(PyVar('x0'), PyDoubleScalarCoeff(3))
     x.set_coeff(PyVar('z'), PyDoubleScalarCoeff(-9))
     x.set_cst(PyDoubleScalarCoeff(8))
     c = PyLincons1(ConsTyp.AP_CONS_SUPEQ, x)
     self.assertEqual(str(c), '3.0·x0 - 9.0·z + 8.0 >= 0')
     self.assertEqual(str(PyLincons1.unsat(e)), '-1.0 >= 0')
     self.assertEqual(str(PyLincons1(ConsTyp.AP_CONS_DISEQ, PyLinexpr1(e))), '0.0 != 0')
コード例 #2
0
 def test_init(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     x = PyLinexpr1(e)
     x0 = PyLinexpr1(e, 0)
     self.assertEqual(str(PyTexpr1(x)), '0.0')
     self.assertEqual(str(PyTexpr1(x0)), '0.0 + 0.0 · x0 + 0.0 · y + 0.0 · z')
     x.set_coeff(PyVar('x0'), PyDoubleScalarCoeff(-1))
     x.set_coeff(PyVar('z'), PyDoubleScalarCoeff(-9))
     x.set_cst(PyDoubleScalarCoeff(8))
     self.assertEqual(str(PyTexpr1(x)), '8.0 - 1.0 · x0 - 9.0 · z')
コード例 #3
0
 def test_is_unsat(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     x = PyLinexpr1(e)
     x.set_coeff(PyVar('x0'), PyDoubleScalarCoeff(3))
     x.set_coeff(PyVar('z'), PyDoubleScalarCoeff(-9))
     x.set_cst(PyDoubleScalarCoeff(8))
     c = PyLincons1(ConsTyp.AP_CONS_SUPEQ, x)
     self.assertFalse(c.is_unsat())
     self.assertTrue(PyLincons1.unsat(e).is_unsat())
     self.assertTrue(PyLincons1(ConsTyp.AP_CONS_DISEQ, PyLinexpr1(e)).is_unsat())
コード例 #4
0
 def test_init(self):
     e = PyEnvironment([PyVar('x'), PyVar('y')], [PyVar('z')])
     x1 = PyLinexpr1(e)
     x1.set_coeff(PyVar('x'), PyDoubleScalarCoeff(3))
     x1.set_coeff(PyVar('z'), PyDoubleScalarCoeff(-9))
     x1.set_cst(PyDoubleScalarCoeff(8))
     c1 = PyLincons1(ConsTyp.AP_CONS_SUPEQ, x1)
     x2 = PyLinexpr1(e)
     x2.set_coeff(PyVar('x'), PyDoubleScalarCoeff(1))
     c2 = PyLincons1(ConsTyp.AP_CONS_SUP, x2)
     a = PyLincons1Array([c1, c2])
     self.assertEqual(str(a), '3.0·x - 9.0·z + 8.0 >= 0 ∧ 1.0·x + 0.0 > 0')
コード例 #5
0
 def test_is_real(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     x0 = PyLinexpr1(e)
     x0.set_coeff(PyVar('x0'), PyDoubleScalarCoeff(3))
     self.assertFalse(x0.is_real())
     x1 = PyLinexpr1(e)
     x1.set_coeff(PyVar('x0'), PyDoubleScalarCoeff(3))
     x1.set_coeff(PyVar('z'), PyDoubleScalarCoeff(-9))
     self.assertFalse(x1.is_real())
     x2 = PyLinexpr1(e)
     x2.set_coeff(PyVar('z'), PyDoubleScalarCoeff(-9))
     self.assertTrue(x2.is_real())
コード例 #6
0
 def test_get(self):
     e = PyEnvironment([PyVar('x'), PyVar('y')], [PyVar('z')])
     x1 = PyLinexpr1(e)
     x1.set_coeff(PyVar('x'), PyDoubleScalarCoeff(3))
     x1.set_coeff(PyVar('z'), PyDoubleScalarCoeff(-9))
     x1.set_cst(PyDoubleScalarCoeff(8))
     c1 = PyLincons1(ConsTyp.AP_CONS_SUPEQ, x1)
     x2 = PyLinexpr1(e)
     x2.set_coeff(PyVar('x'), PyDoubleScalarCoeff(1))
     c2 = PyLincons1(ConsTyp.AP_CONS_SUP, x2)
     a = PyLincons1Array([c1, c2])
     c = a.get(1)
     self.assertNotEqual(str(c), str(c1))
     self.assertEqual(str(c), str(c2))
コード例 #7
0
 def test_is_quasilinear(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     x0 = PyLinexpr1(e)
     x0.set_coeff(PyVar('x0'), PyDoubleScalarCoeff(3))
     x0.set_cst(PyDoubleScalarCoeff(-9))
     self.assertTrue(x0.is_quasilinear())
     x1 = PyLinexpr1(e)
     x1.set_coeff(PyVar('x0'), PyDoubleIntervalCoeff(3, 3))
     x1.set_cst(PyDoubleIntervalCoeff(-9, 9))
     self.assertFalse(x1.is_quasilinear())
     x2 = PyLinexpr1(e)
     x2.set_coeff(PyVar('x0'), PyDoubleScalarCoeff(3))
     x2.set_cst(PyDoubleIntervalCoeff(-9, 9))
     self.assertTrue(x2.is_quasilinear())
コード例 #8
0
ファイル: test_tcons1.py プロジェクト: caterinaurban/apronpy
 def test_substitute(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     x0 = PyLinexpr1(e)
     x0.set_coeff(PyVar('x0'), PyMPQScalarCoeff(1))
     x0.set_cst(PyMPQScalarCoeff(3))
     t0 = PyTexpr1(x0)
     c0 = PyTcons1.make(t0, ConsTyp.AP_CONS_SUPEQ)
     self.assertEqual(str(c0), '3 + 1 · x0 >= 0')
     x1 = PyLinexpr1(e)
     x1.set_coeff(PyVar('x0'), PyMPQScalarCoeff(1))
     x1.set_cst(PyMPQScalarCoeff(-1))
     t1 = PyTexpr1(x1)
     c1 = PyTcons1.make(t1, ConsTyp.AP_CONS_SUPEQ)
     self.assertEqual(str(c1), '-1 + 1 · x0 >= 0')
     self.assertEqual(str(c0.substitute(PyVar('x0'), t1)),
                      '3 + 1 · (-1 + 1 · x0) >= 0')
コード例 #9
0
 def test_deepcopy(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     x0 = PyLinexpr1(e)
     x1 = deepcopy(x0)
     x2 = x0
     self.assertNotEqual(id(x0), id(x1))
     self.assertEqual(id(x0), id(x2))
コード例 #10
0
ファイル: test_tcons1.py プロジェクト: caterinaurban/apronpy
 def test_make(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     x = PyLinexpr1(e)
     x.set_coeff(PyVar('x0'), PyDoubleScalarCoeff(3))
     x.set_coeff(PyVar('z'), PyDoubleScalarCoeff(-9))
     x.set_cst(PyDoubleScalarCoeff(8))
     c = PyTcons1.make(PyTexpr1(x), ConsTyp.AP_CONS_SUPEQ)
     self.assertEqual(str(c), '8.0 + 3.0 · x0 - 9.0 · z >= 0')
コード例 #11
0
 def test_substitute(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     x0 = PyLinexpr1(e)
     x0.set_coeff(PyVar('x0'), PyMPQScalarCoeff(1))
     x0.set_cst(PyMPQScalarCoeff(3))
     t0 = PyTexpr1(x0)
     self.assertEqual(str(t0), '3 + 1 · x0')
     x1 = PyLinexpr1(e)
     x1.set_coeff(PyVar('x0'), PyMPQScalarCoeff(1))
     x1.set_cst(PyMPQScalarCoeff(-1))
     t1 = PyTexpr1(x1)
     self.assertEqual(str(t1), '-1 + 1 · x0')
     self.assertEqual(str(t0.substitute(PyVar('x0'), t1)), '3 + 1 · (-1 + 1 · x0)')
     x2 = PyLinexpr1(e)
     x2.set_coeff(PyVar('x0'), PyMPQScalarCoeff(1))
     x2.set_cst(PyMPQScalarCoeff(2))
     t2 = PyTexpr1(x2)
     self.assertEqual(str(t2), '2 + 1 · x0')
コード例 #12
0
ファイル: test_tcons1.py プロジェクト: caterinaurban/apronpy
 def test_deepcopy(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     x = PyLinexpr1(e)
     x.set_coeff(PyVar('x0'), PyDoubleScalarCoeff(3))
     x.set_coeff(PyVar('z'), PyDoubleScalarCoeff(-9))
     x.set_cst(PyDoubleScalarCoeff(8))
     c0 = PyTcons1.make(PyTexpr1(x), ConsTyp.AP_CONS_SUPEQ)
     c1 = deepcopy(c0)
     c2 = c0
     self.assertNotEqual(id(c0), id(c1))
     self.assertEqual(id(c0), id(c2))
コード例 #13
0
ファイル: lincons1.py プロジェクト: caterinaurban/apronpy
 def unsat(cls, environment: PyEnvironment):
     x = PyLinexpr1(environment)
     x.set_cst(PyDoubleScalarCoeff(-1.0))
     lincons = cls(ConsTyp.AP_CONS_SUPEQ, x)
     return lincons
コード例 #14
0
 def test_set_cst(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     x = PyLinexpr1(e)
     x.set_cst(PyDoubleScalarCoeff(9))
     self.assertEqual(str(x), '9.0')
コード例 #15
0
 def test_get_coeff(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     self.assertEqual(
         PyLinexpr1(e).get_coeff(PyVar('x0')), PyDoubleScalarCoeff(0.0))
     self.assertNotEqual(
         PyLinexpr1(e).get_coeff(PyVar('x0')), PyDoubleScalarCoeff(-3))
コード例 #16
0
 def test_set_coeff(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     x = PyLinexpr1(e)
     c = PyLincons1(ConsTyp.AP_CONS_SUPEQ, x)
     c.set_coeff(PyVar('z'), PyDoubleScalarCoeff(-9))
     self.assertEqual(str(c), '-9.0·z + 0.0 >= 0')
コード例 #17
0
 def test_get_coeff(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     x = PyLinexpr1(e)
     c = PyLincons1(ConsTyp.AP_CONS_SUPEQ, x)
     self.assertEqual(c.get_coeff(PyVar('x0')), PyDoubleScalarCoeff(0.0))
     self.assertNotEqual(c.get_coeff(PyVar('x0')), PyDoubleScalarCoeff(-3))
コード例 #18
0
 def test_set_typ(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     x = PyLinexpr1(e)
     c = PyLincons1(ConsTyp.AP_CONS_SUPEQ, x)
     c.set_typ(ConsTyp.AP_CONS_DISEQ)
     self.assertEqual(str(c), '0.0 != 0')
コード例 #19
0
 def test_get_typ(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     x = PyLinexpr1(e)
     c = PyLincons1(ConsTyp.AP_CONS_SUPEQ, x)
     self.assertEqual(repr(c.get_typ()), '>=')
     self.assertNotEqual(repr(c.get_typ()), '<')
コード例 #20
0
 def test_init(self):
     e = PyEnvironment([PyVar('x0'), PyVar('y')], [PyVar('z')])
     self.assertEqual(str(PyLinexpr1(e)), '0.0')
     self.assertEqual(str(PyLinexpr1(e, 0)), '0.0·x0 + 0.0·y + 0.0·z + 0.0')