ask_generated.py 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352
  1. """
  2. Do NOT manually edit this file.
  3. Instead, run ./bin/ask_update.py.
  4. """
  5. from sympy.assumptions.ask import Q
  6. from sympy.assumptions.cnf import Literal
  7. from sympy.core.cache import cacheit
  8. @cacheit
  9. def get_all_known_facts():
  10. """
  11. Known facts between unary predicates as CNF clauses.
  12. """
  13. return {
  14. frozenset((Literal(Q.algebraic, False), Literal(Q.imaginary, True), Literal(Q.transcendental, False))),
  15. frozenset((Literal(Q.algebraic, False), Literal(Q.negative, True), Literal(Q.transcendental, False))),
  16. frozenset((Literal(Q.algebraic, False), Literal(Q.positive, True), Literal(Q.transcendental, False))),
  17. frozenset((Literal(Q.algebraic, False), Literal(Q.rational, True))),
  18. frozenset((Literal(Q.algebraic, False), Literal(Q.transcendental, False), Literal(Q.zero, True))),
  19. frozenset((Literal(Q.algebraic, True), Literal(Q.finite, False))),
  20. frozenset((Literal(Q.algebraic, True), Literal(Q.transcendental, True))),
  21. frozenset((Literal(Q.antihermitian, False), Literal(Q.hermitian, False), Literal(Q.zero, True))),
  22. frozenset((Literal(Q.antihermitian, False), Literal(Q.imaginary, True))),
  23. frozenset((Literal(Q.commutative, False), Literal(Q.finite, True))),
  24. frozenset((Literal(Q.commutative, False), Literal(Q.infinite, True))),
  25. frozenset((Literal(Q.complex_elements, False), Literal(Q.real_elements, True))),
  26. frozenset((Literal(Q.composite, False), Literal(Q.even, True), Literal(Q.positive, True), Literal(Q.prime, False))),
  27. frozenset((Literal(Q.composite, True), Literal(Q.even, False), Literal(Q.odd, False))),
  28. frozenset((Literal(Q.composite, True), Literal(Q.positive, False))),
  29. frozenset((Literal(Q.composite, True), Literal(Q.prime, True))),
  30. frozenset((Literal(Q.diagonal, False), Literal(Q.lower_triangular, True), Literal(Q.upper_triangular, True))),
  31. frozenset((Literal(Q.diagonal, True), Literal(Q.lower_triangular, False))),
  32. frozenset((Literal(Q.diagonal, True), Literal(Q.normal, False))),
  33. frozenset((Literal(Q.diagonal, True), Literal(Q.symmetric, False))),
  34. frozenset((Literal(Q.diagonal, True), Literal(Q.upper_triangular, False))),
  35. frozenset((Literal(Q.even, False), Literal(Q.odd, False), Literal(Q.prime, True))),
  36. frozenset((Literal(Q.even, False), Literal(Q.zero, True))),
  37. frozenset((Literal(Q.even, True), Literal(Q.odd, True))),
  38. frozenset((Literal(Q.even, True), Literal(Q.rational, False))),
  39. frozenset((Literal(Q.finite, False), Literal(Q.transcendental, True))),
  40. frozenset((Literal(Q.finite, True), Literal(Q.infinite, True))),
  41. frozenset((Literal(Q.fullrank, False), Literal(Q.invertible, True))),
  42. frozenset((Literal(Q.fullrank, True), Literal(Q.invertible, False), Literal(Q.square, True))),
  43. frozenset((Literal(Q.hermitian, False), Literal(Q.negative, True))),
  44. frozenset((Literal(Q.hermitian, False), Literal(Q.positive, True))),
  45. frozenset((Literal(Q.hermitian, False), Literal(Q.zero, True))),
  46. frozenset((Literal(Q.imaginary, True), Literal(Q.negative, True))),
  47. frozenset((Literal(Q.imaginary, True), Literal(Q.positive, True))),
  48. frozenset((Literal(Q.imaginary, True), Literal(Q.zero, True))),
  49. frozenset((Literal(Q.infinite, False), Literal(Q.negative_infinite, True))),
  50. frozenset((Literal(Q.infinite, False), Literal(Q.positive_infinite, True))),
  51. frozenset((Literal(Q.integer_elements, True), Literal(Q.real_elements, False))),
  52. frozenset((Literal(Q.invertible, False), Literal(Q.positive_definite, True))),
  53. frozenset((Literal(Q.invertible, False), Literal(Q.singular, False))),
  54. frozenset((Literal(Q.invertible, False), Literal(Q.unitary, True))),
  55. frozenset((Literal(Q.invertible, True), Literal(Q.singular, True))),
  56. frozenset((Literal(Q.invertible, True), Literal(Q.square, False))),
  57. frozenset((Literal(Q.irrational, False), Literal(Q.negative, True), Literal(Q.rational, False))),
  58. frozenset((Literal(Q.irrational, False), Literal(Q.positive, True), Literal(Q.rational, False))),
  59. frozenset((Literal(Q.irrational, False), Literal(Q.rational, False), Literal(Q.zero, True))),
  60. frozenset((Literal(Q.irrational, True), Literal(Q.negative, False), Literal(Q.positive, False), Literal(Q.zero, False))),
  61. frozenset((Literal(Q.irrational, True), Literal(Q.rational, True))),
  62. frozenset((Literal(Q.lower_triangular, False), Literal(Q.triangular, True), Literal(Q.upper_triangular, False))),
  63. frozenset((Literal(Q.lower_triangular, True), Literal(Q.triangular, False))),
  64. frozenset((Literal(Q.negative, False), Literal(Q.positive, False), Literal(Q.rational, True), Literal(Q.zero, False))),
  65. frozenset((Literal(Q.negative, True), Literal(Q.negative_infinite, True))),
  66. frozenset((Literal(Q.negative, True), Literal(Q.positive, True))),
  67. frozenset((Literal(Q.negative, True), Literal(Q.positive_infinite, True))),
  68. frozenset((Literal(Q.negative, True), Literal(Q.zero, True))),
  69. frozenset((Literal(Q.negative_infinite, True), Literal(Q.positive, True))),
  70. frozenset((Literal(Q.negative_infinite, True), Literal(Q.positive_infinite, True))),
  71. frozenset((Literal(Q.negative_infinite, True), Literal(Q.zero, True))),
  72. frozenset((Literal(Q.normal, False), Literal(Q.unitary, True))),
  73. frozenset((Literal(Q.normal, True), Literal(Q.square, False))),
  74. frozenset((Literal(Q.odd, True), Literal(Q.rational, False))),
  75. frozenset((Literal(Q.orthogonal, False), Literal(Q.real_elements, True), Literal(Q.unitary, True))),
  76. frozenset((Literal(Q.orthogonal, True), Literal(Q.positive_definite, False))),
  77. frozenset((Literal(Q.orthogonal, True), Literal(Q.unitary, False))),
  78. frozenset((Literal(Q.positive, False), Literal(Q.prime, True))),
  79. frozenset((Literal(Q.positive, True), Literal(Q.positive_infinite, True))),
  80. frozenset((Literal(Q.positive, True), Literal(Q.zero, True))),
  81. frozenset((Literal(Q.positive_infinite, True), Literal(Q.zero, True))),
  82. frozenset((Literal(Q.square, False), Literal(Q.symmetric, True))),
  83. frozenset((Literal(Q.triangular, False), Literal(Q.unit_triangular, True))),
  84. frozenset((Literal(Q.triangular, False), Literal(Q.upper_triangular, True)))
  85. }
  86. @cacheit
  87. def get_all_known_matrix_facts():
  88. """
  89. Known facts between unary predicates for matrices as CNF clauses.
  90. """
  91. return {
  92. frozenset((Literal(Q.complex_elements, False), Literal(Q.real_elements, True))),
  93. frozenset((Literal(Q.diagonal, False), Literal(Q.lower_triangular, True), Literal(Q.upper_triangular, True))),
  94. frozenset((Literal(Q.diagonal, True), Literal(Q.lower_triangular, False))),
  95. frozenset((Literal(Q.diagonal, True), Literal(Q.normal, False))),
  96. frozenset((Literal(Q.diagonal, True), Literal(Q.symmetric, False))),
  97. frozenset((Literal(Q.diagonal, True), Literal(Q.upper_triangular, False))),
  98. frozenset((Literal(Q.fullrank, False), Literal(Q.invertible, True))),
  99. frozenset((Literal(Q.fullrank, True), Literal(Q.invertible, False), Literal(Q.square, True))),
  100. frozenset((Literal(Q.integer_elements, True), Literal(Q.real_elements, False))),
  101. frozenset((Literal(Q.invertible, False), Literal(Q.positive_definite, True))),
  102. frozenset((Literal(Q.invertible, False), Literal(Q.singular, False))),
  103. frozenset((Literal(Q.invertible, False), Literal(Q.unitary, True))),
  104. frozenset((Literal(Q.invertible, True), Literal(Q.singular, True))),
  105. frozenset((Literal(Q.invertible, True), Literal(Q.square, False))),
  106. frozenset((Literal(Q.lower_triangular, False), Literal(Q.triangular, True), Literal(Q.upper_triangular, False))),
  107. frozenset((Literal(Q.lower_triangular, True), Literal(Q.triangular, False))),
  108. frozenset((Literal(Q.normal, False), Literal(Q.unitary, True))),
  109. frozenset((Literal(Q.normal, True), Literal(Q.square, False))),
  110. frozenset((Literal(Q.orthogonal, False), Literal(Q.real_elements, True), Literal(Q.unitary, True))),
  111. frozenset((Literal(Q.orthogonal, True), Literal(Q.positive_definite, False))),
  112. frozenset((Literal(Q.orthogonal, True), Literal(Q.unitary, False))),
  113. frozenset((Literal(Q.square, False), Literal(Q.symmetric, True))),
  114. frozenset((Literal(Q.triangular, False), Literal(Q.unit_triangular, True))),
  115. frozenset((Literal(Q.triangular, False), Literal(Q.upper_triangular, True)))
  116. }
  117. @cacheit
  118. def get_all_known_number_facts():
  119. """
  120. Known facts between unary predicates for numbers as CNF clauses.
  121. """
  122. return {
  123. frozenset((Literal(Q.algebraic, False), Literal(Q.imaginary, True), Literal(Q.transcendental, False))),
  124. frozenset((Literal(Q.algebraic, False), Literal(Q.negative, True), Literal(Q.transcendental, False))),
  125. frozenset((Literal(Q.algebraic, False), Literal(Q.positive, True), Literal(Q.transcendental, False))),
  126. frozenset((Literal(Q.algebraic, False), Literal(Q.rational, True))),
  127. frozenset((Literal(Q.algebraic, False), Literal(Q.transcendental, False), Literal(Q.zero, True))),
  128. frozenset((Literal(Q.algebraic, True), Literal(Q.finite, False))),
  129. frozenset((Literal(Q.algebraic, True), Literal(Q.transcendental, True))),
  130. frozenset((Literal(Q.antihermitian, False), Literal(Q.hermitian, False), Literal(Q.zero, True))),
  131. frozenset((Literal(Q.antihermitian, False), Literal(Q.imaginary, True))),
  132. frozenset((Literal(Q.commutative, False), Literal(Q.finite, True))),
  133. frozenset((Literal(Q.commutative, False), Literal(Q.infinite, True))),
  134. frozenset((Literal(Q.composite, False), Literal(Q.even, True), Literal(Q.positive, True), Literal(Q.prime, False))),
  135. frozenset((Literal(Q.composite, True), Literal(Q.even, False), Literal(Q.odd, False))),
  136. frozenset((Literal(Q.composite, True), Literal(Q.positive, False))),
  137. frozenset((Literal(Q.composite, True), Literal(Q.prime, True))),
  138. frozenset((Literal(Q.even, False), Literal(Q.odd, False), Literal(Q.prime, True))),
  139. frozenset((Literal(Q.even, False), Literal(Q.zero, True))),
  140. frozenset((Literal(Q.even, True), Literal(Q.odd, True))),
  141. frozenset((Literal(Q.even, True), Literal(Q.rational, False))),
  142. frozenset((Literal(Q.finite, False), Literal(Q.transcendental, True))),
  143. frozenset((Literal(Q.finite, True), Literal(Q.infinite, True))),
  144. frozenset((Literal(Q.hermitian, False), Literal(Q.negative, True))),
  145. frozenset((Literal(Q.hermitian, False), Literal(Q.positive, True))),
  146. frozenset((Literal(Q.hermitian, False), Literal(Q.zero, True))),
  147. frozenset((Literal(Q.imaginary, True), Literal(Q.negative, True))),
  148. frozenset((Literal(Q.imaginary, True), Literal(Q.positive, True))),
  149. frozenset((Literal(Q.imaginary, True), Literal(Q.zero, True))),
  150. frozenset((Literal(Q.infinite, False), Literal(Q.negative_infinite, True))),
  151. frozenset((Literal(Q.infinite, False), Literal(Q.positive_infinite, True))),
  152. frozenset((Literal(Q.irrational, False), Literal(Q.negative, True), Literal(Q.rational, False))),
  153. frozenset((Literal(Q.irrational, False), Literal(Q.positive, True), Literal(Q.rational, False))),
  154. frozenset((Literal(Q.irrational, False), Literal(Q.rational, False), Literal(Q.zero, True))),
  155. frozenset((Literal(Q.irrational, True), Literal(Q.negative, False), Literal(Q.positive, False), Literal(Q.zero, False))),
  156. frozenset((Literal(Q.irrational, True), Literal(Q.rational, True))),
  157. frozenset((Literal(Q.negative, False), Literal(Q.positive, False), Literal(Q.rational, True), Literal(Q.zero, False))),
  158. frozenset((Literal(Q.negative, True), Literal(Q.negative_infinite, True))),
  159. frozenset((Literal(Q.negative, True), Literal(Q.positive, True))),
  160. frozenset((Literal(Q.negative, True), Literal(Q.positive_infinite, True))),
  161. frozenset((Literal(Q.negative, True), Literal(Q.zero, True))),
  162. frozenset((Literal(Q.negative_infinite, True), Literal(Q.positive, True))),
  163. frozenset((Literal(Q.negative_infinite, True), Literal(Q.positive_infinite, True))),
  164. frozenset((Literal(Q.negative_infinite, True), Literal(Q.zero, True))),
  165. frozenset((Literal(Q.odd, True), Literal(Q.rational, False))),
  166. frozenset((Literal(Q.positive, False), Literal(Q.prime, True))),
  167. frozenset((Literal(Q.positive, True), Literal(Q.positive_infinite, True))),
  168. frozenset((Literal(Q.positive, True), Literal(Q.zero, True))),
  169. frozenset((Literal(Q.positive_infinite, True), Literal(Q.zero, True)))
  170. }
  171. @cacheit
  172. def get_known_facts_dict():
  173. """
  174. Logical relations between unary predicates as dictionary.
  175. Each key is a predicate, and item is two groups of predicates.
  176. First group contains the predicates which are implied by the key, and
  177. second group contains the predicates which are rejected by the key.
  178. """
  179. return {
  180. Q.algebraic: (set([Q.algebraic, Q.commutative, Q.complex, Q.finite]),
  181. set([Q.infinite, Q.negative_infinite, Q.positive_infinite,
  182. Q.transcendental])),
  183. Q.antihermitian: (set([Q.antihermitian]), set([])),
  184. Q.commutative: (set([Q.commutative]), set([])),
  185. Q.complex: (set([Q.commutative, Q.complex, Q.finite]),
  186. set([Q.infinite, Q.negative_infinite, Q.positive_infinite])),
  187. Q.complex_elements: (set([Q.complex_elements]), set([])),
  188. Q.composite: (set([Q.algebraic, Q.commutative, Q.complex, Q.composite,
  189. Q.extended_nonnegative, Q.extended_nonzero,
  190. Q.extended_positive, Q.extended_real, Q.finite, Q.hermitian,
  191. Q.integer, Q.nonnegative, Q.nonzero, Q.positive, Q.rational,
  192. Q.real]), set([Q.extended_negative, Q.extended_nonpositive,
  193. Q.imaginary, Q.infinite, Q.irrational, Q.negative,
  194. Q.negative_infinite, Q.nonpositive, Q.positive_infinite,
  195. Q.prime, Q.transcendental, Q.zero])),
  196. Q.diagonal: (set([Q.diagonal, Q.lower_triangular, Q.normal, Q.square,
  197. Q.symmetric, Q.triangular, Q.upper_triangular]), set([])),
  198. Q.even: (set([Q.algebraic, Q.commutative, Q.complex, Q.even,
  199. Q.extended_real, Q.finite, Q.hermitian, Q.integer, Q.rational,
  200. Q.real]), set([Q.imaginary, Q.infinite, Q.irrational,
  201. Q.negative_infinite, Q.odd, Q.positive_infinite,
  202. Q.transcendental])),
  203. Q.extended_negative: (set([Q.commutative, Q.extended_negative,
  204. Q.extended_nonpositive, Q.extended_nonzero, Q.extended_real]),
  205. set([Q.composite, Q.extended_nonnegative, Q.extended_positive,
  206. Q.imaginary, Q.nonnegative, Q.positive, Q.positive_infinite,
  207. Q.prime, Q.zero])),
  208. Q.extended_nonnegative: (set([Q.commutative, Q.extended_nonnegative,
  209. Q.extended_real]), set([Q.extended_negative, Q.imaginary,
  210. Q.negative, Q.negative_infinite])),
  211. Q.extended_nonpositive: (set([Q.commutative, Q.extended_nonpositive,
  212. Q.extended_real]), set([Q.composite, Q.extended_positive,
  213. Q.imaginary, Q.positive, Q.positive_infinite, Q.prime])),
  214. Q.extended_nonzero: (set([Q.commutative, Q.extended_nonzero,
  215. Q.extended_real]), set([Q.imaginary, Q.zero])),
  216. Q.extended_positive: (set([Q.commutative, Q.extended_nonnegative,
  217. Q.extended_nonzero, Q.extended_positive, Q.extended_real]),
  218. set([Q.extended_negative, Q.extended_nonpositive, Q.imaginary,
  219. Q.negative, Q.negative_infinite, Q.nonpositive, Q.zero])),
  220. Q.extended_real: (set([Q.commutative, Q.extended_real]),
  221. set([Q.imaginary])),
  222. Q.finite: (set([Q.commutative, Q.finite]), set([Q.infinite,
  223. Q.negative_infinite, Q.positive_infinite])),
  224. Q.fullrank: (set([Q.fullrank]), set([])),
  225. Q.hermitian: (set([Q.hermitian]), set([])),
  226. Q.imaginary: (set([Q.antihermitian, Q.commutative, Q.complex,
  227. Q.finite, Q.imaginary]), set([Q.composite, Q.even,
  228. Q.extended_negative, Q.extended_nonnegative,
  229. Q.extended_nonpositive, Q.extended_nonzero,
  230. Q.extended_positive, Q.extended_real, Q.infinite, Q.integer,
  231. Q.irrational, Q.negative, Q.negative_infinite, Q.nonnegative,
  232. Q.nonpositive, Q.nonzero, Q.odd, Q.positive,
  233. Q.positive_infinite, Q.prime, Q.rational, Q.real, Q.zero])),
  234. Q.infinite: (set([Q.commutative, Q.infinite]), set([Q.algebraic,
  235. Q.complex, Q.composite, Q.even, Q.finite, Q.imaginary,
  236. Q.integer, Q.irrational, Q.negative, Q.nonnegative,
  237. Q.nonpositive, Q.nonzero, Q.odd, Q.positive, Q.prime,
  238. Q.rational, Q.real, Q.transcendental, Q.zero])),
  239. Q.integer: (set([Q.algebraic, Q.commutative, Q.complex,
  240. Q.extended_real, Q.finite, Q.hermitian, Q.integer, Q.rational,
  241. Q.real]), set([Q.imaginary, Q.infinite, Q.irrational,
  242. Q.negative_infinite, Q.positive_infinite, Q.transcendental])),
  243. Q.integer_elements: (set([Q.complex_elements, Q.integer_elements,
  244. Q.real_elements]), set([])),
  245. Q.invertible: (set([Q.fullrank, Q.invertible, Q.square]),
  246. set([Q.singular])),
  247. Q.irrational: (set([Q.commutative, Q.complex, Q.extended_nonzero,
  248. Q.extended_real, Q.finite, Q.hermitian, Q.irrational,
  249. Q.nonzero, Q.real]), set([Q.composite, Q.even, Q.imaginary,
  250. Q.infinite, Q.integer, Q.negative_infinite, Q.odd,
  251. Q.positive_infinite, Q.prime, Q.rational, Q.zero])),
  252. Q.is_true: (set([Q.is_true]), set([])),
  253. Q.lower_triangular: (set([Q.lower_triangular, Q.triangular]), set([])),
  254. Q.negative: (set([Q.commutative, Q.complex, Q.extended_negative,
  255. Q.extended_nonpositive, Q.extended_nonzero, Q.extended_real,
  256. Q.finite, Q.hermitian, Q.negative, Q.nonpositive, Q.nonzero,
  257. Q.real]), set([Q.composite, Q.extended_nonnegative,
  258. Q.extended_positive, Q.imaginary, Q.infinite,
  259. Q.negative_infinite, Q.nonnegative, Q.positive,
  260. Q.positive_infinite, Q.prime, Q.zero])),
  261. Q.negative_infinite: (set([Q.commutative, Q.extended_negative,
  262. Q.extended_nonpositive, Q.extended_nonzero, Q.extended_real,
  263. Q.infinite, Q.negative_infinite]), set([Q.algebraic,
  264. Q.complex, Q.composite, Q.even, Q.extended_nonnegative,
  265. Q.extended_positive, Q.finite, Q.imaginary, Q.integer,
  266. Q.irrational, Q.negative, Q.nonnegative, Q.nonpositive,
  267. Q.nonzero, Q.odd, Q.positive, Q.positive_infinite, Q.prime,
  268. Q.rational, Q.real, Q.transcendental, Q.zero])),
  269. Q.noninteger: (set([Q.noninteger]), set([])),
  270. Q.nonnegative: (set([Q.commutative, Q.complex, Q.extended_nonnegative,
  271. Q.extended_real, Q.finite, Q.hermitian, Q.nonnegative,
  272. Q.real]), set([Q.extended_negative, Q.imaginary, Q.infinite,
  273. Q.negative, Q.negative_infinite, Q.positive_infinite])),
  274. Q.nonpositive: (set([Q.commutative, Q.complex, Q.extended_nonpositive,
  275. Q.extended_real, Q.finite, Q.hermitian, Q.nonpositive,
  276. Q.real]), set([Q.composite, Q.extended_positive, Q.imaginary,
  277. Q.infinite, Q.negative_infinite, Q.positive,
  278. Q.positive_infinite, Q.prime])),
  279. Q.nonzero: (set([Q.commutative, Q.complex, Q.extended_nonzero,
  280. Q.extended_real, Q.finite, Q.hermitian, Q.nonzero, Q.real]),
  281. set([Q.imaginary, Q.infinite, Q.negative_infinite,
  282. Q.positive_infinite, Q.zero])),
  283. Q.normal: (set([Q.normal, Q.square]), set([])),
  284. Q.odd: (set([Q.algebraic, Q.commutative, Q.complex,
  285. Q.extended_nonzero, Q.extended_real, Q.finite, Q.hermitian,
  286. Q.integer, Q.nonzero, Q.odd, Q.rational, Q.real]),
  287. set([Q.even, Q.imaginary, Q.infinite, Q.irrational,
  288. Q.negative_infinite, Q.positive_infinite, Q.transcendental,
  289. Q.zero])),
  290. Q.orthogonal: (set([Q.fullrank, Q.invertible, Q.normal, Q.orthogonal,
  291. Q.positive_definite, Q.square, Q.unitary]), set([Q.singular])),
  292. Q.positive: (set([Q.commutative, Q.complex, Q.extended_nonnegative,
  293. Q.extended_nonzero, Q.extended_positive, Q.extended_real,
  294. Q.finite, Q.hermitian, Q.nonnegative, Q.nonzero, Q.positive,
  295. Q.real]), set([Q.extended_negative, Q.extended_nonpositive,
  296. Q.imaginary, Q.infinite, Q.negative, Q.negative_infinite,
  297. Q.nonpositive, Q.positive_infinite, Q.zero])),
  298. Q.positive_definite: (set([Q.fullrank, Q.invertible,
  299. Q.positive_definite, Q.square]), set([Q.singular])),
  300. Q.positive_infinite: (set([Q.commutative, Q.extended_nonnegative,
  301. Q.extended_nonzero, Q.extended_positive, Q.extended_real,
  302. Q.infinite, Q.positive_infinite]), set([Q.algebraic,
  303. Q.complex, Q.composite, Q.even, Q.extended_negative,
  304. Q.extended_nonpositive, Q.finite, Q.imaginary, Q.integer,
  305. Q.irrational, Q.negative, Q.negative_infinite, Q.nonnegative,
  306. Q.nonpositive, Q.nonzero, Q.odd, Q.positive, Q.prime,
  307. Q.rational, Q.real, Q.transcendental, Q.zero])),
  308. Q.prime: (set([Q.algebraic, Q.commutative, Q.complex,
  309. Q.extended_nonnegative, Q.extended_nonzero,
  310. Q.extended_positive, Q.extended_real, Q.finite, Q.hermitian,
  311. Q.integer, Q.nonnegative, Q.nonzero, Q.positive, Q.prime,
  312. Q.rational, Q.real]), set([Q.composite, Q.extended_negative,
  313. Q.extended_nonpositive, Q.imaginary, Q.infinite, Q.irrational,
  314. Q.negative, Q.negative_infinite, Q.nonpositive,
  315. Q.positive_infinite, Q.transcendental, Q.zero])),
  316. Q.rational: (set([Q.algebraic, Q.commutative, Q.complex,
  317. Q.extended_real, Q.finite, Q.hermitian, Q.rational, Q.real]),
  318. set([Q.imaginary, Q.infinite, Q.irrational,
  319. Q.negative_infinite, Q.positive_infinite, Q.transcendental])),
  320. Q.real: (set([Q.commutative, Q.complex, Q.extended_real, Q.finite,
  321. Q.hermitian, Q.real]), set([Q.imaginary, Q.infinite,
  322. Q.negative_infinite, Q.positive_infinite])),
  323. Q.real_elements: (set([Q.complex_elements, Q.real_elements]), set([])),
  324. Q.singular: (set([Q.singular]), set([Q.invertible, Q.orthogonal,
  325. Q.positive_definite, Q.unitary])),
  326. Q.square: (set([Q.square]), set([])),
  327. Q.symmetric: (set([Q.square, Q.symmetric]), set([])),
  328. Q.transcendental: (set([Q.commutative, Q.complex, Q.finite,
  329. Q.transcendental]), set([Q.algebraic, Q.composite, Q.even,
  330. Q.infinite, Q.integer, Q.negative_infinite, Q.odd,
  331. Q.positive_infinite, Q.prime, Q.rational, Q.zero])),
  332. Q.triangular: (set([Q.triangular]), set([])),
  333. Q.unit_triangular: (set([Q.triangular, Q.unit_triangular]), set([])),
  334. Q.unitary: (set([Q.fullrank, Q.invertible, Q.normal, Q.square,
  335. Q.unitary]), set([Q.singular])),
  336. Q.upper_triangular: (set([Q.triangular, Q.upper_triangular]), set([])),
  337. Q.zero: (set([Q.algebraic, Q.commutative, Q.complex, Q.even,
  338. Q.extended_nonnegative, Q.extended_nonpositive,
  339. Q.extended_real, Q.finite, Q.hermitian, Q.integer,
  340. Q.nonnegative, Q.nonpositive, Q.rational, Q.real, Q.zero]),
  341. set([Q.composite, Q.extended_negative, Q.extended_nonzero,
  342. Q.extended_positive, Q.imaginary, Q.infinite, Q.irrational,
  343. Q.negative, Q.negative_infinite, Q.nonzero, Q.odd, Q.positive,
  344. Q.positive_infinite, Q.prime, Q.transcendental])),
  345. }