Coverage for /usr/lib/python3/dist-packages/sympy/assumptions/ask_generated.py: 78%
9 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 15:55 +0200
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-14 15:55 +0200
1"""
2Do NOT manually edit this file.
3Instead, run ./bin/ask_update.py.
4"""
6from sympy.assumptions.ask import Q
7from sympy.assumptions.cnf import Literal
8from sympy.core.cache import cacheit
10@cacheit
11def get_all_known_facts():
12 """
13 Known facts between unary predicates as CNF clauses.
14 """
15 return {
16 frozenset((Literal(Q.algebraic, False), Literal(Q.imaginary, True), Literal(Q.transcendental, False))),
17 frozenset((Literal(Q.algebraic, False), Literal(Q.negative, True), Literal(Q.transcendental, False))),
18 frozenset((Literal(Q.algebraic, False), Literal(Q.positive, True), Literal(Q.transcendental, False))),
19 frozenset((Literal(Q.algebraic, False), Literal(Q.rational, True))),
20 frozenset((Literal(Q.algebraic, False), Literal(Q.transcendental, False), Literal(Q.zero, True))),
21 frozenset((Literal(Q.algebraic, True), Literal(Q.finite, False))),
22 frozenset((Literal(Q.algebraic, True), Literal(Q.transcendental, True))),
23 frozenset((Literal(Q.antihermitian, False), Literal(Q.hermitian, False), Literal(Q.zero, True))),
24 frozenset((Literal(Q.antihermitian, False), Literal(Q.imaginary, True))),
25 frozenset((Literal(Q.commutative, False), Literal(Q.finite, True))),
26 frozenset((Literal(Q.commutative, False), Literal(Q.infinite, True))),
27 frozenset((Literal(Q.complex_elements, False), Literal(Q.real_elements, True))),
28 frozenset((Literal(Q.composite, False), Literal(Q.even, True), Literal(Q.positive, True), Literal(Q.prime, False))),
29 frozenset((Literal(Q.composite, True), Literal(Q.even, False), Literal(Q.odd, False))),
30 frozenset((Literal(Q.composite, True), Literal(Q.positive, False))),
31 frozenset((Literal(Q.composite, True), Literal(Q.prime, True))),
32 frozenset((Literal(Q.diagonal, False), Literal(Q.lower_triangular, True), Literal(Q.upper_triangular, True))),
33 frozenset((Literal(Q.diagonal, True), Literal(Q.lower_triangular, False))),
34 frozenset((Literal(Q.diagonal, True), Literal(Q.normal, False))),
35 frozenset((Literal(Q.diagonal, True), Literal(Q.symmetric, False))),
36 frozenset((Literal(Q.diagonal, True), Literal(Q.upper_triangular, False))),
37 frozenset((Literal(Q.even, False), Literal(Q.odd, False), Literal(Q.prime, True))),
38 frozenset((Literal(Q.even, False), Literal(Q.zero, True))),
39 frozenset((Literal(Q.even, True), Literal(Q.odd, True))),
40 frozenset((Literal(Q.even, True), Literal(Q.rational, False))),
41 frozenset((Literal(Q.finite, False), Literal(Q.transcendental, True))),
42 frozenset((Literal(Q.finite, True), Literal(Q.infinite, True))),
43 frozenset((Literal(Q.fullrank, False), Literal(Q.invertible, True))),
44 frozenset((Literal(Q.fullrank, True), Literal(Q.invertible, False), Literal(Q.square, True))),
45 frozenset((Literal(Q.hermitian, False), Literal(Q.negative, True))),
46 frozenset((Literal(Q.hermitian, False), Literal(Q.positive, True))),
47 frozenset((Literal(Q.hermitian, False), Literal(Q.zero, True))),
48 frozenset((Literal(Q.imaginary, True), Literal(Q.negative, True))),
49 frozenset((Literal(Q.imaginary, True), Literal(Q.positive, True))),
50 frozenset((Literal(Q.imaginary, True), Literal(Q.zero, True))),
51 frozenset((Literal(Q.infinite, False), Literal(Q.negative_infinite, True))),
52 frozenset((Literal(Q.infinite, False), Literal(Q.positive_infinite, True))),
53 frozenset((Literal(Q.integer_elements, True), Literal(Q.real_elements, False))),
54 frozenset((Literal(Q.invertible, False), Literal(Q.positive_definite, True))),
55 frozenset((Literal(Q.invertible, False), Literal(Q.singular, False))),
56 frozenset((Literal(Q.invertible, False), Literal(Q.unitary, True))),
57 frozenset((Literal(Q.invertible, True), Literal(Q.singular, True))),
58 frozenset((Literal(Q.invertible, True), Literal(Q.square, False))),
59 frozenset((Literal(Q.irrational, False), Literal(Q.negative, True), Literal(Q.rational, False))),
60 frozenset((Literal(Q.irrational, False), Literal(Q.positive, True), Literal(Q.rational, False))),
61 frozenset((Literal(Q.irrational, False), Literal(Q.rational, False), Literal(Q.zero, True))),
62 frozenset((Literal(Q.irrational, True), Literal(Q.negative, False), Literal(Q.positive, False), Literal(Q.zero, False))),
63 frozenset((Literal(Q.irrational, True), Literal(Q.rational, True))),
64 frozenset((Literal(Q.lower_triangular, False), Literal(Q.triangular, True), Literal(Q.upper_triangular, False))),
65 frozenset((Literal(Q.lower_triangular, True), Literal(Q.triangular, False))),
66 frozenset((Literal(Q.negative, False), Literal(Q.positive, False), Literal(Q.rational, True), Literal(Q.zero, False))),
67 frozenset((Literal(Q.negative, True), Literal(Q.negative_infinite, True))),
68 frozenset((Literal(Q.negative, True), Literal(Q.positive, True))),
69 frozenset((Literal(Q.negative, True), Literal(Q.positive_infinite, True))),
70 frozenset((Literal(Q.negative, True), Literal(Q.zero, True))),
71 frozenset((Literal(Q.negative_infinite, True), Literal(Q.positive, True))),
72 frozenset((Literal(Q.negative_infinite, True), Literal(Q.positive_infinite, True))),
73 frozenset((Literal(Q.negative_infinite, True), Literal(Q.zero, True))),
74 frozenset((Literal(Q.normal, False), Literal(Q.unitary, True))),
75 frozenset((Literal(Q.normal, True), Literal(Q.square, False))),
76 frozenset((Literal(Q.odd, True), Literal(Q.rational, False))),
77 frozenset((Literal(Q.orthogonal, False), Literal(Q.real_elements, True), Literal(Q.unitary, True))),
78 frozenset((Literal(Q.orthogonal, True), Literal(Q.positive_definite, False))),
79 frozenset((Literal(Q.orthogonal, True), Literal(Q.unitary, False))),
80 frozenset((Literal(Q.positive, False), Literal(Q.prime, True))),
81 frozenset((Literal(Q.positive, True), Literal(Q.positive_infinite, True))),
82 frozenset((Literal(Q.positive, True), Literal(Q.zero, True))),
83 frozenset((Literal(Q.positive_infinite, True), Literal(Q.zero, True))),
84 frozenset((Literal(Q.square, False), Literal(Q.symmetric, True))),
85 frozenset((Literal(Q.triangular, False), Literal(Q.unit_triangular, True))),
86 frozenset((Literal(Q.triangular, False), Literal(Q.upper_triangular, True)))
87 }
89@cacheit
90def get_known_facts_dict():
91 """
92 Logical relations between unary predicates as dictionary.
94 Each key is a predicate, and item is two groups of predicates.
95 First group contains the predicates which are implied by the key, and
96 second group contains the predicates which are rejected by the key.
98 """
99 return {
100 Q.algebraic: (set([Q.algebraic, Q.commutative, Q.complex, Q.finite]),
101 set([Q.infinite, Q.negative_infinite, Q.positive_infinite,
102 Q.transcendental])),
103 Q.antihermitian: (set([Q.antihermitian]), set([])),
104 Q.commutative: (set([Q.commutative]), set([])),
105 Q.complex: (set([Q.commutative, Q.complex, Q.finite]),
106 set([Q.infinite, Q.negative_infinite, Q.positive_infinite])),
107 Q.complex_elements: (set([Q.complex_elements]), set([])),
108 Q.composite: (set([Q.algebraic, Q.commutative, Q.complex, Q.composite,
109 Q.extended_nonnegative, Q.extended_nonzero,
110 Q.extended_positive, Q.extended_real, Q.finite, Q.hermitian,
111 Q.integer, Q.nonnegative, Q.nonzero, Q.positive, Q.rational,
112 Q.real]), set([Q.extended_negative, Q.extended_nonpositive,
113 Q.imaginary, Q.infinite, Q.irrational, Q.negative,
114 Q.negative_infinite, Q.nonpositive, Q.positive_infinite,
115 Q.prime, Q.transcendental, Q.zero])),
116 Q.diagonal: (set([Q.diagonal, Q.lower_triangular, Q.normal, Q.square,
117 Q.symmetric, Q.triangular, Q.upper_triangular]), set([])),
118 Q.even: (set([Q.algebraic, Q.commutative, Q.complex, Q.even,
119 Q.extended_real, Q.finite, Q.hermitian, Q.integer, Q.rational,
120 Q.real]), set([Q.imaginary, Q.infinite, Q.irrational,
121 Q.negative_infinite, Q.odd, Q.positive_infinite,
122 Q.transcendental])),
123 Q.extended_negative: (set([Q.commutative, Q.extended_negative,
124 Q.extended_nonpositive, Q.extended_nonzero, Q.extended_real]),
125 set([Q.composite, Q.extended_nonnegative, Q.extended_positive,
126 Q.imaginary, Q.nonnegative, Q.positive, Q.positive_infinite,
127 Q.prime, Q.zero])),
128 Q.extended_nonnegative: (set([Q.commutative, Q.extended_nonnegative,
129 Q.extended_real]), set([Q.extended_negative, Q.imaginary,
130 Q.negative, Q.negative_infinite])),
131 Q.extended_nonpositive: (set([Q.commutative, Q.extended_nonpositive,
132 Q.extended_real]), set([Q.composite, Q.extended_positive,
133 Q.imaginary, Q.positive, Q.positive_infinite, Q.prime])),
134 Q.extended_nonzero: (set([Q.commutative, Q.extended_nonzero,
135 Q.extended_real]), set([Q.imaginary, Q.zero])),
136 Q.extended_positive: (set([Q.commutative, Q.extended_nonnegative,
137 Q.extended_nonzero, Q.extended_positive, Q.extended_real]),
138 set([Q.extended_negative, Q.extended_nonpositive, Q.imaginary,
139 Q.negative, Q.negative_infinite, Q.nonpositive, Q.zero])),
140 Q.extended_real: (set([Q.commutative, Q.extended_real]),
141 set([Q.imaginary])),
142 Q.finite: (set([Q.commutative, Q.finite]), set([Q.infinite,
143 Q.negative_infinite, Q.positive_infinite])),
144 Q.fullrank: (set([Q.fullrank]), set([])),
145 Q.hermitian: (set([Q.hermitian]), set([])),
146 Q.imaginary: (set([Q.antihermitian, Q.commutative, Q.complex,
147 Q.finite, Q.imaginary]), set([Q.composite, Q.even,
148 Q.extended_negative, Q.extended_nonnegative,
149 Q.extended_nonpositive, Q.extended_nonzero,
150 Q.extended_positive, Q.extended_real, Q.infinite, Q.integer,
151 Q.irrational, Q.negative, Q.negative_infinite, Q.nonnegative,
152 Q.nonpositive, Q.nonzero, Q.odd, Q.positive,
153 Q.positive_infinite, Q.prime, Q.rational, Q.real, Q.zero])),
154 Q.infinite: (set([Q.commutative, Q.infinite]), set([Q.algebraic,
155 Q.complex, Q.composite, Q.even, Q.finite, Q.imaginary,
156 Q.integer, Q.irrational, Q.negative, Q.nonnegative,
157 Q.nonpositive, Q.nonzero, Q.odd, Q.positive, Q.prime,
158 Q.rational, Q.real, Q.transcendental, Q.zero])),
159 Q.integer: (set([Q.algebraic, Q.commutative, Q.complex,
160 Q.extended_real, Q.finite, Q.hermitian, Q.integer, Q.rational,
161 Q.real]), set([Q.imaginary, Q.infinite, Q.irrational,
162 Q.negative_infinite, Q.positive_infinite, Q.transcendental])),
163 Q.integer_elements: (set([Q.complex_elements, Q.integer_elements,
164 Q.real_elements]), set([])),
165 Q.invertible: (set([Q.fullrank, Q.invertible, Q.square]),
166 set([Q.singular])),
167 Q.irrational: (set([Q.commutative, Q.complex, Q.extended_nonzero,
168 Q.extended_real, Q.finite, Q.hermitian, Q.irrational,
169 Q.nonzero, Q.real]), set([Q.composite, Q.even, Q.imaginary,
170 Q.infinite, Q.integer, Q.negative_infinite, Q.odd,
171 Q.positive_infinite, Q.prime, Q.rational, Q.zero])),
172 Q.is_true: (set([Q.is_true]), set([])),
173 Q.lower_triangular: (set([Q.lower_triangular, Q.triangular]), set([])),
174 Q.negative: (set([Q.commutative, Q.complex, Q.extended_negative,
175 Q.extended_nonpositive, Q.extended_nonzero, Q.extended_real,
176 Q.finite, Q.hermitian, Q.negative, Q.nonpositive, Q.nonzero,
177 Q.real]), set([Q.composite, Q.extended_nonnegative,
178 Q.extended_positive, Q.imaginary, Q.infinite,
179 Q.negative_infinite, Q.nonnegative, Q.positive,
180 Q.positive_infinite, Q.prime, Q.zero])),
181 Q.negative_infinite: (set([Q.commutative, Q.extended_negative,
182 Q.extended_nonpositive, Q.extended_nonzero, Q.extended_real,
183 Q.infinite, Q.negative_infinite]), set([Q.algebraic,
184 Q.complex, Q.composite, Q.even, Q.extended_nonnegative,
185 Q.extended_positive, Q.finite, Q.imaginary, Q.integer,
186 Q.irrational, Q.negative, Q.nonnegative, Q.nonpositive,
187 Q.nonzero, Q.odd, Q.positive, Q.positive_infinite, Q.prime,
188 Q.rational, Q.real, Q.transcendental, Q.zero])),
189 Q.nonnegative: (set([Q.commutative, Q.complex, Q.extended_nonnegative,
190 Q.extended_real, Q.finite, Q.hermitian, Q.nonnegative,
191 Q.real]), set([Q.extended_negative, Q.imaginary, Q.infinite,
192 Q.negative, Q.negative_infinite, Q.positive_infinite])),
193 Q.nonpositive: (set([Q.commutative, Q.complex, Q.extended_nonpositive,
194 Q.extended_real, Q.finite, Q.hermitian, Q.nonpositive,
195 Q.real]), set([Q.composite, Q.extended_positive, Q.imaginary,
196 Q.infinite, Q.negative_infinite, Q.positive,
197 Q.positive_infinite, Q.prime])),
198 Q.nonzero: (set([Q.commutative, Q.complex, Q.extended_nonzero,
199 Q.extended_real, Q.finite, Q.hermitian, Q.nonzero, Q.real]),
200 set([Q.imaginary, Q.infinite, Q.negative_infinite,
201 Q.positive_infinite, Q.zero])),
202 Q.normal: (set([Q.normal, Q.square]), set([])),
203 Q.odd: (set([Q.algebraic, Q.commutative, Q.complex,
204 Q.extended_nonzero, Q.extended_real, Q.finite, Q.hermitian,
205 Q.integer, Q.nonzero, Q.odd, Q.rational, Q.real]),
206 set([Q.even, Q.imaginary, Q.infinite, Q.irrational,
207 Q.negative_infinite, Q.positive_infinite, Q.transcendental,
208 Q.zero])),
209 Q.orthogonal: (set([Q.fullrank, Q.invertible, Q.normal, Q.orthogonal,
210 Q.positive_definite, Q.square, Q.unitary]), set([Q.singular])),
211 Q.positive: (set([Q.commutative, Q.complex, Q.extended_nonnegative,
212 Q.extended_nonzero, Q.extended_positive, Q.extended_real,
213 Q.finite, Q.hermitian, Q.nonnegative, Q.nonzero, Q.positive,
214 Q.real]), set([Q.extended_negative, Q.extended_nonpositive,
215 Q.imaginary, Q.infinite, Q.negative, Q.negative_infinite,
216 Q.nonpositive, Q.positive_infinite, Q.zero])),
217 Q.positive_definite: (set([Q.fullrank, Q.invertible,
218 Q.positive_definite, Q.square]), set([Q.singular])),
219 Q.positive_infinite: (set([Q.commutative, Q.extended_nonnegative,
220 Q.extended_nonzero, Q.extended_positive, Q.extended_real,
221 Q.infinite, Q.positive_infinite]), set([Q.algebraic,
222 Q.complex, Q.composite, Q.even, Q.extended_negative,
223 Q.extended_nonpositive, Q.finite, Q.imaginary, Q.integer,
224 Q.irrational, Q.negative, Q.negative_infinite, Q.nonnegative,
225 Q.nonpositive, Q.nonzero, Q.odd, Q.positive, Q.prime,
226 Q.rational, Q.real, Q.transcendental, Q.zero])),
227 Q.prime: (set([Q.algebraic, Q.commutative, Q.complex,
228 Q.extended_nonnegative, Q.extended_nonzero,
229 Q.extended_positive, Q.extended_real, Q.finite, Q.hermitian,
230 Q.integer, Q.nonnegative, Q.nonzero, Q.positive, Q.prime,
231 Q.rational, Q.real]), set([Q.composite, Q.extended_negative,
232 Q.extended_nonpositive, Q.imaginary, Q.infinite, Q.irrational,
233 Q.negative, Q.negative_infinite, Q.nonpositive,
234 Q.positive_infinite, Q.transcendental, Q.zero])),
235 Q.rational: (set([Q.algebraic, Q.commutative, Q.complex,
236 Q.extended_real, Q.finite, Q.hermitian, Q.rational, Q.real]),
237 set([Q.imaginary, Q.infinite, Q.irrational,
238 Q.negative_infinite, Q.positive_infinite, Q.transcendental])),
239 Q.real: (set([Q.commutative, Q.complex, Q.extended_real, Q.finite,
240 Q.hermitian, Q.real]), set([Q.imaginary, Q.infinite,
241 Q.negative_infinite, Q.positive_infinite])),
242 Q.real_elements: (set([Q.complex_elements, Q.real_elements]), set([])),
243 Q.singular: (set([Q.singular]), set([Q.invertible, Q.orthogonal,
244 Q.positive_definite, Q.unitary])),
245 Q.square: (set([Q.square]), set([])),
246 Q.symmetric: (set([Q.square, Q.symmetric]), set([])),
247 Q.transcendental: (set([Q.commutative, Q.complex, Q.finite,
248 Q.transcendental]), set([Q.algebraic, Q.composite, Q.even,
249 Q.infinite, Q.integer, Q.negative_infinite, Q.odd,
250 Q.positive_infinite, Q.prime, Q.rational, Q.zero])),
251 Q.triangular: (set([Q.triangular]), set([])),
252 Q.unit_triangular: (set([Q.triangular, Q.unit_triangular]), set([])),
253 Q.unitary: (set([Q.fullrank, Q.invertible, Q.normal, Q.square,
254 Q.unitary]), set([Q.singular])),
255 Q.upper_triangular: (set([Q.triangular, Q.upper_triangular]), set([])),
256 Q.zero: (set([Q.algebraic, Q.commutative, Q.complex, Q.even,
257 Q.extended_nonnegative, Q.extended_nonpositive,
258 Q.extended_real, Q.finite, Q.hermitian, Q.integer,
259 Q.nonnegative, Q.nonpositive, Q.rational, Q.real, Q.zero]),
260 set([Q.composite, Q.extended_negative, Q.extended_nonzero,
261 Q.extended_positive, Q.imaginary, Q.infinite, Q.irrational,
262 Q.negative, Q.negative_infinite, Q.nonzero, Q.odd, Q.positive,
263 Q.positive_infinite, Q.prime, Q.transcendental])),
264 }