def test_syntax_constrain(self): system = expressions.System() a = expressions.Var() system.constrain( 3==a*2 ) expressions.constrain( a == 15 ) self.assertEqual( system.evaluate(a), 1.5 ) self.assertEqual( expressions.evaluate(a), 15 )
def test_mod_eq1(self): a = expressions.Var('a') equ = (a*2==3).mod(7) self.assertEqual( equ._mod, equ._zero_expr._mod ) self.assertEqual( (equ/2).coefficient(a) % 7, 1 ) self.assertEqual( (equ/2).rhs_constant() % 7, 5 ) self.assertEqual( equ.solve_for_var(a), 5 ) self.assertEqual( (a==5).mod(7).solve_for_var(a), 5 ) self.assertEqual( (a==12).mod(7).solve_for_var(a), 5 ) self.assertEqual( list( Canonical([ (a*2==3).mod(5) ]) ), [(6*a==9).mod(5)] ) self.assertEqual( (a==1).mod(3), (a==1).mod(3) ) self.assertNotEqual( a==1, (a==1).mod(3) ) expressions.constrain( a*2==3 , mod=5 ) self.assertEqual( a, 4)