Best Python code snippet using avocado_python
test_query.py
Source:test_query.py
...21from sympy.assumptions.assume import assuming22import math23def test_int_1():24 z = 125 assert ask(Q.commutative(z)) is True26 assert ask(Q.integer(z)) is True27 assert ask(Q.rational(z)) is True28 assert ask(Q.real(z)) is True29 assert ask(Q.complex(z)) is True30 assert ask(Q.irrational(z)) is False31 assert ask(Q.imaginary(z)) is False32 assert ask(Q.positive(z)) is True33 assert ask(Q.negative(z)) is False34 assert ask(Q.even(z)) is False35 assert ask(Q.odd(z)) is True36 assert ask(Q.finite(z)) is True37 assert ask(Q.prime(z)) is False38 assert ask(Q.composite(z)) is False39 assert ask(Q.hermitian(z)) is True40 assert ask(Q.antihermitian(z)) is False41def test_int_11():42 z = 1143 assert ask(Q.commutative(z)) is True44 assert ask(Q.integer(z)) is True45 assert ask(Q.rational(z)) is True46 assert ask(Q.real(z)) is True47 assert ask(Q.complex(z)) is True48 assert ask(Q.irrational(z)) is False49 assert ask(Q.imaginary(z)) is False50 assert ask(Q.positive(z)) is True51 assert ask(Q.negative(z)) is False52 assert ask(Q.even(z)) is False53 assert ask(Q.odd(z)) is True54 assert ask(Q.finite(z)) is True55 assert ask(Q.prime(z)) is True56 assert ask(Q.composite(z)) is False57 assert ask(Q.hermitian(z)) is True58 assert ask(Q.antihermitian(z)) is False59def test_int_12():60 z = 1261 assert ask(Q.commutative(z)) is True62 assert ask(Q.integer(z)) is True63 assert ask(Q.rational(z)) is True64 assert ask(Q.real(z)) is True65 assert ask(Q.complex(z)) is True66 assert ask(Q.irrational(z)) is False67 assert ask(Q.imaginary(z)) is False68 assert ask(Q.positive(z)) is True69 assert ask(Q.negative(z)) is False70 assert ask(Q.even(z)) is True71 assert ask(Q.odd(z)) is False72 assert ask(Q.finite(z)) is True73 assert ask(Q.prime(z)) is False74 assert ask(Q.composite(z)) is True75 assert ask(Q.hermitian(z)) is True76 assert ask(Q.antihermitian(z)) is False77def test_float_1():78 z = 1.079 assert ask(Q.commutative(z)) is True80 assert ask(Q.integer(z)) is False81 assert ask(Q.rational(z)) is None82 assert ask(Q.real(z)) is True83 assert ask(Q.complex(z)) is True84 assert ask(Q.irrational(z)) is None85 assert ask(Q.imaginary(z)) is False86 assert ask(Q.positive(z)) is True87 assert ask(Q.negative(z)) is False88 assert ask(Q.even(z)) is False89 assert ask(Q.odd(z)) is False90 assert ask(Q.finite(z)) is True91 assert ask(Q.prime(z)) is False92 assert ask(Q.composite(z)) is False93 assert ask(Q.hermitian(z)) is True94 assert ask(Q.antihermitian(z)) is False95 z = 7.212396 assert ask(Q.commutative(z)) is True97 assert ask(Q.integer(z)) is False98 assert ask(Q.rational(z)) is None99 assert ask(Q.real(z)) is True100 assert ask(Q.complex(z)) is True101 assert ask(Q.irrational(z)) is None102 assert ask(Q.imaginary(z)) is False103 assert ask(Q.positive(z)) is True104 assert ask(Q.negative(z)) is False105 assert ask(Q.even(z)) is False106 assert ask(Q.odd(z)) is False107 assert ask(Q.finite(z)) is True108 assert ask(Q.prime(z)) is False109 assert ask(Q.composite(z)) is False110 assert ask(Q.hermitian(z)) is True111 assert ask(Q.antihermitian(z)) is False112 # test for issue #12168113 assert ask(Q.rational(math.pi)) is None114def test_zero_0():115 z = Integer(0)116 assert ask(Q.nonzero(z)) is False117 assert ask(Q.zero(z)) is True118 assert ask(Q.commutative(z)) is True119 assert ask(Q.integer(z)) is True120 assert ask(Q.rational(z)) is True121 assert ask(Q.real(z)) is True122 assert ask(Q.complex(z)) is True123 assert ask(Q.imaginary(z)) is False124 assert ask(Q.positive(z)) is False125 assert ask(Q.negative(z)) is False126 assert ask(Q.even(z)) is True127 assert ask(Q.odd(z)) is False128 assert ask(Q.finite(z)) is True129 assert ask(Q.prime(z)) is False130 assert ask(Q.composite(z)) is False131 assert ask(Q.hermitian(z)) is True132 assert ask(Q.antihermitian(z)) is False133def test_negativeone():134 z = Integer(-1)135 assert ask(Q.nonzero(z)) is True136 assert ask(Q.zero(z)) is False137 assert ask(Q.commutative(z)) is True138 assert ask(Q.integer(z)) is True139 assert ask(Q.rational(z)) is True140 assert ask(Q.real(z)) is True141 assert ask(Q.complex(z)) is True142 assert ask(Q.irrational(z)) is False143 assert ask(Q.imaginary(z)) is False144 assert ask(Q.positive(z)) is False145 assert ask(Q.negative(z)) is True146 assert ask(Q.even(z)) is False147 assert ask(Q.odd(z)) is True148 assert ask(Q.finite(z)) is True149 assert ask(Q.prime(z)) is False150 assert ask(Q.composite(z)) is False151 assert ask(Q.hermitian(z)) is True152 assert ask(Q.antihermitian(z)) is False153def test_infinity():154 assert ask(Q.commutative(oo)) is True155 assert ask(Q.integer(oo)) is False156 assert ask(Q.rational(oo)) is False157 assert ask(Q.algebraic(oo)) is False158 assert ask(Q.real(oo)) is False159 assert ask(Q.extended_real(oo)) is True160 assert ask(Q.complex(oo)) is False161 assert ask(Q.irrational(oo)) is False162 assert ask(Q.imaginary(oo)) is False163 assert ask(Q.positive(oo)) is False164 #assert ask(Q.extended_positive(oo)) is True165 assert ask(Q.negative(oo)) is False166 assert ask(Q.even(oo)) is False167 assert ask(Q.odd(oo)) is False168 assert ask(Q.finite(oo)) is False169 assert ask(Q.prime(oo)) is False170 assert ask(Q.composite(oo)) is False171 assert ask(Q.hermitian(oo)) is False172 assert ask(Q.antihermitian(oo)) is False173def test_neg_infinity():174 mm = S.NegativeInfinity175 assert ask(Q.commutative(mm)) is True176 assert ask(Q.integer(mm)) is False177 assert ask(Q.rational(mm)) is False178 assert ask(Q.algebraic(mm)) is False179 assert ask(Q.real(mm)) is False180 assert ask(Q.extended_real(mm)) is True181 assert ask(Q.complex(mm)) is False182 assert ask(Q.irrational(mm)) is False183 assert ask(Q.imaginary(mm)) is False184 assert ask(Q.positive(mm)) is False185 assert ask(Q.negative(mm)) is False186 #assert ask(Q.extended_negative(mm)) is True187 assert ask(Q.even(mm)) is False188 assert ask(Q.odd(mm)) is False189 assert ask(Q.finite(mm)) is False190 assert ask(Q.prime(mm)) is False191 assert ask(Q.composite(mm)) is False192 assert ask(Q.hermitian(mm)) is False193 assert ask(Q.antihermitian(mm)) is False194def test_nan():195 nan = S.NaN196 assert ask(Q.commutative(nan)) is True197 assert ask(Q.integer(nan)) is False198 assert ask(Q.rational(nan)) is False199 assert ask(Q.algebraic(nan)) is False200 assert ask(Q.real(nan)) is False201 assert ask(Q.extended_real(nan)) is False202 assert ask(Q.complex(nan)) is False203 assert ask(Q.irrational(nan)) is False204 assert ask(Q.imaginary(nan)) is False205 assert ask(Q.positive(nan)) is False206 assert ask(Q.nonzero(nan)) is True207 assert ask(Q.zero(nan)) is False208 assert ask(Q.even(nan)) is False209 assert ask(Q.odd(nan)) is False210 assert ask(Q.finite(nan)) is False211 assert ask(Q.prime(nan)) is False212 assert ask(Q.composite(nan)) is False213 assert ask(Q.hermitian(nan)) is False214 assert ask(Q.antihermitian(nan)) is False215def test_Rational_number():216 r = Rational(3, 4)217 assert ask(Q.commutative(r)) is True218 assert ask(Q.integer(r)) is False219 assert ask(Q.rational(r)) is True220 assert ask(Q.real(r)) is True221 assert ask(Q.complex(r)) is True222 assert ask(Q.irrational(r)) is False223 assert ask(Q.imaginary(r)) is False224 assert ask(Q.positive(r)) is True225 assert ask(Q.negative(r)) is False226 assert ask(Q.even(r)) is False227 assert ask(Q.odd(r)) is False228 assert ask(Q.finite(r)) is True229 assert ask(Q.prime(r)) is False230 assert ask(Q.composite(r)) is False231 assert ask(Q.hermitian(r)) is True232 assert ask(Q.antihermitian(r)) is False233 r = Rational(1, 4)234 assert ask(Q.positive(r)) is True235 assert ask(Q.negative(r)) is False236 r = Rational(5, 4)237 assert ask(Q.negative(r)) is False238 assert ask(Q.positive(r)) is True239 r = Rational(5, 3)240 assert ask(Q.positive(r)) is True241 assert ask(Q.negative(r)) is False242 r = Rational(-3, 4)243 assert ask(Q.positive(r)) is False244 assert ask(Q.negative(r)) is True245 r = Rational(-1, 4)246 assert ask(Q.positive(r)) is False247 assert ask(Q.negative(r)) is True248 r = Rational(-5, 4)249 assert ask(Q.negative(r)) is True250 assert ask(Q.positive(r)) is False251 r = Rational(-5, 3)252 assert ask(Q.positive(r)) is False253 assert ask(Q.negative(r)) is True254def test_sqrt_2():255 z = sqrt(2)256 assert ask(Q.commutative(z)) is True257 assert ask(Q.integer(z)) is False258 assert ask(Q.rational(z)) is False259 assert ask(Q.real(z)) is True260 assert ask(Q.complex(z)) is True261 assert ask(Q.irrational(z)) is True262 assert ask(Q.imaginary(z)) is False263 assert ask(Q.positive(z)) is True264 assert ask(Q.negative(z)) is False265 assert ask(Q.even(z)) is False266 assert ask(Q.odd(z)) is False267 assert ask(Q.finite(z)) is True268 assert ask(Q.prime(z)) is False269 assert ask(Q.composite(z)) is False270 assert ask(Q.hermitian(z)) is True271 assert ask(Q.antihermitian(z)) is False272def test_pi():273 z = S.Pi274 assert ask(Q.commutative(z)) is True275 assert ask(Q.integer(z)) is False276 assert ask(Q.rational(z)) is False277 assert ask(Q.algebraic(z)) is False278 assert ask(Q.real(z)) is True279 assert ask(Q.complex(z)) is True280 assert ask(Q.irrational(z)) is True281 assert ask(Q.imaginary(z)) is False282 assert ask(Q.positive(z)) is True283 assert ask(Q.negative(z)) is False284 assert ask(Q.even(z)) is False285 assert ask(Q.odd(z)) is False286 assert ask(Q.finite(z)) is True287 assert ask(Q.prime(z)) is False288 assert ask(Q.composite(z)) is False289 assert ask(Q.hermitian(z)) is True290 assert ask(Q.antihermitian(z)) is False291 z = S.Pi + 1292 assert ask(Q.commutative(z)) is True293 assert ask(Q.integer(z)) is False294 assert ask(Q.rational(z)) is False295 assert ask(Q.algebraic(z)) is False296 assert ask(Q.real(z)) is True297 assert ask(Q.complex(z)) is True298 assert ask(Q.irrational(z)) is True299 assert ask(Q.imaginary(z)) is False300 assert ask(Q.positive(z)) is True301 assert ask(Q.negative(z)) is False302 assert ask(Q.even(z)) is False303 assert ask(Q.odd(z)) is False304 assert ask(Q.finite(z)) is True305 assert ask(Q.prime(z)) is False306 assert ask(Q.composite(z)) is False307 assert ask(Q.hermitian(z)) is True308 assert ask(Q.antihermitian(z)) is False309 z = 2*S.Pi310 assert ask(Q.commutative(z)) is True311 assert ask(Q.integer(z)) is False312 assert ask(Q.rational(z)) is False313 assert ask(Q.algebraic(z)) is False314 assert ask(Q.real(z)) is True315 assert ask(Q.complex(z)) is True316 assert ask(Q.irrational(z)) is True317 assert ask(Q.imaginary(z)) is False318 assert ask(Q.positive(z)) is True319 assert ask(Q.negative(z)) is False320 assert ask(Q.even(z)) is False321 assert ask(Q.odd(z)) is False322 assert ask(Q.finite(z)) is True323 assert ask(Q.prime(z)) is False324 assert ask(Q.composite(z)) is False325 assert ask(Q.hermitian(z)) is True326 assert ask(Q.antihermitian(z)) is False327 z = S.Pi ** 2328 assert ask(Q.commutative(z)) is True329 assert ask(Q.integer(z)) is False330 assert ask(Q.rational(z)) is False331 assert ask(Q.algebraic(z)) is False332 assert ask(Q.real(z)) is True333 assert ask(Q.complex(z)) is True334 assert ask(Q.irrational(z)) is True335 assert ask(Q.imaginary(z)) is False336 assert ask(Q.positive(z)) is True337 assert ask(Q.negative(z)) is False338 assert ask(Q.even(z)) is False339 assert ask(Q.odd(z)) is False340 assert ask(Q.finite(z)) is True341 assert ask(Q.prime(z)) is False342 assert ask(Q.composite(z)) is False343 assert ask(Q.hermitian(z)) is True344 assert ask(Q.antihermitian(z)) is False345 z = (1 + S.Pi) ** 2346 assert ask(Q.commutative(z)) is True347 assert ask(Q.integer(z)) is False348 assert ask(Q.rational(z)) is False349 assert ask(Q.algebraic(z)) is False350 assert ask(Q.real(z)) is True351 assert ask(Q.complex(z)) is True352 assert ask(Q.irrational(z)) is True353 assert ask(Q.imaginary(z)) is False354 assert ask(Q.positive(z)) is True355 assert ask(Q.negative(z)) is False356 assert ask(Q.even(z)) is False357 assert ask(Q.odd(z)) is False358 assert ask(Q.finite(z)) is True359 assert ask(Q.prime(z)) is False360 assert ask(Q.composite(z)) is False361 assert ask(Q.hermitian(z)) is True362 assert ask(Q.antihermitian(z)) is False363def test_E():364 z = S.Exp1365 assert ask(Q.commutative(z)) is True366 assert ask(Q.integer(z)) is False367 assert ask(Q.rational(z)) is False368 assert ask(Q.algebraic(z)) is False369 assert ask(Q.real(z)) is True370 assert ask(Q.complex(z)) is True371 assert ask(Q.irrational(z)) is True372 assert ask(Q.imaginary(z)) is False373 assert ask(Q.positive(z)) is True374 assert ask(Q.negative(z)) is False375 assert ask(Q.even(z)) is False376 assert ask(Q.odd(z)) is False377 assert ask(Q.finite(z)) is True378 assert ask(Q.prime(z)) is False379 assert ask(Q.composite(z)) is False380 assert ask(Q.hermitian(z)) is True381 assert ask(Q.antihermitian(z)) is False382def test_GoldenRatio():383 z = S.GoldenRatio384 assert ask(Q.commutative(z)) is True385 assert ask(Q.integer(z)) is False386 assert ask(Q.rational(z)) is False387 assert ask(Q.algebraic(z)) is True388 assert ask(Q.real(z)) is True389 assert ask(Q.complex(z)) is True390 assert ask(Q.irrational(z)) is True391 assert ask(Q.imaginary(z)) is False392 assert ask(Q.positive(z)) is True393 assert ask(Q.negative(z)) is False394 assert ask(Q.even(z)) is False395 assert ask(Q.odd(z)) is False396 assert ask(Q.finite(z)) is True397 assert ask(Q.prime(z)) is False398 assert ask(Q.composite(z)) is False399 assert ask(Q.hermitian(z)) is True400 assert ask(Q.antihermitian(z)) is False401def test_TribonacciConstant():402 z = S.TribonacciConstant403 assert ask(Q.commutative(z)) is True404 assert ask(Q.integer(z)) is False405 assert ask(Q.rational(z)) is False406 assert ask(Q.algebraic(z)) is True407 assert ask(Q.real(z)) is True408 assert ask(Q.complex(z)) is True409 assert ask(Q.irrational(z)) is True410 assert ask(Q.imaginary(z)) is False411 assert ask(Q.positive(z)) is True412 assert ask(Q.negative(z)) is False413 assert ask(Q.even(z)) is False414 assert ask(Q.odd(z)) is False415 assert ask(Q.finite(z)) is True416 assert ask(Q.prime(z)) is False417 assert ask(Q.composite(z)) is False418 assert ask(Q.hermitian(z)) is True419 assert ask(Q.antihermitian(z)) is False420def test_I():421 z = I422 assert ask(Q.commutative(z)) is True423 assert ask(Q.integer(z)) is False424 assert ask(Q.rational(z)) is False425 assert ask(Q.algebraic(z)) is True426 assert ask(Q.real(z)) is False427 assert ask(Q.complex(z)) is True428 assert ask(Q.irrational(z)) is False429 assert ask(Q.imaginary(z)) is True430 assert ask(Q.positive(z)) is False431 assert ask(Q.negative(z)) is False432 assert ask(Q.even(z)) is False433 assert ask(Q.odd(z)) is False434 assert ask(Q.finite(z)) is True435 assert ask(Q.prime(z)) is False436 assert ask(Q.composite(z)) is False437 assert ask(Q.hermitian(z)) is False438 assert ask(Q.antihermitian(z)) is True439 z = 1 + I440 assert ask(Q.commutative(z)) is True441 assert ask(Q.integer(z)) is False442 assert ask(Q.rational(z)) is False443 assert ask(Q.algebraic(z)) is True444 assert ask(Q.real(z)) is False445 assert ask(Q.complex(z)) is True446 assert ask(Q.irrational(z)) is False447 assert ask(Q.imaginary(z)) is False448 assert ask(Q.positive(z)) is False449 assert ask(Q.negative(z)) is False450 assert ask(Q.even(z)) is False451 assert ask(Q.odd(z)) is False452 assert ask(Q.finite(z)) is True453 assert ask(Q.prime(z)) is False454 assert ask(Q.composite(z)) is False455 assert ask(Q.hermitian(z)) is False456 assert ask(Q.antihermitian(z)) is False457 z = I*(1 + I)458 assert ask(Q.commutative(z)) is True459 assert ask(Q.integer(z)) is False460 assert ask(Q.rational(z)) is False461 assert ask(Q.algebraic(z)) is True462 assert ask(Q.real(z)) is False463 assert ask(Q.complex(z)) is True464 assert ask(Q.irrational(z)) is False465 assert ask(Q.imaginary(z)) is False466 assert ask(Q.positive(z)) is False467 assert ask(Q.negative(z)) is False468 assert ask(Q.even(z)) is False469 assert ask(Q.odd(z)) is False470 assert ask(Q.finite(z)) is True471 assert ask(Q.prime(z)) is False472 assert ask(Q.composite(z)) is False473 assert ask(Q.hermitian(z)) is False474 assert ask(Q.antihermitian(z)) is False475 z = I**(I)476 assert ask(Q.imaginary(z)) is False477 assert ask(Q.real(z)) is True478 z = (-I)**(I)479 assert ask(Q.imaginary(z)) is False480 assert ask(Q.real(z)) is True481 z = (3*I)**(I)482 assert ask(Q.imaginary(z)) is False483 assert ask(Q.real(z)) is False484 z = (1)**(I)485 assert ask(Q.imaginary(z)) is False486 assert ask(Q.real(z)) is True487 z = (-1)**(I)488 assert ask(Q.imaginary(z)) is False489 assert ask(Q.real(z)) is True490 z = (1+I)**(I)491 assert ask(Q.imaginary(z)) is False492 assert ask(Q.real(z)) is False493 z = (I)**(I+3)494 assert ask(Q.imaginary(z)) is True495 assert ask(Q.real(z)) is False496 z = (I)**(I+2)497 assert ask(Q.imaginary(z)) is False498 assert ask(Q.real(z)) is True499 z = (I)**(2)500 assert ask(Q.imaginary(z)) is False501 assert ask(Q.real(z)) is True502 z = (I)**(3)503 assert ask(Q.imaginary(z)) is True504 assert ask(Q.real(z)) is False505 z = (3)**(I)506 assert ask(Q.imaginary(z)) is False507 assert ask(Q.real(z)) is False508 z = (I)**(0)509 assert ask(Q.imaginary(z)) is False510 assert ask(Q.real(z)) is True511def test_bounded():512 x, y, z = symbols('x,y,z')513 assert ask(Q.finite(x)) is None514 assert ask(Q.finite(x), Q.finite(x)) is True515 assert ask(Q.finite(x), Q.finite(y)) is None516 assert ask(Q.finite(x), Q.complex(x)) is None517 assert ask(Q.finite(x + 1)) is None518 assert ask(Q.finite(x + 1), Q.finite(x)) is True519 a = x + y520 x, y = a.args521 # B + B522 assert ask(Q.finite(a), Q.finite(x) & Q.finite(y)) is True523 assert ask(524 Q.finite(a), Q.finite(x) & Q.finite(y) & Q.positive(x)) is True525 assert ask(526 Q.finite(a), Q.finite(x) & Q.finite(y) & Q.positive(y)) is True527 assert ask(Q.finite(a),528 Q.finite(x) & Q.finite(y) & Q.positive(x) & Q.positive(y)) is True529 assert ask(Q.finite(a),530 Q.finite(x) & Q.finite(y) & Q.positive(x) & ~Q.positive(y)) is True531 assert ask(Q.finite(a),532 Q.finite(x) & Q.finite(y) & ~Q.positive(x) & Q.positive(y)) is True533 assert ask(Q.finite(a),534 Q.finite(x) & Q.finite(y) & ~Q.positive(x) & ~Q.positive(y)) is True535 # B + U536 assert ask(Q.finite(a), Q.finite(x) & ~Q.finite(y)) is False537 assert ask(538 Q.finite(a), Q.finite(x) & ~Q.finite(y) & Q.positive(x)) is False539 assert ask(540 Q.finite(a), Q.finite(x) & ~Q.finite(y) & Q.positive(y)) is False541 assert ask(Q.finite(a), Q.finite(x) & ~Q.finite(y) & Q.positive(x) &542 Q.positive(y)) is False543 assert ask(Q.finite(a), Q.finite(x) & ~Q.finite(y) & Q.positive(x) &544 ~Q.positive(y)) is False545 assert ask(Q.finite(a), Q.finite(x) & ~Q.finite(y) & ~Q.positive(x) &546 Q.positive(y)) is False547 assert ask(Q.finite(a), Q.finite(x) & ~Q.finite(y) & ~Q.positive(x) &548 ~Q.positive(y)) is False549 # B + ?550 assert ask(Q.finite(a), Q.finite(x)) is None551 assert ask(Q.finite(a), Q.finite(x) & Q.positive(x)) is None552 assert ask(Q.finite(a), Q.finite(x) & Q.positive(y)) is None553 assert ask(554 Q.finite(a), Q.finite(x) & Q.positive(x) & Q.positive(y)) is None555 assert ask(556 Q.finite(a), Q.finite(x) & Q.positive(x) & ~Q.positive(y)) is None557 assert ask(558 Q.finite(a), Q.finite(x) & ~Q.positive(x) & Q.positive(y)) is None559 assert ask(560 Q.finite(a), Q.finite(x) & ~Q.positive(x) & ~Q.positive(y)) is None561 # U + U562 assert ask(Q.finite(a), ~Q.finite(x) & ~Q.finite(y)) is None563 assert ask(564 Q.finite(a), ~Q.finite(x) & ~Q.finite(y) & Q.positive(x)) is None565 assert ask(566 Q.finite(a), ~Q.finite(x) & ~Q.finite(y) & Q.positive(y)) is None567 assert ask(Q.finite(a), ~Q.finite(x) & ~Q.finite(y) & Q.positive(x) &568 Q.positive(y)) is False569 assert ask(Q.finite(a), ~Q.finite(x) & ~Q.finite(y) & Q.positive(x) &570 ~Q.positive(y)) is None571 assert ask(Q.finite(a), ~Q.finite(x) & ~Q.finite(y) & ~Q.positive(x) &572 Q.positive(y)) is None573 assert ask(Q.finite(a), ~Q.finite(x) & ~Q.finite(y) & ~Q.positive(x) &574 ~Q.positive(y)) is False575 # U + ?576 assert ask(Q.finite(a), ~Q.finite(y)) is None577 assert ask(Q.finite(a), ~Q.finite(y) & Q.positive(x)) is None578 assert ask(Q.finite(a), ~Q.finite(y) & Q.positive(y)) is None579 assert ask(580 Q.finite(a), ~Q.finite(y) & Q.positive(x) & Q.positive(y)) is False581 assert ask(582 Q.finite(a), ~Q.finite(y) & Q.positive(x) & ~Q.positive(y)) is None583 assert ask(584 Q.finite(a), ~Q.finite(y) & ~Q.positive(x) & Q.positive(y)) is None585 assert ask(586 Q.finite(a), ~Q.finite(y) & ~Q.positive(x) & ~Q.positive(y)) is False587 # ? + ?588 assert ask(Q.finite(a),) is None589 assert ask(Q.finite(a), Q.positive(x)) is None590 assert ask(Q.finite(a), Q.positive(y)) is None591 assert ask(Q.finite(a), Q.positive(x) & Q.positive(y)) is None592 assert ask(Q.finite(a), Q.positive(x) & ~Q.positive(y)) is None593 assert ask(Q.finite(a), ~Q.positive(x) & Q.positive(y)) is None594 assert ask(Q.finite(a), ~Q.positive(x) & ~Q.positive(y)) is None595 x, y, z = symbols('x,y,z')596 a = x + y + z597 x, y, z = a.args598 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) & Q.negative(y) &599 Q.finite(y) & Q.negative(z) & Q.finite(z)) is True600 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) &601 Q.negative(y) & Q.finite(y) & Q.finite(z)) is True602 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) & Q.negative(y) &603 Q.finite(y) & Q.positive(z) & Q.finite(z)) is True604 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) & Q.negative(y) &605 Q.finite(y) & Q.negative(z) & ~Q.finite(z)) is False606 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) &607 Q.negative(y) & Q.finite(y) & ~Q.finite(z)) is False608 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) & Q.negative(y) &609 Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is False610 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) &611 Q.negative(y) & Q.finite(y) & Q.negative(z)) is None612 assert ask(Q.finite(a), Q.negative(x) &613 Q.finite(x) & Q.negative(y) & Q.finite(y)) is None614 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) &615 Q.negative(y) & Q.finite(y) & Q.positive(z)) is None616 assert ask(Q.finite(a), Q.negative(x) &617 Q.finite(x) & Q.finite(y) & Q.finite(z)) is True618 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) &619 Q.finite(y) & Q.positive(z) & Q.finite(z)) is True620 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) &621 Q.finite(y) & Q.negative(z) & ~Q.finite(z)) is False622 assert ask(Q.finite(a), Q.negative(x) &623 Q.finite(x) & Q.finite(y) & ~Q.finite(z)) is False624 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) &625 Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is False626 assert ask(Q.finite(a), Q.negative(x) &627 Q.finite(x) & Q.finite(y) & Q.negative(z)) is None628 assert ask(629 Q.finite(a), Q.negative(x) & Q.finite(x) & Q.finite(y)) is None630 assert ask(Q.finite(a), Q.negative(x) &631 Q.finite(x) & Q.finite(y) & Q.positive(z)) is None632 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) & Q.positive(y) &633 Q.finite(y) & Q.positive(z) & Q.finite(z)) is True634 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) & Q.positive(y) &635 Q.finite(y) & Q.negative(z) & ~Q.finite(z)) is False636 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) &637 Q.positive(y) & Q.finite(y) & ~Q.finite(z)) is False638 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) & Q.positive(y) &639 Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is False640 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) &641 Q.positive(y) & Q.finite(y) & Q.negative(z)) is None642 assert ask(Q.finite(a), Q.negative(x) &643 Q.finite(x) & Q.positive(y) & Q.finite(y)) is None644 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) &645 Q.positive(y) & Q.finite(y) & Q.positive(z)) is None646 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) & Q.negative(y) &647 ~Q.finite(y) & Q.negative(z) & ~Q.finite(z)) is False648 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) &649 Q.negative(y) & ~Q.finite(y) & ~Q.finite(z)) is None650 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) & Q.negative(y) &651 ~Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is None652 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) &653 Q.negative(y) & ~Q.finite(y) & Q.negative(z)) is False654 assert ask(Q.finite(a), Q.negative(x) &655 Q.finite(x) & Q.negative(y) & ~Q.finite(y)) is None656 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) &657 Q.negative(y) & ~Q.finite(y) & Q.positive(z)) is None658 assert ask(Q.finite(a), Q.negative(x) &659 Q.finite(x) & ~Q.finite(y) & ~Q.finite(z)) is None660 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) &661 ~Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is None662 assert ask(Q.finite(a), Q.negative(x) &663 Q.finite(x) & ~Q.finite(y) & Q.negative(z)) is None664 assert ask(665 Q.finite(a), Q.negative(x) & Q.finite(x) & ~Q.finite(y)) is None666 assert ask(Q.finite(a), Q.negative(x) &667 Q.finite(x) & ~Q.finite(y) & Q.positive(z)) is None668 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) & Q.positive(y) &669 ~Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is False670 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) &671 Q.positive(y) & ~Q.finite(y) & Q.negative(z)) is None672 assert ask(Q.finite(a), Q.negative(x) &673 Q.finite(x) & Q.positive(y) & ~Q.finite(y)) is None674 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x) &675 Q.positive(y) & ~Q.finite(y) & Q.positive(z)) is False676 assert ask(Q.finite(a), Q.negative(x) &677 Q.finite(x) & Q.negative(y) & Q.negative(z)) is None678 assert ask(679 Q.finite(a), Q.negative(x) & Q.finite(x) & Q.negative(y)) is None680 assert ask(Q.finite(a), Q.negative(x) &681 Q.finite(x) & Q.negative(y) & Q.positive(z)) is None682 assert ask(Q.finite(a), Q.negative(x) & Q.finite(x)) is None683 assert ask(684 Q.finite(a), Q.negative(x) & Q.finite(x) & Q.positive(z)) is None685 assert ask(Q.finite(a), Q.negative(x) &686 Q.finite(x) & Q.positive(y) & Q.positive(z)) is None687 assert ask(688 Q.finite(a), Q.finite(x) & Q.finite(y) & Q.finite(z)) is True689 assert ask(Q.finite(a),690 Q.finite(x) & Q.finite(y) & Q.positive(z) & Q.finite(z)) is True691 assert ask(Q.finite(a), Q.finite(x) &692 Q.finite(y) & Q.negative(z) & ~Q.finite(z)) is False693 assert ask(694 Q.finite(a), Q.finite(x) & Q.finite(y) & ~Q.finite(z)) is False695 assert ask(Q.finite(a), Q.finite(x) &696 Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is False697 assert ask(698 Q.finite(a), Q.finite(x) & Q.finite(y) & Q.negative(z)) is None699 assert ask(Q.finite(a), Q.finite(x) & Q.finite(y)) is None700 assert ask(701 Q.finite(a), Q.finite(x) & Q.finite(y) & Q.positive(z)) is None702 assert ask(Q.finite(a), Q.finite(x) & Q.positive(y) &703 Q.finite(y) & Q.positive(z) & Q.finite(z)) is True704 assert ask(Q.finite(a), Q.finite(x) & Q.positive(y) &705 Q.finite(y) & Q.negative(z) & ~Q.finite(z)) is False706 assert ask(Q.finite(a), Q.finite(x) &707 Q.positive(y) & Q.finite(y) & ~Q.finite(z)) is False708 assert ask(Q.finite(a), Q.finite(x) & Q.positive(y) &709 Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is False710 assert ask(Q.finite(a), Q.finite(x) &711 Q.positive(y) & Q.finite(y) & Q.negative(z)) is None712 assert ask(713 Q.finite(a), Q.finite(x) & Q.positive(y) & Q.finite(y)) is None714 assert ask(Q.finite(a), Q.finite(x) &715 Q.positive(y) & Q.finite(y) & Q.positive(z)) is None716 assert ask(Q.finite(a), Q.finite(x) & Q.negative(y) &717 ~Q.finite(y) & Q.negative(z) & ~Q.finite(z)) is False718 assert ask(Q.finite(a), Q.finite(x) &719 Q.negative(y) & ~Q.finite(y) & ~Q.finite(z)) is None720 assert ask(Q.finite(a), Q.finite(x) & Q.negative(y) &721 ~Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is None722 assert ask(Q.finite(a), Q.finite(x) &723 Q.negative(y) & ~Q.finite(y) & Q.negative(z)) is False724 assert ask(725 Q.finite(a), Q.finite(x) & Q.negative(y) & ~Q.finite(y)) is None726 assert ask(Q.finite(a), Q.finite(x) &727 Q.negative(y) & ~Q.finite(y) & Q.positive(z)) is None728 assert ask(729 Q.finite(a), Q.finite(x) & ~Q.finite(y) & ~Q.finite(z)) is None730 assert ask(Q.finite(a), Q.finite(x) &731 ~Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is None732 assert ask(733 Q.finite(a), Q.finite(x) & ~Q.finite(y) & Q.negative(z)) is None734 assert ask(Q.finite(a), Q.finite(x) & ~Q.finite(y)) is None735 assert ask(736 Q.finite(a), Q.finite(x) & ~Q.finite(y) & Q.positive(z)) is None737 assert ask(Q.finite(a), Q.finite(x) & Q.positive(y) &738 ~Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is False739 assert ask(Q.finite(a), Q.finite(x) &740 Q.positive(y) & ~Q.finite(y) & Q.negative(z)) is None741 assert ask(742 Q.finite(a), Q.finite(x) & Q.positive(y) & ~Q.finite(y)) is None743 assert ask(Q.finite(a), Q.finite(x) &744 Q.positive(y) & ~Q.finite(y) & Q.positive(z)) is False745 assert ask(746 Q.finite(a), Q.finite(x) & Q.negative(y) & Q.negative(z)) is None747 assert ask(Q.finite(a), Q.finite(x) & Q.negative(y)) is None748 assert ask(749 Q.finite(a), Q.finite(x) & Q.negative(y) & Q.positive(z)) is None750 assert ask(Q.finite(a), Q.finite(x)) is None751 assert ask(Q.finite(a), Q.finite(x) & Q.positive(z)) is None752 assert ask(753 Q.finite(a), Q.finite(x) & Q.positive(y) & Q.positive(z)) is None754 assert ask(Q.finite(a), Q.positive(x) & Q.finite(x) & Q.positive(y) &755 Q.finite(y) & Q.positive(z) & Q.finite(z)) is True756 assert ask(Q.finite(a), Q.positive(x) & Q.finite(x) & Q.positive(y) &757 Q.finite(y) & Q.negative(z) & ~Q.finite(z)) is False758 assert ask(Q.finite(a), Q.positive(x) & Q.finite(x) &759 Q.positive(y) & Q.finite(y) & ~Q.finite(z)) is False760 assert ask(Q.finite(a), Q.positive(x) & Q.finite(x) & Q.positive(y) &761 Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is False762 assert ask(Q.finite(a), Q.positive(x) & Q.finite(x) &763 Q.positive(y) & Q.finite(y) & Q.negative(z)) is None764 assert ask(Q.finite(a), Q.positive(x) &765 Q.finite(x) & Q.positive(y) & Q.finite(y)) is None766 assert ask(Q.finite(a), Q.positive(x) & Q.finite(x) &767 Q.positive(y) & Q.finite(y) & Q.positive(z)) is None768 assert ask(Q.finite(a), Q.positive(x) & Q.finite(x) & Q.negative(y) &769 ~Q.finite(y) & Q.negative(z) & ~Q.finite(z)) is False770 assert ask(Q.finite(a), Q.positive(x) & Q.finite(x) &771 Q.negative(y) & ~Q.finite(y) & ~Q.finite(z)) is None772 assert ask(Q.finite(a), Q.positive(x) & Q.finite(x) & Q.negative(y) &773 ~Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is None774 assert ask(Q.finite(a), Q.positive(x) & Q.finite(x) &775 Q.negative(y) & ~Q.finite(y) & Q.negative(z)) is False776 assert ask(Q.finite(a), Q.positive(x) &777 Q.finite(x) & Q.negative(y) & ~Q.finite(y)) is None778 assert ask(Q.finite(a), Q.positive(x) & Q.finite(x) &779 Q.negative(y) & ~Q.finite(y) & Q.positive(z)) is None780 assert ask(Q.finite(a), Q.positive(x) &781 Q.finite(x) & ~Q.finite(y) & ~Q.finite(z)) is None782 assert ask(Q.finite(a), Q.positive(x) & Q.finite(x) &783 ~Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is None784 assert ask(Q.finite(a), Q.positive(x) &785 Q.finite(x) & ~Q.finite(y) & Q.negative(z)) is None786 assert ask(787 Q.finite(a), Q.positive(x) & Q.finite(x) & ~Q.finite(y)) is None788 assert ask(Q.finite(a), Q.positive(x) &789 Q.finite(x) & ~Q.finite(y) & Q.positive(z)) is None790 assert ask(Q.finite(a), Q.positive(x) & Q.finite(x) & Q.positive(y) &791 ~Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is False792 assert ask(Q.finite(a), Q.positive(x) & Q.finite(x) &793 Q.positive(y) & ~Q.finite(y) & Q.negative(z)) is None794 assert ask(Q.finite(a), Q.positive(x) &795 Q.finite(x) & Q.positive(y) & ~Q.finite(y)) is None796 assert ask(Q.finite(a), Q.positive(x) & Q.finite(x) &797 Q.positive(y) & ~Q.finite(y) & Q.positive(z)) is False798 assert ask(Q.finite(a), Q.positive(x) &799 Q.finite(x) & Q.negative(y) & Q.negative(z)) is None800 assert ask(801 Q.finite(a), Q.positive(x) & Q.finite(x) & Q.negative(y)) is None802 assert ask(Q.finite(a), Q.positive(x) &803 Q.finite(x) & Q.negative(y) & Q.positive(z)) is None804 assert ask(Q.finite(a), Q.positive(x) & Q.finite(x)) is None805 assert ask(806 Q.finite(a), Q.positive(x) & Q.finite(x) & Q.positive(z)) is None807 assert ask(Q.finite(a), Q.positive(x) &808 Q.finite(x) & Q.positive(y) & Q.positive(z)) is None809 assert ask(Q.finite(a), Q.negative(x) & ~Q.finite(x) & Q.negative(y) &810 ~Q.finite(y) & Q.negative(z) & ~Q.finite(z)) is False811 assert ask(Q.finite(a), Q.negative(x) & ~Q.finite(x) &812 Q.negative(y) & ~Q.finite(y) & ~Q.finite(z)) is None813 assert ask(Q.finite(a), Q.negative(x) & ~Q.finite(x) & Q.negative(y) &814 ~Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is None815 assert ask(Q.finite(a), Q.negative(x) & ~Q.finite(x) &816 Q.negative(y) & ~Q.finite(y) & Q.negative(z)) is False817 assert ask(Q.finite(a), Q.negative(x) &818 ~Q.finite(x) & Q.negative(y) & ~Q.finite(y)) is None819 assert ask(Q.finite(a), Q.negative(x) & ~Q.finite(x) &820 Q.negative(y) & ~Q.finite(y) & Q.positive(z)) is None821 assert ask(Q.finite(a), Q.negative(x) &822 ~Q.finite(x) & ~Q.finite(y) & ~Q.finite(z)) is None823 assert ask(Q.finite(a), Q.negative(x) & ~Q.finite(x) &824 ~Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is None825 assert ask(Q.finite(a), Q.negative(x) &826 ~Q.finite(x) & ~Q.finite(y) & Q.negative(z)) is None827 assert ask(828 Q.finite(a), Q.negative(x) & ~Q.finite(x) & ~Q.finite(y)) is None829 assert ask(Q.finite(a), Q.negative(x) &830 ~Q.finite(x) & ~Q.finite(y) & Q.positive(z)) is None831 assert ask(Q.finite(a), Q.negative(x) & ~Q.finite(x) & Q.positive(y) &832 ~Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is None833 assert ask(Q.finite(a), Q.negative(x) & ~Q.finite(x) &834 Q.positive(y) & ~Q.finite(y) & Q.negative(z)) is None835 assert ask(Q.finite(a), Q.negative(x) &836 ~Q.finite(x) & Q.positive(y) & ~Q.finite(y)) is None837 assert ask(Q.finite(a), Q.negative(x) & ~Q.finite(x) &838 Q.positive(y) & ~Q.finite(y) & Q.positive(z)) is None839 assert ask(Q.finite(a), Q.negative(x) &840 ~Q.finite(x) & Q.negative(y) & Q.negative(z)) is False841 assert ask(842 Q.finite(a), Q.negative(x) & ~Q.finite(x) & Q.negative(y)) is None843 assert ask(Q.finite(a), Q.negative(x) &844 ~Q.finite(x) & Q.negative(y) & Q.positive(z)) is None845 assert ask(Q.finite(a), Q.negative(x) & ~Q.finite(x)) is None846 assert ask(847 Q.finite(a), Q.negative(x) & ~Q.finite(x) & Q.positive(z)) is None848 assert ask(Q.finite(a), Q.negative(x) &849 ~Q.finite(x) & Q.positive(y) & Q.positive(z)) is None850 assert ask(851 Q.finite(a), ~Q.finite(x) & ~Q.finite(y) & ~Q.finite(z)) is None852 assert ask(Q.finite(a), ~Q.finite(x) &853 ~Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is None854 assert ask(855 Q.finite(a), ~Q.finite(x) & ~Q.finite(y) & Q.negative(z)) is None856 assert ask(Q.finite(a), ~Q.finite(x) & ~Q.finite(y)) is None857 assert ask(858 Q.finite(a), ~Q.finite(x) & ~Q.finite(y) & Q.positive(z)) is None859 assert ask(Q.finite(a), ~Q.finite(x) & Q.positive(y) &860 ~Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is None861 assert ask(Q.finite(a), ~Q.finite(x) &862 Q.positive(y) & ~Q.finite(y) & Q.negative(z)) is None863 assert ask(864 Q.finite(a), ~Q.finite(x) & Q.positive(y) & ~Q.finite(y)) is None865 assert ask(Q.finite(a), ~Q.finite(x) &866 Q.positive(y) & ~Q.finite(y) & Q.positive(z)) is None867 assert ask(868 Q.finite(a), ~Q.finite(x) & Q.negative(y) & Q.negative(z)) is None869 assert ask(Q.finite(a), ~Q.finite(x) & Q.negative(y)) is None870 assert ask(871 Q.finite(a), ~Q.finite(x) & Q.negative(y) & Q.positive(z)) is None872 assert ask(Q.finite(a), ~Q.finite(x)) is None873 assert ask(Q.finite(a), ~Q.finite(x) & Q.positive(z)) is None874 assert ask(875 Q.finite(a), ~Q.finite(x) & Q.positive(y) & Q.positive(z)) is None876 assert ask(Q.finite(a), Q.positive(x) & ~Q.finite(x) & Q.positive(y) &877 ~Q.finite(y) & Q.positive(z) & ~Q.finite(z)) is False878 assert ask(Q.finite(a), Q.positive(x) & ~Q.finite(x) &879 Q.positive(y) & ~Q.finite(y) & Q.negative(z)) is None880 assert ask(Q.finite(a), Q.positive(x) &881 ~Q.finite(x) & Q.positive(y) & ~Q.finite(y)) is None882 assert ask(Q.finite(a), Q.positive(x) & ~Q.finite(x) &883 Q.positive(y) & ~Q.finite(y) & Q.positive(z)) is False884 assert ask(Q.finite(a), Q.positive(x) &885 ~Q.finite(x) & Q.negative(y) & Q.negative(z)) is None886 assert ask(887 Q.finite(a), Q.positive(x) & ~Q.finite(x) & Q.negative(y)) is None888 assert ask(Q.finite(a), Q.positive(x) &889 ~Q.finite(x) & Q.negative(y) & Q.positive(z)) is None890 assert ask(Q.finite(a), Q.positive(x) & ~Q.finite(x)) is None891 assert ask(892 Q.finite(a), Q.positive(x) & ~Q.finite(x) & Q.positive(z)) is None893 assert ask(Q.finite(a), Q.positive(x) &894 ~Q.finite(x) & Q.positive(y) & Q.positive(z)) is False895 assert ask(896 Q.finite(a), Q.negative(x) & Q.negative(y) & Q.negative(z)) is None897 assert ask(Q.finite(a), Q.negative(x) & Q.negative(y)) is None898 assert ask(899 Q.finite(a), Q.negative(x) & Q.negative(y) & Q.positive(z)) is None900 assert ask(Q.finite(a), Q.negative(x)) is None901 assert ask(Q.finite(a), Q.negative(x) & Q.positive(z)) is None902 assert ask(903 Q.finite(a), Q.negative(x) & Q.positive(y) & Q.positive(z)) is None904 assert ask(Q.finite(a)) is None905 assert ask(Q.finite(a), Q.positive(z)) is None906 assert ask(Q.finite(a), Q.positive(y) & Q.positive(z)) is None907 assert ask(908 Q.finite(a), Q.positive(x) & Q.positive(y) & Q.positive(z)) is None909 assert ask(Q.finite(2*x)) is None910 assert ask(Q.finite(2*x), Q.finite(x)) is True911 x, y, z = symbols('x,y,z')912 a = x*y913 x, y = a.args914 assert ask(Q.finite(a), Q.finite(x) & Q.finite(y)) is True915 assert ask(Q.finite(a), Q.finite(x) & ~Q.finite(y)) is False916 assert ask(Q.finite(a), Q.finite(x)) is None917 assert ask(Q.finite(a), ~Q.finite(x) & Q.finite(y)) is False918 assert ask(Q.finite(a), ~Q.finite(x) & ~Q.finite(y)) is False919 assert ask(Q.finite(a), ~Q.finite(x)) is None920 assert ask(Q.finite(a), Q.finite(y)) is None921 assert ask(Q.finite(a), ~Q.finite(y)) is None922 assert ask(Q.finite(a)) is None923 a = x*y*z924 x, y, z = a.args925 assert ask(926 Q.finite(a), Q.finite(x) & Q.finite(y) & Q.finite(z)) is True927 assert ask(928 Q.finite(a), Q.finite(x) & Q.finite(y) & ~Q.finite(z)) is False929 assert ask(Q.finite(a), Q.finite(x) & Q.finite(y)) is None930 assert ask(931 Q.finite(a), Q.finite(x) & ~Q.finite(y) & Q.finite(z)) is False932 assert ask(933 Q.finite(a), Q.finite(x) & ~Q.finite(y) & ~Q.finite(z)) is False934 assert ask(Q.finite(a), Q.finite(x) & ~Q.finite(y)) is None935 assert ask(Q.finite(a), Q.finite(x) & Q.finite(z)) is None936 assert ask(Q.finite(a), Q.finite(x) & ~Q.finite(z)) is None937 assert ask(Q.finite(a), Q.finite(x)) is None938 assert ask(939 Q.finite(a), ~Q.finite(x) & Q.finite(y) & Q.finite(z)) is False940 assert ask(941 Q.finite(a), ~Q.finite(x) & Q.finite(y) & ~Q.finite(z)) is False942 assert ask(Q.finite(a), ~Q.finite(x) & Q.finite(y)) is None943 assert ask(944 Q.finite(a), ~Q.finite(x) & ~Q.finite(y) & Q.finite(z)) is False945 assert ask(946 Q.finite(a), ~Q.finite(x) & ~Q.finite(y) & ~Q.finite(z)) is False947 assert ask(Q.finite(a), ~Q.finite(x) & ~Q.finite(y)) is None948 assert ask(Q.finite(a), ~Q.finite(x) & Q.finite(z)) is None949 assert ask(Q.finite(a), ~Q.finite(x) & ~Q.finite(z)) is None950 assert ask(Q.finite(a), ~Q.finite(x)) is None951 assert ask(Q.finite(a), Q.finite(y) & Q.finite(z)) is None952 assert ask(Q.finite(a), Q.finite(y) & ~Q.finite(z)) is None953 assert ask(Q.finite(a), Q.finite(y)) is None954 assert ask(Q.finite(a), ~Q.finite(y) & Q.finite(z)) is None955 assert ask(Q.finite(a), ~Q.finite(y) & ~Q.finite(z)) is None956 assert ask(Q.finite(a), ~Q.finite(y)) is None957 assert ask(Q.finite(a), Q.finite(z)) is None958 assert ask(Q.finite(a), ~Q.finite(z)) is None959 assert ask(Q.finite(a), ~Q.finite(z) &960 Q.nonzero(x) & Q.nonzero(y) & Q.nonzero(z)) is None961 assert ask(Q.finite(a), ~Q.finite(y) & ~Q.finite(z) &962 Q.nonzero(x) & Q.nonzero(y) & Q.nonzero(z)) is False963 x, y, z = symbols('x,y,z')964 assert ask(Q.finite(x**2)) is None965 assert ask(Q.finite(2**x)) is None966 assert ask(Q.finite(2**x), Q.finite(x)) is True967 assert ask(Q.finite(x**x)) is None968 assert ask(Q.finite(S.Half ** x)) is None969 assert ask(Q.finite(S.Half ** x), Q.positive(x)) is True970 assert ask(Q.finite(S.Half ** x), Q.negative(x)) is None971 assert ask(Q.finite(2**x), Q.negative(x)) is True972 assert ask(Q.finite(sqrt(x))) is None973 assert ask(Q.finite(2**x), ~Q.finite(x)) is False974 assert ask(Q.finite(x**2), ~Q.finite(x)) is False975 # sign function976 assert ask(Q.finite(sign(x))) is True977 assert ask(Q.finite(sign(x)), ~Q.finite(x)) is True978 # exponential functions979 assert ask(Q.finite(log(x))) is None980 assert ask(Q.finite(log(x)), Q.finite(x)) is True981 assert ask(Q.finite(exp(x))) is None982 assert ask(Q.finite(exp(x)), Q.finite(x)) is True983 assert ask(Q.finite(exp(2))) is True984 # trigonometric functions985 assert ask(Q.finite(sin(x))) is True986 assert ask(Q.finite(sin(x)), ~Q.finite(x)) is True987 assert ask(Q.finite(cos(x))) is True988 assert ask(Q.finite(cos(x)), ~Q.finite(x)) is True989 assert ask(Q.finite(2*sin(x))) is True990 assert ask(Q.finite(sin(x)**2)) is True991 assert ask(Q.finite(cos(x)**2)) is True992 assert ask(Q.finite(cos(x) + sin(x))) is True993@XFAIL994def test_bounded_xfail():995 """We need to support relations in ask for this to work"""996 assert ask(Q.finite(sin(x)**x)) is True997 assert ask(Q.finite(cos(x)**x)) is True998def test_commutative():999 """By default objects are Q.commutative that is why it returns True1000 for both key=True and key=False"""1001 assert ask(Q.commutative(x)) is True1002 assert ask(Q.commutative(x), ~Q.commutative(x)) is False1003 assert ask(Q.commutative(x), Q.complex(x)) is True1004 assert ask(Q.commutative(x), Q.imaginary(x)) is True1005 assert ask(Q.commutative(x), Q.real(x)) is True1006 assert ask(Q.commutative(x), Q.positive(x)) is True1007 assert ask(Q.commutative(x), ~Q.commutative(y)) is True1008 assert ask(Q.commutative(2*x)) is True1009 assert ask(Q.commutative(2*x), ~Q.commutative(x)) is False1010 assert ask(Q.commutative(x + 1)) is True1011 assert ask(Q.commutative(x + 1), ~Q.commutative(x)) is False1012 assert ask(Q.commutative(x**2)) is True1013 assert ask(Q.commutative(x**2), ~Q.commutative(x)) is False1014 assert ask(Q.commutative(log(x))) is True1015def test_complex():1016 assert ask(Q.complex(x)) is None1017 assert ask(Q.complex(x), Q.complex(x)) is True1018 assert ask(Q.complex(x), Q.complex(y)) is None1019 assert ask(Q.complex(x), ~Q.complex(x)) is False1020 assert ask(Q.complex(x), Q.real(x)) is True1021 assert ask(Q.complex(x), ~Q.real(x)) is None1022 assert ask(Q.complex(x), Q.rational(x)) is True1023 assert ask(Q.complex(x), Q.irrational(x)) is True1024 assert ask(Q.complex(x), Q.positive(x)) is True1025 assert ask(Q.complex(x), Q.imaginary(x)) is True1026 assert ask(Q.complex(x), Q.algebraic(x)) is True1027 # a+b1028 assert ask(Q.complex(x + 1), Q.complex(x)) is True1029 assert ask(Q.complex(x + 1), Q.real(x)) is True1030 assert ask(Q.complex(x + 1), Q.rational(x)) is True1031 assert ask(Q.complex(x + 1), Q.irrational(x)) is True1032 assert ask(Q.complex(x + 1), Q.imaginary(x)) is True1033 assert ask(Q.complex(x + 1), Q.integer(x)) is True1034 assert ask(Q.complex(x + 1), Q.even(x)) is True1035 assert ask(Q.complex(x + 1), Q.odd(x)) is True1036 assert ask(Q.complex(x + y), Q.complex(x) & Q.complex(y)) is True1037 assert ask(Q.complex(x + y), Q.real(x) & Q.imaginary(y)) is True1038 # a*x +b1039 assert ask(Q.complex(2*x + 1), Q.complex(x)) is True1040 assert ask(Q.complex(2*x + 1), Q.real(x)) is True1041 assert ask(Q.complex(2*x + 1), Q.positive(x)) is True1042 assert ask(Q.complex(2*x + 1), Q.rational(x)) is True1043 assert ask(Q.complex(2*x + 1), Q.irrational(x)) is True1044 assert ask(Q.complex(2*x + 1), Q.imaginary(x)) is True1045 assert ask(Q.complex(2*x + 1), Q.integer(x)) is True1046 assert ask(Q.complex(2*x + 1), Q.even(x)) is True1047 assert ask(Q.complex(2*x + 1), Q.odd(x)) is True1048 # x**21049 assert ask(Q.complex(x**2), Q.complex(x)) is True1050 assert ask(Q.complex(x**2), Q.real(x)) is True1051 assert ask(Q.complex(x**2), Q.positive(x)) is True1052 assert ask(Q.complex(x**2), Q.rational(x)) is True1053 assert ask(Q.complex(x**2), Q.irrational(x)) is True1054 assert ask(Q.complex(x**2), Q.imaginary(x)) is True1055 assert ask(Q.complex(x**2), Q.integer(x)) is True1056 assert ask(Q.complex(x**2), Q.even(x)) is True1057 assert ask(Q.complex(x**2), Q.odd(x)) is True1058 # 2**x1059 assert ask(Q.complex(2**x), Q.complex(x)) is True1060 assert ask(Q.complex(2**x), Q.real(x)) is True1061 assert ask(Q.complex(2**x), Q.positive(x)) is True1062 assert ask(Q.complex(2**x), Q.rational(x)) is True1063 assert ask(Q.complex(2**x), Q.irrational(x)) is True1064 assert ask(Q.complex(2**x), Q.imaginary(x)) is True1065 assert ask(Q.complex(2**x), Q.integer(x)) is True1066 assert ask(Q.complex(2**x), Q.even(x)) is True1067 assert ask(Q.complex(2**x), Q.odd(x)) is True1068 assert ask(Q.complex(x**y), Q.complex(x) & Q.complex(y)) is True1069 # trigonometric expressions1070 assert ask(Q.complex(sin(x))) is True1071 assert ask(Q.complex(sin(2*x + 1))) is True1072 assert ask(Q.complex(cos(x))) is True1073 assert ask(Q.complex(cos(2*x + 1))) is True1074 # exponential1075 assert ask(Q.complex(exp(x))) is True1076 assert ask(Q.complex(exp(x))) is True1077 # Q.complexes1078 assert ask(Q.complex(Abs(x))) is True1079 assert ask(Q.complex(re(x))) is True1080 assert ask(Q.complex(im(x))) is True1081def test_even_query():1082 assert ask(Q.even(x)) is None1083 assert ask(Q.even(x), Q.integer(x)) is None1084 assert ask(Q.even(x), ~Q.integer(x)) is False1085 assert ask(Q.even(x), Q.rational(x)) is None1086 assert ask(Q.even(x), Q.positive(x)) is None1087 assert ask(Q.even(2*x)) is None1088 assert ask(Q.even(2*x), Q.integer(x)) is True1089 assert ask(Q.even(2*x), Q.even(x)) is True1090 assert ask(Q.even(2*x), Q.irrational(x)) is False1091 assert ask(Q.even(2*x), Q.odd(x)) is True1092 assert ask(Q.even(2*x), ~Q.integer(x)) is None1093 assert ask(Q.even(3*x), Q.integer(x)) is None1094 assert ask(Q.even(3*x), Q.even(x)) is True1095 assert ask(Q.even(3*x), Q.odd(x)) is False1096 assert ask(Q.even(x + 1), Q.odd(x)) is True1097 assert ask(Q.even(x + 1), Q.even(x)) is False1098 assert ask(Q.even(x + 2), Q.odd(x)) is False1099 assert ask(Q.even(x + 2), Q.even(x)) is True1100 assert ask(Q.even(7 - x), Q.odd(x)) is True1101 assert ask(Q.even(7 + x), Q.odd(x)) is True1102 assert ask(Q.even(x + y), Q.odd(x) & Q.odd(y)) is True1103 assert ask(Q.even(x + y), Q.odd(x) & Q.even(y)) is False1104 assert ask(Q.even(x + y), Q.even(x) & Q.even(y)) is True1105 assert ask(Q.even(2*x + 1), Q.integer(x)) is False1106 assert ask(Q.even(2*x*y), Q.rational(x) & Q.rational(x)) is None1107 assert ask(Q.even(2*x*y), Q.irrational(x) & Q.irrational(x)) is None1108 assert ask(Q.even(x + y + z), Q.odd(x) & Q.odd(y) & Q.even(z)) is True1109 assert ask(Q.even(x + y + z + t),1110 Q.odd(x) & Q.odd(y) & Q.even(z) & Q.integer(t)) is None1111 assert ask(Q.even(Abs(x)), Q.even(x)) is True1112 assert ask(Q.even(Abs(x)), ~Q.even(x)) is None1113 assert ask(Q.even(re(x)), Q.even(x)) is True1114 assert ask(Q.even(re(x)), ~Q.even(x)) is None1115 assert ask(Q.even(im(x)), Q.even(x)) is True1116 assert ask(Q.even(im(x)), Q.real(x)) is True1117 assert ask(Q.even((-1)**n), Q.integer(n)) is False1118 assert ask(Q.even(k**2), Q.even(k)) is True1119 assert ask(Q.even(n**2), Q.odd(n)) is False1120 assert ask(Q.even(2**k), Q.even(k)) is None1121 assert ask(Q.even(x**2)) is None1122 assert ask(Q.even(k**m), Q.even(k) & Q.integer(m) & ~Q.negative(m)) is None1123 assert ask(Q.even(n**m), Q.odd(n) & Q.integer(m) & ~Q.negative(m)) is False1124 assert ask(Q.even(k**p), Q.even(k) & Q.integer(p) & Q.positive(p)) is True1125 assert ask(Q.even(n**p), Q.odd(n) & Q.integer(p) & Q.positive(p)) is False1126 assert ask(Q.even(m**k), Q.even(k) & Q.integer(m) & ~Q.negative(m)) is None1127 assert ask(Q.even(p**k), Q.even(k) & Q.integer(p) & Q.positive(p)) is None1128 assert ask(Q.even(m**n), Q.odd(n) & Q.integer(m) & ~Q.negative(m)) is None1129 assert ask(Q.even(p**n), Q.odd(n) & Q.integer(p) & Q.positive(p)) is None1130 assert ask(Q.even(k**x), Q.even(k)) is None1131 assert ask(Q.even(n**x), Q.odd(n)) is None1132 assert ask(Q.even(x*y), Q.integer(x) & Q.integer(y)) is None1133 assert ask(Q.even(x*x), Q.integer(x)) is None1134 assert ask(Q.even(x*(x + y)), Q.integer(x) & Q.odd(y)) is True1135 assert ask(Q.even(x*(x + y)), Q.integer(x) & Q.even(y)) is None1136@XFAIL1137def test_evenness_in_ternary_integer_product_with_odd():1138 # Tests that oddness inference is independent of term ordering.1139 # Term ordering at the point of testing depends on SymPy's symbol order, so1140 # we try to force a different order by modifying symbol names.1141 assert ask(Q.even(x*y*(y + z)), Q.integer(x) & Q.integer(y) & Q.odd(z)) is True1142 assert ask(Q.even(y*x*(x + z)), Q.integer(x) & Q.integer(y) & Q.odd(z)) is True1143def test_evenness_in_ternary_integer_product_with_even():1144 assert ask(Q.even(x*y*(y + z)), Q.integer(x) & Q.integer(y) & Q.even(z)) is None1145def test_extended_real():1146 assert ask(Q.extended_real(x), Q.positive(x)) is True1147 assert ask(Q.extended_real(-x), Q.positive(x)) is True1148 assert ask(Q.extended_real(-x), Q.negative(x)) is True1149 assert ask(Q.extended_real(x + S.Infinity), Q.real(x)) is True1150def test_rational():1151 assert ask(Q.rational(x), Q.integer(x)) is True1152 assert ask(Q.rational(x), Q.irrational(x)) is False1153 assert ask(Q.rational(x), Q.real(x)) is None1154 assert ask(Q.rational(x), Q.positive(x)) is None1155 assert ask(Q.rational(x), Q.negative(x)) is None1156 assert ask(Q.rational(x), Q.nonzero(x)) is None1157 assert ask(Q.rational(x), ~Q.algebraic(x)) is False1158 assert ask(Q.rational(2*x), Q.rational(x)) is True1159 assert ask(Q.rational(2*x), Q.integer(x)) is True1160 assert ask(Q.rational(2*x), Q.even(x)) is True1161 assert ask(Q.rational(2*x), Q.odd(x)) is True1162 assert ask(Q.rational(2*x), Q.irrational(x)) is False1163 assert ask(Q.rational(x/2), Q.rational(x)) is True1164 assert ask(Q.rational(x/2), Q.integer(x)) is True1165 assert ask(Q.rational(x/2), Q.even(x)) is True1166 assert ask(Q.rational(x/2), Q.odd(x)) is True1167 assert ask(Q.rational(x/2), Q.irrational(x)) is False1168 assert ask(Q.rational(1/x), Q.rational(x)) is True1169 assert ask(Q.rational(1/x), Q.integer(x)) is True1170 assert ask(Q.rational(1/x), Q.even(x)) is True1171 assert ask(Q.rational(1/x), Q.odd(x)) is True1172 assert ask(Q.rational(1/x), Q.irrational(x)) is False1173 assert ask(Q.rational(2/x), Q.rational(x)) is True1174 assert ask(Q.rational(2/x), Q.integer(x)) is True1175 assert ask(Q.rational(2/x), Q.even(x)) is True1176 assert ask(Q.rational(2/x), Q.odd(x)) is True1177 assert ask(Q.rational(2/x), Q.irrational(x)) is False1178 assert ask(Q.rational(x), ~Q.algebraic(x)) is False1179 # with multiple symbols1180 assert ask(Q.rational(x*y), Q.irrational(x) & Q.irrational(y)) is None1181 assert ask(Q.rational(y/x), Q.rational(x) & Q.rational(y)) is True1182 assert ask(Q.rational(y/x), Q.integer(x) & Q.rational(y)) is True1183 assert ask(Q.rational(y/x), Q.even(x) & Q.rational(y)) is True1184 assert ask(Q.rational(y/x), Q.odd(x) & Q.rational(y)) is True1185 assert ask(Q.rational(y/x), Q.irrational(x) & Q.rational(y)) is False1186 for f in [exp, sin, tan, asin, atan, cos]:1187 assert ask(Q.rational(f(7))) is False1188 assert ask(Q.rational(f(7, evaluate=False))) is False1189 assert ask(Q.rational(f(0, evaluate=False))) is True1190 assert ask(Q.rational(f(x)), Q.rational(x)) is None1191 assert ask(Q.rational(f(x)), Q.rational(x) & Q.nonzero(x)) is False1192 for g in [log, acos]:1193 assert ask(Q.rational(g(7))) is False1194 assert ask(Q.rational(g(7, evaluate=False))) is False1195 assert ask(Q.rational(g(1, evaluate=False))) is True1196 assert ask(Q.rational(g(x)), Q.rational(x)) is None1197 assert ask(Q.rational(g(x)), Q.rational(x) & Q.nonzero(x - 1)) is False1198 for h in [cot, acot]:1199 assert ask(Q.rational(h(7))) is False1200 assert ask(Q.rational(h(7, evaluate=False))) is False1201 assert ask(Q.rational(h(x)), Q.rational(x)) is False1202def test_hermitian():1203 assert ask(Q.hermitian(x)) is None1204 assert ask(Q.hermitian(x), Q.antihermitian(x)) is False1205 assert ask(Q.hermitian(x), Q.imaginary(x)) is False1206 assert ask(Q.hermitian(x), Q.prime(x)) is True1207 assert ask(Q.hermitian(x), Q.real(x)) is True1208 assert ask(Q.hermitian(x + 1), Q.antihermitian(x)) is False1209 assert ask(Q.hermitian(x + 1), Q.complex(x)) is None1210 assert ask(Q.hermitian(x + 1), Q.hermitian(x)) is True1211 assert ask(Q.hermitian(x + 1), Q.imaginary(x)) is False1212 assert ask(Q.hermitian(x + 1), Q.real(x)) is True1213 assert ask(Q.hermitian(x + I), Q.antihermitian(x)) is None1214 assert ask(Q.hermitian(x + I), Q.complex(x)) is None1215 assert ask(Q.hermitian(x + I), Q.hermitian(x)) is False1216 assert ask(Q.hermitian(x + I), Q.imaginary(x)) is None1217 assert ask(Q.hermitian(x + I), Q.real(x)) is False1218 assert ask(1219 Q.hermitian(x + y), Q.antihermitian(x) & Q.antihermitian(y)) is None1220 assert ask(Q.hermitian(x + y), Q.antihermitian(x) & Q.complex(y)) is None1221 assert ask(1222 Q.hermitian(x + y), Q.antihermitian(x) & Q.hermitian(y)) is False1223 assert ask(Q.hermitian(x + y), Q.antihermitian(x) & Q.imaginary(y)) is None1224 assert ask(Q.hermitian(x + y), Q.antihermitian(x) & Q.real(y)) is False1225 assert ask(Q.hermitian(x + y), Q.hermitian(x) & Q.complex(y)) is None1226 assert ask(Q.hermitian(x + y), Q.hermitian(x) & Q.hermitian(y)) is True1227 assert ask(Q.hermitian(x + y), Q.hermitian(x) & Q.imaginary(y)) is False1228 assert ask(Q.hermitian(x + y), Q.hermitian(x) & Q.real(y)) is True1229 assert ask(Q.hermitian(x + y), Q.imaginary(x) & Q.complex(y)) is None1230 assert ask(Q.hermitian(x + y), Q.imaginary(x) & Q.imaginary(y)) is None1231 assert ask(Q.hermitian(x + y), Q.imaginary(x) & Q.real(y)) is False1232 assert ask(Q.hermitian(x + y), Q.real(x) & Q.complex(y)) is None1233 assert ask(Q.hermitian(x + y), Q.real(x) & Q.real(y)) is True1234 assert ask(Q.hermitian(I*x), Q.antihermitian(x)) is True1235 assert ask(Q.hermitian(I*x), Q.complex(x)) is None1236 assert ask(Q.hermitian(I*x), Q.hermitian(x)) is False1237 assert ask(Q.hermitian(I*x), Q.imaginary(x)) is True1238 assert ask(Q.hermitian(I*x), Q.real(x)) is False1239 assert ask(Q.hermitian(x*y), Q.hermitian(x) & Q.real(y)) is True1240 assert ask(1241 Q.hermitian(x + y + z), Q.real(x) & Q.real(y) & Q.real(z)) is True1242 assert ask(Q.hermitian(x + y + z),1243 Q.real(x) & Q.real(y) & Q.imaginary(z)) is False1244 assert ask(Q.hermitian(x + y + z),1245 Q.real(x) & Q.imaginary(y) & Q.imaginary(z)) is None1246 assert ask(Q.hermitian(x + y + z),1247 Q.imaginary(x) & Q.imaginary(y) & Q.imaginary(z)) is None1248 assert ask(Q.antihermitian(x)) is None1249 assert ask(Q.antihermitian(x), Q.real(x)) is False1250 assert ask(Q.antihermitian(x), Q.prime(x)) is False1251 assert ask(Q.antihermitian(x + 1), Q.antihermitian(x)) is False1252 assert ask(Q.antihermitian(x + 1), Q.complex(x)) is None1253 assert ask(Q.antihermitian(x + 1), Q.hermitian(x)) is None1254 assert ask(Q.antihermitian(x + 1), Q.imaginary(x)) is False1255 assert ask(Q.antihermitian(x + 1), Q.real(x)) is False1256 assert ask(Q.antihermitian(x + I), Q.antihermitian(x)) is True1257 assert ask(Q.antihermitian(x + I), Q.complex(x)) is None1258 assert ask(Q.antihermitian(x + I), Q.hermitian(x)) is False1259 assert ask(Q.antihermitian(x + I), Q.imaginary(x)) is True1260 assert ask(Q.antihermitian(x + I), Q.real(x)) is False1261 assert ask(1262 Q.antihermitian(x + y), Q.antihermitian(x) & Q.antihermitian(y)1263 ) is True1264 assert ask(1265 Q.antihermitian(x + y), Q.antihermitian(x) & Q.complex(y)) is None1266 assert ask(1267 Q.antihermitian(x + y), Q.antihermitian(x) & Q.hermitian(y)) is False1268 assert ask(1269 Q.antihermitian(x + y), Q.antihermitian(x) & Q.imaginary(y)) is True1270 assert ask(Q.antihermitian(x + y), Q.antihermitian(x) & Q.real(y)1271 ) is False1272 assert ask(Q.antihermitian(x + y), Q.hermitian(x) & Q.complex(y)) is None1273 assert ask(Q.antihermitian(x + y), Q.hermitian(x) & Q.hermitian(y)1274 ) is None1275 assert ask(1276 Q.antihermitian(x + y), Q.hermitian(x) & Q.imaginary(y)) is False1277 assert ask(Q.antihermitian(x + y), Q.hermitian(x) & Q.real(y)) is None1278 assert ask(Q.antihermitian(x + y), Q.imaginary(x) & Q.complex(y)) is None1279 assert ask(Q.antihermitian(x + y), Q.imaginary(x) & Q.imaginary(y)) is True1280 assert ask(Q.antihermitian(x + y), Q.imaginary(x) & Q.real(y)) is False1281 assert ask(Q.antihermitian(x + y), Q.real(x) & Q.complex(y)) is None1282 assert ask(Q.antihermitian(x + y), Q.real(x) & Q.real(y)) is False1283 assert ask(Q.antihermitian(I*x), Q.real(x)) is True1284 assert ask(Q.antihermitian(I*x), Q.antihermitian(x)) is False1285 assert ask(Q.antihermitian(I*x), Q.complex(x)) is None1286 assert ask(Q.antihermitian(x*y), Q.antihermitian(x) & Q.real(y)) is True1287 assert ask(Q.antihermitian(x + y + z),1288 Q.real(x) & Q.real(y) & Q.real(z)) is False1289 assert ask(Q.antihermitian(x + y + z),1290 Q.real(x) & Q.real(y) & Q.imaginary(z)) is None1291 assert ask(Q.antihermitian(x + y + z),1292 Q.real(x) & Q.imaginary(y) & Q.imaginary(z)) is False1293 assert ask(Q.antihermitian(x + y + z),1294 Q.imaginary(x) & Q.imaginary(y) & Q.imaginary(z)) is True1295def test_imaginary():1296 assert ask(Q.imaginary(x)) is None1297 assert ask(Q.imaginary(x), Q.real(x)) is False1298 assert ask(Q.imaginary(x), Q.prime(x)) is False1299 assert ask(Q.imaginary(x + 1), Q.real(x)) is False1300 assert ask(Q.imaginary(x + 1), Q.imaginary(x)) is False1301 assert ask(Q.imaginary(x + I), Q.real(x)) is False1302 assert ask(Q.imaginary(x + I), Q.imaginary(x)) is True1303 assert ask(Q.imaginary(x + y), Q.imaginary(x) & Q.imaginary(y)) is True1304 assert ask(Q.imaginary(x + y), Q.real(x) & Q.real(y)) is False1305 assert ask(Q.imaginary(x + y), Q.imaginary(x) & Q.real(y)) is False1306 assert ask(Q.imaginary(x + y), Q.complex(x) & Q.real(y)) is None1307 assert ask(1308 Q.imaginary(x + y + z), Q.real(x) & Q.real(y) & Q.real(z)) is False1309 assert ask(Q.imaginary(x + y + z),1310 Q.real(x) & Q.real(y) & Q.imaginary(z)) is None1311 assert ask(Q.imaginary(x + y + z),1312 Q.real(x) & Q.imaginary(y) & Q.imaginary(z)) is False1313 assert ask(Q.imaginary(I*x), Q.real(x)) is True1314 assert ask(Q.imaginary(I*x), Q.imaginary(x)) is False1315 assert ask(Q.imaginary(I*x), Q.complex(x)) is None1316 assert ask(Q.imaginary(x*y), Q.imaginary(x) & Q.real(y)) is True1317 assert ask(Q.imaginary(x*y), Q.real(x) & Q.real(y)) is False1318 assert ask(Q.imaginary(I**x), Q.negative(x)) is None1319 assert ask(Q.imaginary(I**x), Q.positive(x)) is None1320 assert ask(Q.imaginary(I**x), Q.even(x)) is False1321 assert ask(Q.imaginary(I**x), Q.odd(x)) is True1322 assert ask(Q.imaginary(I**x), Q.imaginary(x)) is False1323 assert ask(Q.imaginary((2*I)**x), Q.imaginary(x)) is False1324 assert ask(Q.imaginary(x**0), Q.imaginary(x)) is False1325 assert ask(Q.imaginary(x**y), Q.imaginary(x) & Q.imaginary(y)) is None1326 assert ask(Q.imaginary(x**y), Q.imaginary(x) & Q.real(y)) is None1327 assert ask(Q.imaginary(x**y), Q.real(x) & Q.imaginary(y)) is None1328 assert ask(Q.imaginary(x**y), Q.real(x) & Q.real(y)) is None1329 assert ask(Q.imaginary(x**y), Q.imaginary(x) & Q.integer(y)) is None1330 assert ask(Q.imaginary(x**y), Q.imaginary(y) & Q.integer(x)) is None1331 assert ask(Q.imaginary(x**y), Q.imaginary(x) & Q.odd(y)) is True1332 assert ask(Q.imaginary(x**y), Q.imaginary(x) & Q.rational(y)) is None1333 assert ask(Q.imaginary(x**y), Q.imaginary(x) & Q.even(y)) is False1334 assert ask(Q.imaginary(x**y), Q.real(x) & Q.integer(y)) is False1335 assert ask(Q.imaginary(x**y), Q.positive(x) & Q.real(y)) is False1336 assert ask(Q.imaginary(x**y), Q.negative(x) & Q.real(y)) is None1337 assert ask(Q.imaginary(x**y), Q.negative(x) & Q.real(y) & ~Q.rational(y)) is False1338 assert ask(Q.imaginary(x**y), Q.integer(x) & Q.imaginary(y)) is None1339 assert ask(Q.imaginary(x**y), Q.negative(x) & Q.rational(y) & Q.integer(2*y)) is True1340 assert ask(Q.imaginary(x**y), Q.negative(x) & Q.rational(y) & ~Q.integer(2*y)) is False1341 assert ask(Q.imaginary(x**y), Q.negative(x) & Q.rational(y)) is None1342 assert ask(Q.imaginary(x**y), Q.real(x) & Q.rational(y) & ~Q.integer(2*y)) is False1343 assert ask(Q.imaginary(x**y), Q.real(x) & Q.rational(y) & Q.integer(2*y)) is None1344 # logarithm1345 assert ask(Q.imaginary(log(I))) is True1346 assert ask(Q.imaginary(log(2*I))) is False1347 assert ask(Q.imaginary(log(I + 1))) is False1348 assert ask(Q.imaginary(log(x)), Q.complex(x)) is None1349 assert ask(Q.imaginary(log(x)), Q.imaginary(x)) is None1350 assert ask(Q.imaginary(log(x)), Q.positive(x)) is False1351 assert ask(Q.imaginary(log(exp(x))), Q.complex(x)) is None1352 assert ask(Q.imaginary(log(exp(x))), Q.imaginary(x)) is None # zoo/I/a+I*b1353 assert ask(Q.imaginary(log(exp(I)))) is True1354 # exponential1355 assert ask(Q.imaginary(exp(x)**x), Q.imaginary(x)) is False1356 eq = Pow(exp(pi*I*x, evaluate=False), x, evaluate=False)1357 assert ask(Q.imaginary(eq), Q.even(x)) is False1358 eq = Pow(exp(pi*I*x/2, evaluate=False), x, evaluate=False)1359 assert ask(Q.imaginary(eq), Q.odd(x)) is True1360 assert ask(Q.imaginary(exp(3*I*pi*x)**x), Q.integer(x)) is False1361 assert ask(Q.imaginary(exp(2*pi*I, evaluate=False))) is False1362 assert ask(Q.imaginary(exp(pi*I/2, evaluate=False))) is True1363 # issue 78861364 assert ask(Q.imaginary(Pow(x, Rational(1, 4))), Q.real(x) & Q.negative(x)) is False1365def test_integer():1366 assert ask(Q.integer(x)) is None1367 assert ask(Q.integer(x), Q.integer(x)) is True1368 assert ask(Q.integer(x), ~Q.integer(x)) is False1369 assert ask(Q.integer(x), ~Q.real(x)) is False1370 assert ask(Q.integer(x), ~Q.positive(x)) is None1371 assert ask(Q.integer(x), Q.even(x) | Q.odd(x)) is True1372 assert ask(Q.integer(2*x), Q.integer(x)) is True1373 assert ask(Q.integer(2*x), Q.even(x)) is True1374 assert ask(Q.integer(2*x), Q.prime(x)) is True1375 assert ask(Q.integer(2*x), Q.rational(x)) is None1376 assert ask(Q.integer(2*x), Q.real(x)) is None1377 assert ask(Q.integer(sqrt(2)*x), Q.integer(x)) is False1378 assert ask(Q.integer(sqrt(2)*x), Q.irrational(x)) is None1379 assert ask(Q.integer(x/2), Q.odd(x)) is False1380 assert ask(Q.integer(x/2), Q.even(x)) is True1381 assert ask(Q.integer(x/3), Q.odd(x)) is None1382 assert ask(Q.integer(x/3), Q.even(x)) is None1383def test_negative():1384 assert ask(Q.negative(x), Q.negative(x)) is True1385 assert ask(Q.negative(x), Q.positive(x)) is False1386 assert ask(Q.negative(x), ~Q.real(x)) is False1387 assert ask(Q.negative(x), Q.prime(x)) is False1388 assert ask(Q.negative(x), ~Q.prime(x)) is None1389 assert ask(Q.negative(-x), Q.positive(x)) is True1390 assert ask(Q.negative(-x), ~Q.positive(x)) is None1391 assert ask(Q.negative(-x), Q.negative(x)) is False1392 assert ask(Q.negative(-x), Q.positive(x)) is True1393 assert ask(Q.negative(x - 1), Q.negative(x)) is True1394 assert ask(Q.negative(x + y)) is None1395 assert ask(Q.negative(x + y), Q.negative(x)) is None1396 assert ask(Q.negative(x + y), Q.negative(x) & Q.negative(y)) is True1397 assert ask(Q.negative(x + y), Q.negative(x) & Q.nonpositive(y)) is True1398 assert ask(Q.negative(2 + I)) is False1399 # although this could be False, it is representative of expressions1400 # that don't evaluate to a zero with precision1401 assert ask(Q.negative(cos(I)**2 + sin(I)**2 - 1)) is None1402 assert ask(Q.negative(-I + I*(cos(2)**2 + sin(2)**2))) is None1403 assert ask(Q.negative(x**2)) is None1404 assert ask(Q.negative(x**2), Q.real(x)) is False1405 assert ask(Q.negative(x**1.4), Q.real(x)) is None1406 assert ask(Q.negative(x**I), Q.positive(x)) is None1407 assert ask(Q.negative(x*y)) is None1408 assert ask(Q.negative(x*y), Q.positive(x) & Q.positive(y)) is False1409 assert ask(Q.negative(x*y), Q.positive(x) & Q.negative(y)) is True1410 assert ask(Q.negative(x*y), Q.complex(x) & Q.complex(y)) is None1411 assert ask(Q.negative(x**y)) is None1412 assert ask(Q.negative(x**y), Q.negative(x) & Q.even(y)) is False1413 assert ask(Q.negative(x**y), Q.negative(x) & Q.odd(y)) is True1414 assert ask(Q.negative(x**y), Q.positive(x) & Q.integer(y)) is False1415 assert ask(Q.negative(Abs(x))) is False1416def test_nonzero():1417 assert ask(Q.nonzero(x)) is None1418 assert ask(Q.nonzero(x), Q.real(x)) is None1419 assert ask(Q.nonzero(x), Q.positive(x)) is True1420 assert ask(Q.nonzero(x), Q.negative(x)) is True1421 assert ask(Q.nonzero(x), Q.negative(x) | Q.positive(x)) is True1422 assert ask(Q.nonzero(x + y)) is None1423 assert ask(Q.nonzero(x + y), Q.positive(x) & Q.positive(y)) is True1424 assert ask(Q.nonzero(x + y), Q.positive(x) & Q.negative(y)) is None1425 assert ask(Q.nonzero(x + y), Q.negative(x) & Q.negative(y)) is True1426 assert ask(Q.nonzero(2*x)) is None1427 assert ask(Q.nonzero(2*x), Q.positive(x)) is True1428 assert ask(Q.nonzero(2*x), Q.negative(x)) is True1429 assert ask(Q.nonzero(x*y), Q.nonzero(x)) is None1430 assert ask(Q.nonzero(x*y), Q.nonzero(x) & Q.nonzero(y)) is True1431 assert ask(Q.nonzero(x**y), Q.nonzero(x)) is True1432 assert ask(Q.nonzero(Abs(x))) is None1433 assert ask(Q.nonzero(Abs(x)), Q.nonzero(x)) is True1434 assert ask(Q.nonzero(log(exp(2*I)))) is False1435 # although this could be False, it is representative of expressions1436 # that don't evaluate to a zero with precision1437 assert ask(Q.nonzero(cos(1)**2 + sin(1)**2 - 1)) is None1438def test_zero():1439 assert ask(Q.zero(x)) is None1440 assert ask(Q.zero(x), Q.real(x)) is None1441 assert ask(Q.zero(x), Q.positive(x)) is False1442 assert ask(Q.zero(x), Q.negative(x)) is False1443 assert ask(Q.zero(x), Q.negative(x) | Q.positive(x)) is False1444 assert ask(Q.zero(x), Q.nonnegative(x) & Q.nonpositive(x)) is True1445 assert ask(Q.zero(x + y)) is None1446 assert ask(Q.zero(x + y), Q.positive(x) & Q.positive(y)) is False1447 assert ask(Q.zero(x + y), Q.positive(x) & Q.negative(y)) is None1448 assert ask(Q.zero(x + y), Q.negative(x) & Q.negative(y)) is False1449 assert ask(Q.zero(2*x)) is None1450 assert ask(Q.zero(2*x), Q.positive(x)) is False1451 assert ask(Q.zero(2*x), Q.negative(x)) is False1452 assert ask(Q.zero(x*y), Q.nonzero(x)) is None1453 assert ask(Q.zero(Abs(x))) is None1454 assert ask(Q.zero(Abs(x)), Q.zero(x)) is True1455 assert ask(Q.integer(x), Q.zero(x)) is True1456 assert ask(Q.even(x), Q.zero(x)) is True1457 assert ask(Q.odd(x), Q.zero(x)) is False1458 assert ask(Q.zero(x), Q.even(x)) is None1459 assert ask(Q.zero(x), Q.odd(x)) is False1460 assert ask(Q.zero(x) | Q.zero(y), Q.zero(x*y)) is True1461def test_odd_query():1462 assert ask(Q.odd(x)) is None1463 assert ask(Q.odd(x), Q.odd(x)) is True1464 assert ask(Q.odd(x), Q.integer(x)) is None1465 assert ask(Q.odd(x), ~Q.integer(x)) is False1466 assert ask(Q.odd(x), Q.rational(x)) is None1467 assert ask(Q.odd(x), Q.positive(x)) is None1468 assert ask(Q.odd(-x), Q.odd(x)) is True1469 assert ask(Q.odd(2*x)) is None1470 assert ask(Q.odd(2*x), Q.integer(x)) is False1471 assert ask(Q.odd(2*x), Q.odd(x)) is False1472 assert ask(Q.odd(2*x), Q.irrational(x)) is False1473 assert ask(Q.odd(2*x), ~Q.integer(x)) is None1474 assert ask(Q.odd(3*x), Q.integer(x)) is None1475 assert ask(Q.odd(x/3), Q.odd(x)) is None1476 assert ask(Q.odd(x/3), Q.even(x)) is None1477 assert ask(Q.odd(x + 1), Q.even(x)) is True1478 assert ask(Q.odd(x + 2), Q.even(x)) is False1479 assert ask(Q.odd(x + 2), Q.odd(x)) is True1480 assert ask(Q.odd(3 - x), Q.odd(x)) is False1481 assert ask(Q.odd(3 - x), Q.even(x)) is True1482 assert ask(Q.odd(3 + x), Q.odd(x)) is False1483 assert ask(Q.odd(3 + x), Q.even(x)) is True1484 assert ask(Q.odd(x + y), Q.odd(x) & Q.odd(y)) is False1485 assert ask(Q.odd(x + y), Q.odd(x) & Q.even(y)) is True1486 assert ask(Q.odd(x - y), Q.even(x) & Q.odd(y)) is True1487 assert ask(Q.odd(x - y), Q.odd(x) & Q.odd(y)) is False1488 assert ask(Q.odd(x + y + z), Q.odd(x) & Q.odd(y) & Q.even(z)) is False1489 assert ask(Q.odd(x + y + z + t),1490 Q.odd(x) & Q.odd(y) & Q.even(z) & Q.integer(t)) is None1491 assert ask(Q.odd(2*x + 1), Q.integer(x)) is True1492 assert ask(Q.odd(2*x + y), Q.integer(x) & Q.odd(y)) is True1493 assert ask(Q.odd(2*x + y), Q.integer(x) & Q.even(y)) is False1494 assert ask(Q.odd(2*x + y), Q.integer(x) & Q.integer(y)) is None1495 assert ask(Q.odd(x*y), Q.odd(x) & Q.even(y)) is False1496 assert ask(Q.odd(x*y), Q.odd(x) & Q.odd(y)) is True1497 assert ask(Q.odd(2*x*y), Q.rational(x) & Q.rational(x)) is None1498 assert ask(Q.odd(2*x*y), Q.irrational(x) & Q.irrational(x)) is None1499 assert ask(Q.odd(Abs(x)), Q.odd(x)) is True1500 assert ask(Q.odd((-1)**n), Q.integer(n)) is True1501 assert ask(Q.odd(k**2), Q.even(k)) is False1502 assert ask(Q.odd(n**2), Q.odd(n)) is True1503 assert ask(Q.odd(3**k), Q.even(k)) is None1504 assert ask(Q.odd(k**m), Q.even(k) & Q.integer(m) & ~Q.negative(m)) is None1505 assert ask(Q.odd(n**m), Q.odd(n) & Q.integer(m) & ~Q.negative(m)) is True1506 assert ask(Q.odd(k**p), Q.even(k) & Q.integer(p) & Q.positive(p)) is False1507 assert ask(Q.odd(n**p), Q.odd(n) & Q.integer(p) & Q.positive(p)) is True1508 assert ask(Q.odd(m**k), Q.even(k) & Q.integer(m) & ~Q.negative(m)) is None1509 assert ask(Q.odd(p**k), Q.even(k) & Q.integer(p) & Q.positive(p)) is None1510 assert ask(Q.odd(m**n), Q.odd(n) & Q.integer(m) & ~Q.negative(m)) is None1511 assert ask(Q.odd(p**n), Q.odd(n) & Q.integer(p) & Q.positive(p)) is None1512 assert ask(Q.odd(k**x), Q.even(k)) is None1513 assert ask(Q.odd(n**x), Q.odd(n)) is None1514 assert ask(Q.odd(x*y), Q.integer(x) & Q.integer(y)) is None1515 assert ask(Q.odd(x*x), Q.integer(x)) is None1516 assert ask(Q.odd(x*(x + y)), Q.integer(x) & Q.odd(y)) is False1517 assert ask(Q.odd(x*(x + y)), Q.integer(x) & Q.even(y)) is None1518@XFAIL1519def test_oddness_in_ternary_integer_product_with_odd():1520 # Tests that oddness inference is independent of term ordering.1521 # Term ordering at the point of testing depends on SymPy's symbol order, so1522 # we try to force a different order by modifying symbol names.1523 assert ask(Q.odd(x*y*(y + z)), Q.integer(x) & Q.integer(y) & Q.odd(z)) is False1524 assert ask(Q.odd(y*x*(x + z)), Q.integer(x) & Q.integer(y) & Q.odd(z)) is False1525def test_oddness_in_ternary_integer_product_with_even():1526 assert ask(Q.odd(x*y*(y + z)), Q.integer(x) & Q.integer(y) & Q.even(z)) is None1527def test_prime():1528 assert ask(Q.prime(x), Q.prime(x)) is True1529 assert ask(Q.prime(x), ~Q.prime(x)) is False1530 assert ask(Q.prime(x), Q.integer(x)) is None1531 assert ask(Q.prime(x), ~Q.integer(x)) is False1532 assert ask(Q.prime(2*x), Q.integer(x)) is None1533 assert ask(Q.prime(x*y)) is None1534 assert ask(Q.prime(x*y), Q.prime(x)) is None1535 assert ask(Q.prime(x*y), Q.integer(x) & Q.integer(y)) is None1536 assert ask(Q.prime(4*x), Q.integer(x)) is False1537 assert ask(Q.prime(4*x)) is None1538 assert ask(Q.prime(x**2), Q.integer(x)) is False1539 assert ask(Q.prime(x**2), Q.prime(x)) is False1540 assert ask(Q.prime(x**y), Q.integer(x) & Q.integer(y)) is False1541def test_positive():1542 assert ask(Q.positive(x), Q.positive(x)) is True1543 assert ask(Q.positive(x), Q.negative(x)) is False1544 assert ask(Q.positive(x), Q.nonzero(x)) is None1545 assert ask(Q.positive(-x), Q.positive(x)) is False1546 assert ask(Q.positive(-x), Q.negative(x)) is True1547 assert ask(Q.positive(x + y), Q.positive(x) & Q.positive(y)) is True1548 assert ask(Q.positive(x + y), Q.positive(x) & Q.nonnegative(y)) is True1549 assert ask(Q.positive(x + y), Q.positive(x) & Q.negative(y)) is None1550 assert ask(Q.positive(x + y), Q.positive(x) & Q.imaginary(y)) is False1551 assert ask(Q.positive(2*x), Q.positive(x)) is True1552 assumptions = Q.positive(x) & Q.negative(y) & Q.negative(z) & Q.positive(w)1553 assert ask(Q.positive(x*y*z)) is None1554 assert ask(Q.positive(x*y*z), assumptions) is True1555 assert ask(Q.positive(-x*y*z), assumptions) is False1556 assert ask(Q.positive(x**I), Q.positive(x)) is None1557 assert ask(Q.positive(x**2), Q.positive(x)) is True1558 assert ask(Q.positive(x**2), Q.negative(x)) is True1559 assert ask(Q.positive(x**3), Q.negative(x)) is False1560 assert ask(Q.positive(1/(1 + x**2)), Q.real(x)) is True1561 assert ask(Q.positive(2**I)) is False1562 assert ask(Q.positive(2 + I)) is False1563 # although this could be False, it is representative of expressions1564 # that don't evaluate to a zero with precision1565 assert ask(Q.positive(cos(I)**2 + sin(I)**2 - 1)) is None1566 assert ask(Q.positive(-I + I*(cos(2)**2 + sin(2)**2))) is None1567 #exponential1568 assert ask(Q.positive(exp(x)), Q.real(x)) is True1569 assert ask(~Q.negative(exp(x)), Q.real(x)) is True1570 assert ask(Q.positive(x + exp(x)), Q.real(x)) is None1571 assert ask(Q.positive(exp(x)), Q.imaginary(x)) is None1572 assert ask(Q.positive(exp(2*pi*I, evaluate=False)), Q.imaginary(x)) is True1573 assert ask(Q.negative(exp(pi*I, evaluate=False)), Q.imaginary(x)) is True1574 assert ask(Q.positive(exp(x*pi*I)), Q.even(x)) is True1575 assert ask(Q.positive(exp(x*pi*I)), Q.odd(x)) is False1576 assert ask(Q.positive(exp(x*pi*I)), Q.real(x)) is None1577 # logarithm1578 assert ask(Q.positive(log(x)), Q.imaginary(x)) is False1579 assert ask(Q.positive(log(x)), Q.negative(x)) is False1580 assert ask(Q.positive(log(x)), Q.positive(x)) is None1581 assert ask(Q.positive(log(x + 2)), Q.positive(x)) is True1582 # factorial1583 assert ask(Q.positive(factorial(x)), Q.integer(x) & Q.positive(x))1584 assert ask(Q.positive(factorial(x)), Q.integer(x)) is None1585 #absolute value1586 assert ask(Q.positive(Abs(x))) is None # Abs(0) = 01587 assert ask(Q.positive(Abs(x)), Q.positive(x)) is True1588def test_nonpositive():1589 assert ask(Q.nonpositive(-1))1590 assert ask(Q.nonpositive(0))1591 assert ask(Q.nonpositive(1)) is False1592 assert ask(~Q.positive(x), Q.nonpositive(x))1593 assert ask(Q.nonpositive(x), Q.positive(x)) is False1594 assert ask(Q.nonpositive(sqrt(-1))) is False1595 assert ask(Q.nonpositive(x), Q.imaginary(x)) is False1596def test_nonnegative():1597 assert ask(Q.nonnegative(-1)) is False1598 assert ask(Q.nonnegative(0))1599 assert ask(Q.nonnegative(1))1600 assert ask(~Q.negative(x), Q.nonnegative(x))1601 assert ask(Q.nonnegative(x), Q.negative(x)) is False1602 assert ask(Q.nonnegative(sqrt(-1))) is False1603 assert ask(Q.nonnegative(x), Q.imaginary(x)) is False1604def test_real_basic():1605 assert ask(Q.real(x)) is None1606 assert ask(Q.real(x), Q.real(x)) is True1607 assert ask(Q.real(x), Q.nonzero(x)) is True1608 assert ask(Q.real(x), Q.positive(x)) is True1609 assert ask(Q.real(x), Q.negative(x)) is True1610 assert ask(Q.real(x), Q.integer(x)) is True1611 assert ask(Q.real(x), Q.even(x)) is True1612 assert ask(Q.real(x), Q.prime(x)) is True1613 assert ask(Q.real(x/sqrt(2)), Q.real(x)) is True1614 assert ask(Q.real(x/sqrt(-2)), Q.real(x)) is False1615 assert ask(Q.real(x + 1), Q.real(x)) is True1616 assert ask(Q.real(x + I), Q.real(x)) is False1617 assert ask(Q.real(x + I), Q.complex(x)) is None1618 assert ask(Q.real(2*x), Q.real(x)) is True1619 assert ask(Q.real(I*x), Q.real(x)) is False1620 assert ask(Q.real(I*x), Q.imaginary(x)) is True1621 assert ask(Q.real(I*x), Q.complex(x)) is None1622def test_real_pow():1623 assert ask(Q.real(x**2), Q.real(x)) is True1624 assert ask(Q.real(sqrt(x)), Q.negative(x)) is False1625 assert ask(Q.real(x**y), Q.real(x) & Q.integer(y)) is True1626 assert ask(Q.real(x**y), Q.real(x) & Q.real(y)) is None1627 assert ask(Q.real(x**y), Q.positive(x) & Q.real(y)) is True1628 assert ask(Q.real(x**y), Q.imaginary(x) & Q.imaginary(y)) is None # I**I or (2*I)**I1629 assert ask(Q.real(x**y), Q.imaginary(x) & Q.real(y)) is None # I**1 or I**01630 assert ask(Q.real(x**y), Q.real(x) & Q.imaginary(y)) is None # could be exp(2*pi*I) or 2**I1631 assert ask(Q.real(x**0), Q.imaginary(x)) is True1632 assert ask(Q.real(x**y), Q.real(x) & Q.integer(y)) is True1633 assert ask(Q.real(x**y), Q.positive(x) & Q.real(y)) is True1634 assert ask(Q.real(x**y), Q.real(x) & Q.rational(y)) is None1635 assert ask(Q.real(x**y), Q.imaginary(x) & Q.integer(y)) is None1636 assert ask(Q.real(x**y), Q.imaginary(x) & Q.odd(y)) is False1637 assert ask(Q.real(x**y), Q.imaginary(x) & Q.even(y)) is True1638 assert ask(Q.real(x**(y/z)), Q.real(x) & Q.real(y/z) & Q.rational(y/z) & Q.even(z) & Q.positive(x)) is True1639 assert ask(Q.real(x**(y/z)), Q.real(x) & Q.rational(y/z) & Q.even(z) & Q.negative(x)) is False1640 assert ask(Q.real(x**(y/z)), Q.real(x) & Q.integer(y/z)) is True1641 assert ask(Q.real(x**(y/z)), Q.real(x) & Q.real(y/z) & Q.positive(x)) is True1642 assert ask(Q.real(x**(y/z)), Q.real(x) & Q.real(y/z) & Q.negative(x)) is False1643 assert ask(Q.real((-I)**i), Q.imaginary(i)) is True1644 assert ask(Q.real(I**i), Q.imaginary(i)) is True1645 assert ask(Q.real(i**i), Q.imaginary(i)) is None # i might be 2*I1646 assert ask(Q.real(x**i), Q.imaginary(i)) is None # x could be 01647 assert ask(Q.real(x**(I*pi/log(x))), Q.real(x)) is True1648def test_real_functions():1649 # trigonometric functions1650 assert ask(Q.real(sin(x))) is None1651 assert ask(Q.real(cos(x))) is None1652 assert ask(Q.real(sin(x)), Q.real(x)) is True1653 assert ask(Q.real(cos(x)), Q.real(x)) is True1654 # exponential function1655 assert ask(Q.real(exp(x))) is None1656 assert ask(Q.real(exp(x)), Q.real(x)) is True1657 assert ask(Q.real(x + exp(x)), Q.real(x)) is True1658 assert ask(Q.real(exp(2*pi*I, evaluate=False))) is True1659 assert ask(Q.real(exp(pi*I, evaluate=False))) is True1660 assert ask(Q.real(exp(pi*I/2, evaluate=False))) is False1661 # logarithm1662 assert ask(Q.real(log(I))) is False1663 assert ask(Q.real(log(2*I))) is False1664 assert ask(Q.real(log(I + 1))) is False1665 assert ask(Q.real(log(x)), Q.complex(x)) is None1666 assert ask(Q.real(log(x)), Q.imaginary(x)) is False1667 assert ask(Q.real(log(exp(x))), Q.imaginary(x)) is None # exp(2*pi*I) is 1, log(exp(pi*I)) is pi*I (disregarding periodicity)1668 assert ask(Q.real(log(exp(x))), Q.complex(x)) is None1669 eq = Pow(exp(2*pi*I*x, evaluate=False), x, evaluate=False)1670 assert ask(Q.real(eq), Q.integer(x)) is True1671 assert ask(Q.real(exp(x)**x), Q.imaginary(x)) is True1672 assert ask(Q.real(exp(x)**x), Q.complex(x)) is None1673 # Q.complexes1674 assert ask(Q.real(re(x))) is True1675 assert ask(Q.real(im(x))) is True1676def test_matrix():1677 # hermitian1678 assert ask(Q.hermitian(Matrix([[2, 2 + I, 4], [2 - I, 3, I], [4, -I, 1]]))) == True1679 assert ask(Q.hermitian(Matrix([[2, 2 + I, 4], [2 + I, 3, I], [4, -I, 1]]))) == False1680 z = symbols('z', complex=True)1681 assert ask(Q.hermitian(Matrix([[2, 2 + I, z], [2 - I, 3, I], [4, -I, 1]]))) == None1682 assert ask(Q.hermitian(SparseMatrix(((25, 15, -5), (15, 18, 0), (-5, 0, 11))))) == True1683 assert ask(Q.hermitian(SparseMatrix(((25, 15, -5), (15, I, 0), (-5, 0, 11))))) == False1684 assert ask(Q.hermitian(SparseMatrix(((25, 15, -5), (15, z, 0), (-5, 0, 11))))) == None1685 # antihermitian1686 A = Matrix([[0, -2 - I, 0], [2 - I, 0, -I], [0, -I, 0]])1687 B = Matrix([[-I, 2 + I, 0], [-2 + I, 0, 2 + I], [0, -2 + I, -I]])1688 assert ask(Q.antihermitian(A)) is True1689 assert ask(Q.antihermitian(B)) is True1690 assert ask(Q.antihermitian(A**2)) is False1691 C = (B**3)1692 C.simplify()1693 assert ask(Q.antihermitian(C)) is True1694 _A = Matrix([[0, -2 - I, 0], [z, 0, -I], [0, -I, 0]])1695 assert ask(Q.antihermitian(_A)) is None1696def test_algebraic():1697 assert ask(Q.algebraic(x)) is None1698 assert ask(Q.algebraic(I)) is True1699 assert ask(Q.algebraic(2*I)) is True1700 assert ask(Q.algebraic(I/3)) is True1701 assert ask(Q.algebraic(sqrt(7))) is True1702 assert ask(Q.algebraic(2*sqrt(7))) is True1703 assert ask(Q.algebraic(sqrt(7)/3)) is True1704 assert ask(Q.algebraic(I*sqrt(3))) is True1705 assert ask(Q.algebraic(sqrt(1 + I*sqrt(3)))) is True1706 assert ask(Q.algebraic(1 + I*sqrt(3)**Rational(17, 31))) is True1707 assert ask(Q.algebraic(1 + I*sqrt(3)**(17/pi))) is False1708 for f in [exp, sin, tan, asin, atan, cos]:1709 assert ask(Q.algebraic(f(7))) is False1710 assert ask(Q.algebraic(f(7, evaluate=False))) is False1711 assert ask(Q.algebraic(f(0, evaluate=False))) is True1712 assert ask(Q.algebraic(f(x)), Q.algebraic(x)) is None1713 assert ask(Q.algebraic(f(x)), Q.algebraic(x) & Q.nonzero(x)) is False1714 for g in [log, acos]:1715 assert ask(Q.algebraic(g(7))) is False1716 assert ask(Q.algebraic(g(7, evaluate=False))) is False1717 assert ask(Q.algebraic(g(1, evaluate=False))) is True1718 assert ask(Q.algebraic(g(x)), Q.algebraic(x)) is None1719 assert ask(Q.algebraic(g(x)), Q.algebraic(x) & Q.nonzero(x - 1)) is False1720 for h in [cot, acot]:1721 assert ask(Q.algebraic(h(7))) is False1722 assert ask(Q.algebraic(h(7, evaluate=False))) is False1723 assert ask(Q.algebraic(h(x)), Q.algebraic(x)) is False1724 assert ask(Q.algebraic(sqrt(sin(7)))) is False1725 assert ask(Q.algebraic(sqrt(y + I*sqrt(7)))) is None1726 assert ask(Q.algebraic(2.47)) is True1727 assert ask(Q.algebraic(x), Q.transcendental(x)) is False1728 assert ask(Q.transcendental(x), Q.algebraic(x)) is False1729def test_global():1730 """Test ask with global assumptions"""1731 assert ask(Q.integer(x)) is None1732 global_assumptions.add(Q.integer(x))1733 assert ask(Q.integer(x)) is True1734 global_assumptions.clear()1735 assert ask(Q.integer(x)) is None1736def test_custom_context():1737 """Test ask with custom assumptions context"""1738 assert ask(Q.integer(x)) is None1739 local_context = AssumptionsContext()1740 local_context.add(Q.integer(x))1741 assert ask(Q.integer(x), context=local_context) is True1742 assert ask(Q.integer(x)) is None1743def test_functions_in_assumptions():1744 assert ask(Q.negative(x), Q.real(x) >> Q.positive(x)) is False1745 assert ask(Q.negative(x), Equivalent(Q.real(x), Q.positive(x))) is False1746 assert ask(Q.negative(x), Xor(Q.real(x), Q.negative(x))) is False1747def test_composite_ask():1748 assert ask(Q.negative(x) & Q.integer(x),1749 assumptions=Q.real(x) >> Q.positive(x)) is False1750def test_composite_proposition():1751 assert ask(True) is True1752 assert ask(False) is False1753 assert ask(~Q.negative(x), Q.positive(x)) is True1754 assert ask(~Q.real(x), Q.commutative(x)) is None1755 assert ask(Q.negative(x) & Q.integer(x), Q.positive(x)) is False1756 assert ask(Q.negative(x) & Q.integer(x)) is None1757 assert ask(Q.real(x) | Q.integer(x), Q.positive(x)) is True1758 assert ask(Q.real(x) | Q.integer(x)) is None1759 assert ask(Q.real(x) >> Q.positive(x), Q.negative(x)) is False1760 assert ask(Implies(1761 Q.real(x), Q.positive(x), evaluate=False), Q.negative(x)) is False1762 assert ask(Implies(Q.real(x), Q.positive(x), evaluate=False)) is None1763 assert ask(Equivalent(Q.integer(x), Q.even(x)), Q.even(x)) is True1764 assert ask(Equivalent(Q.integer(x), Q.even(x))) is None1765 assert ask(Equivalent(Q.positive(x), Q.integer(x)), Q.integer(x)) is None1766 assert ask(Q.real(x) | Q.integer(x), Q.real(x) | Q.integer(x)) is True1767def test_tautology():1768 assert ask(Q.real(x) | ~Q.real(x)) is True1769 assert ask(Q.real(x) & ~Q.real(x)) is False1770def test_composite_assumptions():1771 assert ask(Q.real(x), Q.real(x) & Q.real(y)) is True1772 assert ask(Q.positive(x), Q.positive(x) | Q.positive(y)) is None1773 assert ask(Q.positive(x), Q.real(x) >> Q.positive(y)) is None1774 assert ask(Q.real(x), ~(Q.real(x) >> Q.real(y))) is True1775def test_incompatible_resolutors():1776 class Prime2AskHandler(AskHandler):1777 @staticmethod1778 def Number(expr, assumptions):1779 return True1780 register_handler('prime', Prime2AskHandler)1781 raises(ValueError, lambda: ask(Q.prime(4)))1782 remove_handler('prime', Prime2AskHandler)1783 class InconclusiveHandler(AskHandler):1784 @staticmethod1785 def Number(expr, assumptions):1786 return None1787 register_handler('prime', InconclusiveHandler)1788 assert ask(Q.prime(3)) is True1789 remove_handler('prime', InconclusiveHandler)1790def test_key_extensibility():1791 """test that you can add keys to the ask system at runtime"""1792 # make sure the key is not defined1793 raises(AttributeError, lambda: ask(Q.my_key(x)))1794 class MyAskHandler(AskHandler):1795 @staticmethod1796 def Symbol(expr, assumptions):1797 return True1798 register_handler('my_key', MyAskHandler)1799 assert ask(Q.my_key(x)) is True1800 assert ask(Q.my_key(x + 1)) is None1801 remove_handler('my_key', MyAskHandler)1802 del Q.my_key1803 raises(AttributeError, lambda: ask(Q.my_key(x)))1804def test_type_extensibility():1805 """test that new types can be added to the ask system at runtime1806 We create a custom type MyType, and override ask Q.prime=True with handler1807 MyAskHandler for this type1808 TODO: test incompatible resolutors1809 """1810 from sympy.core import Basic1811 class MyType(Basic):1812 pass1813 class MyAskHandler(AskHandler):1814 @staticmethod1815 def MyType(expr, assumptions):1816 return True1817 a = MyType()1818 register_handler(Q.prime, MyAskHandler)1819 assert ask(Q.prime(a)) is True1820def test_single_fact_lookup():1821 known_facts = And(Implies(Q.integer, Q.rational),1822 Implies(Q.rational, Q.real),1823 Implies(Q.real, Q.complex))1824 known_facts_keys = {Q.integer, Q.rational, Q.real, Q.complex}1825 known_facts_cnf = to_cnf(known_facts)1826 mapping = single_fact_lookup(known_facts_keys, known_facts_cnf)1827 assert mapping[Q.rational] == {Q.real, Q.rational, Q.complex}1828def test_compute_known_facts():1829 known_facts = And(Implies(Q.integer, Q.rational),1830 Implies(Q.rational, Q.real),1831 Implies(Q.real, Q.complex))1832 known_facts_keys = {Q.integer, Q.rational, Q.real, Q.complex}1833 compute_known_facts(known_facts, known_facts_keys)1834@slow1835def test_known_facts_consistent():1836 """"Test that ask_generated.py is up-to-date"""1837 from sympy.assumptions.ask import get_known_facts, get_known_facts_keys1838 from os.path import abspath, dirname, join1839 filename = join(dirname(dirname(abspath(__file__))), 'ask_generated.py')1840 with open(filename) as f:1841 assert f.read() == \1842 compute_known_facts(get_known_facts(), get_known_facts_keys())1843def test_Add_queries():1844 assert ask(Q.prime(12345678901234567890 + (cos(1)**2 + sin(1)**2))) is True1845 assert ask(Q.even(Add(S(2), S(2), evaluate=0))) is True1846 assert ask(Q.prime(Add(S(2), S(2), evaluate=0))) is False1847 assert ask(Q.integer(Add(S(2), S(2), evaluate=0))) is True1848def test_positive_assuming():1849 with assuming(Q.positive(x + 1)):1850 assert not ask(Q.positive(x))1851def test_issue_5421():1852 raises(TypeError, lambda: ask(pi/log(x), Q.real))1853def test_issue_3906():1854 raises(TypeError, lambda: ask(Q.positive))1855def test_issue_5833():1856 assert ask(Q.positive(log(x)**2), Q.positive(x)) is None1857 assert ask(~Q.negative(log(x)**2), Q.positive(x)) is True1858def test_issue_6732():1859 raises(ValueError, lambda: ask(Q.positive(x), Q.positive(x) & Q.negative(x)))1860 raises(ValueError, lambda: ask(Q.negative(x), Q.positive(x) & Q.negative(x)))1861def test_issue_7246():1862 assert ask(Q.positive(atan(p)), Q.positive(p)) is True1863 assert ask(Q.positive(atan(p)), Q.negative(p)) is False1864 assert ask(Q.positive(atan(p)), Q.zero(p)) is False1865 assert ask(Q.positive(atan(x))) is None1866 assert ask(Q.positive(asin(p)), Q.positive(p)) is None1867 assert ask(Q.positive(asin(p)), Q.zero(p)) is None1868 assert ask(Q.positive(asin(Rational(1, 7)))) is True1869 assert ask(Q.positive(asin(x)), Q.positive(x) & Q.nonpositive(x - 1)) is True1870 assert ask(Q.positive(asin(x)), Q.negative(x) & Q.nonnegative(x + 1)) is False1871 assert ask(Q.positive(acos(p)), Q.positive(p)) is None1872 assert ask(Q.positive(acos(Rational(1, 7)))) is True1873 assert ask(Q.positive(acos(x)), Q.nonnegative(x + 1) & Q.nonpositive(x - 1)) is True1874 assert ask(Q.positive(acos(x)), Q.nonnegative(x - 1)) is None1875 assert ask(Q.positive(acot(x)), Q.positive(x)) is True1876 assert ask(Q.positive(acot(x)), Q.real(x)) is True1877 assert ask(Q.positive(acot(x)), Q.imaginary(x)) is False1878 assert ask(Q.positive(acot(x))) is None1879@XFAIL1880def test_issue_7246_failing():1881 #Move this test to test_issue_7246 once1882 #the new assumptions module is improved.1883 assert ask(Q.positive(acos(x)), Q.zero(x)) is True1884def test_check_old_assumption():1885 x = symbols('x', real=True)1886 assert ask(Q.real(x)) is True1887 assert ask(Q.imaginary(x)) is False1888 assert ask(Q.complex(x)) is True1889 x = symbols('x', imaginary=True)1890 assert ask(Q.real(x)) is False1891 assert ask(Q.imaginary(x)) is True1892 assert ask(Q.complex(x)) is True1893 x = symbols('x', complex=True)1894 assert ask(Q.real(x)) is None1895 assert ask(Q.complex(x)) is True1896 x = symbols('x', positive=True, finite=True)1897 assert ask(Q.positive(x)) is True1898 assert ask(Q.negative(x)) is False1899 assert ask(Q.real(x)) is True1900 x = symbols('x', commutative=False)1901 assert ask(Q.commutative(x)) is False1902 x = symbols('x', negative=True)1903 assert ask(Q.positive(x)) is False1904 assert ask(Q.negative(x)) is True1905 x = symbols('x', nonnegative=True)1906 assert ask(Q.negative(x)) is False1907 assert ask(Q.positive(x)) is None1908 assert ask(Q.zero(x)) is None1909 x = symbols('x', finite=True)1910 assert ask(Q.finite(x)) is True1911 x = symbols('x', prime=True)1912 assert ask(Q.prime(x)) is True1913 assert ask(Q.composite(x)) is False1914 x = symbols('x', composite=True)1915 assert ask(Q.prime(x)) is False1916 assert ask(Q.composite(x)) is True1917 x = symbols('x', even=True)1918 assert ask(Q.even(x)) is True1919 assert ask(Q.odd(x)) is False1920 x = symbols('x', odd=True)1921 assert ask(Q.even(x)) is False1922 assert ask(Q.odd(x)) is True1923 x = symbols('x', nonzero=True)1924 assert ask(Q.nonzero(x)) is True1925 assert ask(Q.zero(x)) is False1926 x = symbols('x', zero=True)1927 assert ask(Q.zero(x)) is True1928 x = symbols('x', integer=True)1929 assert ask(Q.integer(x)) is True1930 x = symbols('x', rational=True)1931 assert ask(Q.rational(x)) is True1932 assert ask(Q.irrational(x)) is False1933 x = symbols('x', irrational=True)1934 assert ask(Q.irrational(x)) is True1935 assert ask(Q.rational(x)) is False1936def test_issue_9636():1937 assert ask(Q.integer(1.0)) is False1938 assert ask(Q.prime(3.0)) is False1939 assert ask(Q.composite(4.0)) is False1940 assert ask(Q.even(2.0)) is False1941 assert ask(Q.odd(3.0)) is False1942def test_autosimp_used_to_fail():1943 # See issue #98071944 assert ask(Q.imaginary(0**I)) is False1945 assert ask(Q.imaginary(0**(-I))) is False1946 assert ask(Q.real(0**I)) is False1947 assert ask(Q.real(0**(-I))) is False1948def test_custom_AskHandler():1949 from sympy.assumptions import register_handler, ask, Q1950 from sympy.assumptions.handlers import AskHandler1951 from sympy.logic.boolalg import conjuncts1952 from sympy import Symbol1953 class MersenneHandler(AskHandler):1954 @staticmethod1955 def Integer(expr, assumptions):1956 from sympy import log1957 if ask(Q.integer(log(expr + 1, 2))):1958 return True1959 @staticmethod1960 def Symbol(expr, assumptions):1961 if expr in conjuncts(assumptions):1962 return True1963 register_handler('mersenne', MersenneHandler)1964 n = Symbol('n', integer=True)...
test_matrices.py
Source:test_matrices.py
...12C0x0 = MatrixSymbol('C0x0', 0, 0)13V1 = MatrixSymbol('V1', 2, 1)14V2 = MatrixSymbol('V2', 2, 1)15def test_square():16 assert ask(Q.square(X))17 assert not ask(Q.square(Y))18 assert ask(Q.square(Y*Y.T))19def test_invertible():20 assert ask(Q.invertible(X), Q.invertible(X))21 assert ask(Q.invertible(Y)) is False22 assert ask(Q.invertible(X*Y), Q.invertible(X)) is False23 assert ask(Q.invertible(X*Z), Q.invertible(X)) is None24 assert ask(Q.invertible(X*Z), Q.invertible(X) & Q.invertible(Z)) is True25 assert ask(Q.invertible(X.T)) is None26 assert ask(Q.invertible(X.T), Q.invertible(X)) is True27 assert ask(Q.invertible(X.I)) is True28 assert ask(Q.invertible(Identity(3))) is True29 assert ask(Q.invertible(ZeroMatrix(3, 3))) is False30 assert ask(Q.invertible(OneMatrix(1, 1))) is True31 assert ask(Q.invertible(OneMatrix(3, 3))) is False32 assert ask(Q.invertible(X), Q.fullrank(X) & Q.square(X))33def test_singular():34 assert ask(Q.singular(X)) is None35 assert ask(Q.singular(X), Q.invertible(X)) is False36 assert ask(Q.singular(X), ~Q.invertible(X)) is True37@XFAIL38def test_invertible_fullrank():39 assert ask(Q.invertible(X), Q.fullrank(X)) is True40def test_invertible_BlockMatrix():41 assert ask(Q.invertible(BlockMatrix([Identity(3)]))) == True42 assert ask(Q.invertible(BlockMatrix([ZeroMatrix(3, 3)]))) == False43 X = Matrix([[1, 2, 3], [3, 5, 4]])44 Y = Matrix([[4, 2, 7], [2, 3, 5]])45 # non-invertible A block46 assert ask(Q.invertible(BlockMatrix([47 [Matrix.ones(3, 3), Y.T],48 [X, Matrix.eye(2)],49 ]))) == True50 # non-invertible B block51 assert ask(Q.invertible(BlockMatrix([52 [Y.T, Matrix.ones(3, 3)],53 [Matrix.eye(2), X],54 ]))) == True55 # non-invertible C block56 assert ask(Q.invertible(BlockMatrix([57 [X, Matrix.eye(2)],58 [Matrix.ones(3, 3), Y.T],59 ]))) == True60 # non-invertible D block61 assert ask(Q.invertible(BlockMatrix([62 [Matrix.eye(2), X],63 [Y.T, Matrix.ones(3, 3)],64 ]))) == True65def test_invertible_BlockDiagMatrix():66 assert ask(Q.invertible(BlockDiagMatrix(Identity(3), Identity(5)))) == True67 assert ask(Q.invertible(BlockDiagMatrix(ZeroMatrix(3, 3), Identity(5)))) == False68 assert ask(Q.invertible(BlockDiagMatrix(Identity(3), OneMatrix(5, 5)))) == False69def test_symmetric():70 assert ask(Q.symmetric(X), Q.symmetric(X))71 assert ask(Q.symmetric(X*Z), Q.symmetric(X)) is None72 assert ask(Q.symmetric(X*Z), Q.symmetric(X) & Q.symmetric(Z)) is True73 assert ask(Q.symmetric(X + Z), Q.symmetric(X) & Q.symmetric(Z)) is True74 assert ask(Q.symmetric(Y)) is False75 assert ask(Q.symmetric(Y*Y.T)) is True76 assert ask(Q.symmetric(Y.T*X*Y)) is None77 assert ask(Q.symmetric(Y.T*X*Y), Q.symmetric(X)) is True78 assert ask(Q.symmetric(X**10), Q.symmetric(X)) is True79 assert ask(Q.symmetric(A1x1)) is True80 assert ask(Q.symmetric(A1x1 + B1x1)) is True81 assert ask(Q.symmetric(A1x1 * B1x1)) is True82 assert ask(Q.symmetric(V1.T*V1)) is True83 assert ask(Q.symmetric(V1.T*(V1 + V2))) is True84 assert ask(Q.symmetric(V1.T*(V1 + V2) + A1x1)) is True85 assert ask(Q.symmetric(MatrixSlice(Y, (0, 1), (1, 2)))) is True86 assert ask(Q.symmetric(Identity(3))) is True87 assert ask(Q.symmetric(ZeroMatrix(3, 3))) is True88 assert ask(Q.symmetric(OneMatrix(3, 3))) is True89def _test_orthogonal_unitary(predicate):90 assert ask(predicate(X), predicate(X))91 assert ask(predicate(X.T), predicate(X)) is True92 assert ask(predicate(X.I), predicate(X)) is True93 assert ask(predicate(X**2), predicate(X))94 assert ask(predicate(Y)) is False95 assert ask(predicate(X)) is None96 assert ask(predicate(X), ~Q.invertible(X)) is False97 assert ask(predicate(X*Z*X), predicate(X) & predicate(Z)) is True98 assert ask(predicate(Identity(3))) is True99 assert ask(predicate(ZeroMatrix(3, 3))) is False100 assert ask(Q.invertible(X), predicate(X))101 assert not ask(predicate(X + Z), predicate(X) & predicate(Z))102def test_orthogonal():103 _test_orthogonal_unitary(Q.orthogonal)104def test_unitary():105 _test_orthogonal_unitary(Q.unitary)106 assert ask(Q.unitary(X), Q.orthogonal(X))107def test_fullrank():108 assert ask(Q.fullrank(X), Q.fullrank(X))109 assert ask(Q.fullrank(X**2), Q.fullrank(X))110 assert ask(Q.fullrank(X.T), Q.fullrank(X)) is True111 assert ask(Q.fullrank(X)) is None112 assert ask(Q.fullrank(Y)) is None113 assert ask(Q.fullrank(X*Z), Q.fullrank(X) & Q.fullrank(Z)) is True114 assert ask(Q.fullrank(Identity(3))) is True115 assert ask(Q.fullrank(ZeroMatrix(3, 3))) is False116 assert ask(Q.fullrank(OneMatrix(1, 1))) is True117 assert ask(Q.fullrank(OneMatrix(3, 3))) is False118 assert ask(Q.invertible(X), ~Q.fullrank(X)) == False119def test_positive_definite():120 assert ask(Q.positive_definite(X), Q.positive_definite(X))121 assert ask(Q.positive_definite(X.T), Q.positive_definite(X)) is True122 assert ask(Q.positive_definite(X.I), Q.positive_definite(X)) is True123 assert ask(Q.positive_definite(Y)) is False124 assert ask(Q.positive_definite(X)) is None125 assert ask(Q.positive_definite(X**3), Q.positive_definite(X))126 assert ask(Q.positive_definite(X*Z*X),127 Q.positive_definite(X) & Q.positive_definite(Z)) is True128 assert ask(Q.positive_definite(X), Q.orthogonal(X))129 assert ask(Q.positive_definite(Y.T*X*Y),130 Q.positive_definite(X) & Q.fullrank(Y)) is True131 assert not ask(Q.positive_definite(Y.T*X*Y), Q.positive_definite(X))132 assert ask(Q.positive_definite(Identity(3))) is True133 assert ask(Q.positive_definite(ZeroMatrix(3, 3))) is False134 assert ask(Q.positive_definite(OneMatrix(1, 1))) is True135 assert ask(Q.positive_definite(OneMatrix(3, 3))) is False136 assert ask(Q.positive_definite(X + Z), Q.positive_definite(X) &137 Q.positive_definite(Z)) is True138 assert not ask(Q.positive_definite(-X), Q.positive_definite(X))139 assert ask(Q.positive(X[1, 1]), Q.positive_definite(X))140def test_triangular():141 assert ask(Q.upper_triangular(X + Z.T + Identity(2)), Q.upper_triangular(X) &142 Q.lower_triangular(Z)) is True143 assert ask(Q.upper_triangular(X*Z.T), Q.upper_triangular(X) &144 Q.lower_triangular(Z)) is True145 assert ask(Q.lower_triangular(Identity(3))) is True146 assert ask(Q.lower_triangular(ZeroMatrix(3, 3))) is True147 assert ask(Q.upper_triangular(ZeroMatrix(3, 3))) is True148 assert ask(Q.lower_triangular(OneMatrix(1, 1))) is True149 assert ask(Q.upper_triangular(OneMatrix(1, 1))) is True150 assert ask(Q.lower_triangular(OneMatrix(3, 3))) is False151 assert ask(Q.upper_triangular(OneMatrix(3, 3))) is False152 assert ask(Q.triangular(X), Q.unit_triangular(X))153 assert ask(Q.upper_triangular(X**3), Q.upper_triangular(X))154 assert ask(Q.lower_triangular(X**3), Q.lower_triangular(X))155def test_diagonal():156 assert ask(Q.diagonal(X + Z.T + Identity(2)), Q.diagonal(X) &157 Q.diagonal(Z)) is True158 assert ask(Q.diagonal(ZeroMatrix(3, 3)))159 assert ask(Q.diagonal(OneMatrix(1, 1))) is True160 assert ask(Q.diagonal(OneMatrix(3, 3))) is False161 assert ask(Q.lower_triangular(X) & Q.upper_triangular(X), Q.diagonal(X))162 assert ask(Q.diagonal(X), Q.lower_triangular(X) & Q.upper_triangular(X))163 assert ask(Q.symmetric(X), Q.diagonal(X))164 assert ask(Q.triangular(X), Q.diagonal(X))165 assert ask(Q.diagonal(C0x0))166 assert ask(Q.diagonal(A1x1))167 assert ask(Q.diagonal(A1x1 + B1x1))168 assert ask(Q.diagonal(A1x1*B1x1))169 assert ask(Q.diagonal(V1.T*V2))170 assert ask(Q.diagonal(V1.T*(X + Z)*V1))171 assert ask(Q.diagonal(MatrixSlice(Y, (0, 1), (1, 2)))) is True172 assert ask(Q.diagonal(V1.T*(V1 + V2))) is True173 assert ask(Q.diagonal(X**3), Q.diagonal(X))174 assert ask(Q.diagonal(Identity(3)))175 assert ask(Q.diagonal(DiagMatrix(V1)))176 assert ask(Q.diagonal(DiagonalMatrix(X)))177def test_non_atoms():178 assert ask(Q.real(Trace(X)), Q.positive(Trace(X)))179@XFAIL180def test_non_trivial_implies():181 X = MatrixSymbol('X', 3, 3)182 Y = MatrixSymbol('Y', 3, 3)183 assert ask(Q.lower_triangular(X+Y), Q.lower_triangular(X) &184 Q.lower_triangular(Y)) is True185 assert ask(Q.triangular(X), Q.lower_triangular(X)) is True186 assert ask(Q.triangular(X+Y), Q.lower_triangular(X) &187 Q.lower_triangular(Y)) is True188def test_MatrixSlice():189 X = MatrixSymbol('X', 4, 4)190 B = MatrixSlice(X, (1, 3), (1, 3))191 C = MatrixSlice(X, (0, 3), (1, 3))192 assert ask(Q.symmetric(B), Q.symmetric(X))193 assert ask(Q.invertible(B), Q.invertible(X))194 assert ask(Q.diagonal(B), Q.diagonal(X))195 assert ask(Q.orthogonal(B), Q.orthogonal(X))196 assert ask(Q.upper_triangular(B), Q.upper_triangular(X))197 assert not ask(Q.symmetric(C), Q.symmetric(X))198 assert not ask(Q.invertible(C), Q.invertible(X))199 assert not ask(Q.diagonal(C), Q.diagonal(X))200 assert not ask(Q.orthogonal(C), Q.orthogonal(X))201 assert not ask(Q.upper_triangular(C), Q.upper_triangular(X))202def test_det_trace_positive():203 X = MatrixSymbol('X', 4, 4)204 assert ask(Q.positive(Trace(X)), Q.positive_definite(X))205 assert ask(Q.positive(Determinant(X)), Q.positive_definite(X))206def test_field_assumptions():207 X = MatrixSymbol('X', 4, 4)208 Y = MatrixSymbol('Y', 4, 4)209 assert ask(Q.real_elements(X), Q.real_elements(X))210 assert not ask(Q.integer_elements(X), Q.real_elements(X))211 assert ask(Q.complex_elements(X), Q.real_elements(X))212 assert ask(Q.complex_elements(X**2), Q.real_elements(X))213 assert ask(Q.real_elements(X**2), Q.integer_elements(X))214 assert ask(Q.real_elements(X+Y), Q.real_elements(X)) is None215 assert ask(Q.real_elements(X+Y), Q.real_elements(X) & Q.real_elements(Y))216 from sympy.matrices.expressions.hadamard import HadamardProduct217 assert ask(Q.real_elements(HadamardProduct(X, Y)),218 Q.real_elements(X) & Q.real_elements(Y))219 assert ask(Q.complex_elements(X+Y), Q.real_elements(X) & Q.complex_elements(Y))220 assert ask(Q.real_elements(X.T), Q.real_elements(X))221 assert ask(Q.real_elements(X.I), Q.real_elements(X) & Q.invertible(X))222 assert ask(Q.real_elements(Trace(X)), Q.real_elements(X))223 assert ask(Q.integer_elements(Determinant(X)), Q.integer_elements(X))224 assert not ask(Q.integer_elements(X.I), Q.integer_elements(X))225 alpha = Symbol('alpha')226 assert ask(Q.real_elements(alpha*X), Q.real_elements(X) & Q.real(alpha))227 assert ask(Q.real_elements(LofLU(X)), Q.real_elements(X))228 e = Symbol('e', integer=True, negative=True)229 assert ask(Q.real_elements(X**e), Q.real_elements(X) & Q.invertible(X))230 assert ask(Q.real_elements(X**e), Q.real_elements(X)) is None231def test_matrix_element_sets():232 X = MatrixSymbol('X', 4, 4)233 assert ask(Q.real(X[1, 2]), Q.real_elements(X))234 assert ask(Q.integer(X[1, 2]), Q.integer_elements(X))235 assert ask(Q.complex(X[1, 2]), Q.complex_elements(X))236 assert ask(Q.integer_elements(Identity(3)))237 assert ask(Q.integer_elements(ZeroMatrix(3, 3)))238 assert ask(Q.integer_elements(OneMatrix(3, 3)))239 from sympy.matrices.expressions.fourier import DFT240 assert ask(Q.complex_elements(DFT(3)))241def test_matrix_element_sets_slices_blocks():242 X = MatrixSymbol('X', 4, 4)243 assert ask(Q.integer_elements(X[:, 3]), Q.integer_elements(X))244 assert ask(Q.integer_elements(BlockMatrix([[X], [X]])),245 Q.integer_elements(X))246def test_matrix_element_sets_determinant_trace():247 assert ask(Q.integer(Determinant(X)), Q.integer_elements(X))...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!