@cortex-js/compute-engine 0.32.1 → 0.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/compute-engine.esm.js +39456 -28560
- package/dist/compute-engine.min.esm.js +80 -59
- package/dist/compute-engine.min.umd.js +80 -59
- package/dist/compute-engine.umd.js +39464 -28585
- package/dist/math-json.esm.js +2 -2
- package/dist/math-json.min.esm.js +2 -130
- package/dist/math-json.min.umd.js +2 -2
- package/dist/math-json.umd.js +2 -2
- package/dist/types/common/ansi-codes.d.ts +1 -1
- package/dist/types/common/configuration-change.d.ts +1 -1
- package/dist/types/common/fuzzy-string-match.d.ts +1 -1
- package/dist/types/common/grapheme-splitter.d.ts +1 -1
- package/dist/types/common/interruptible.d.ts +1 -1
- package/dist/types/common/one-of.d.ts +2 -1
- package/dist/types/common/signals.d.ts +1 -1
- package/dist/types/common/type/ast-nodes.d.ts +1 -1
- package/dist/types/common/type/boxed-type.d.ts +1 -1
- package/dist/types/common/type/lexer.d.ts +1 -1
- package/dist/types/common/type/parse.d.ts +1 -1
- package/dist/types/common/type/parser.d.ts +1 -1
- package/dist/types/common/type/primitive.d.ts +1 -1
- package/dist/types/common/type/reduce.d.ts +12 -0
- package/dist/types/common/type/serialize.d.ts +1 -1
- package/dist/types/common/type/subtype.d.ts +1 -1
- package/dist/types/common/type/type-builder.d.ts +1 -1
- package/dist/types/common/type/types.d.ts +1 -1
- package/dist/types/common/type/utils.d.ts +1 -1
- package/dist/types/common/utils.d.ts +1 -1
- package/dist/types/compute-engine/assume.d.ts +37 -1
- package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +6 -3
- package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +6 -2
- package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +5 -1
- package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +2 -1
- package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +5 -1
- package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/factor.d.ts +47 -1
- package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/product.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +60 -0
- package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/terms.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -2
- package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
- package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
- package/dist/types/compute-engine/collection-utils.d.ts +1 -1
- package/dist/types/compute-engine/compilation/base-compiler.d.ts +1 -1
- package/dist/types/compute-engine/compilation/glsl-target.d.ts +63 -0
- package/dist/types/compute-engine/compilation/javascript-target.d.ts +1 -1
- package/dist/types/compute-engine/compilation/types.d.ts +58 -1
- package/dist/types/compute-engine/cost-function.d.ts +1 -1
- package/dist/types/compute-engine/function-utils.d.ts +1 -1
- package/dist/types/compute-engine/global-types.d.ts +381 -10
- package/dist/types/compute-engine/index.d.ts +186 -3
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +10 -1
- package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/parse.d.ts +21 -1
- package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
- package/dist/types/compute-engine/latex-syntax/types.d.ts +33 -3
- package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
- package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
- package/dist/types/compute-engine/library/calculus.d.ts +1 -1
- package/dist/types/compute-engine/library/collections.d.ts +1 -1
- package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
- package/dist/types/compute-engine/library/complex.d.ts +1 -1
- package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
- package/dist/types/compute-engine/library/core.d.ts +1 -1
- package/dist/types/compute-engine/library/invisible-operator.d.ts +1 -1
- package/dist/types/compute-engine/library/library.d.ts +1 -1
- package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
- package/dist/types/compute-engine/library/logic-analysis.d.ts +189 -4
- package/dist/types/compute-engine/library/logic-utils.d.ts +1 -5
- package/dist/types/compute-engine/library/logic.d.ts +1 -1
- package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
- package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
- package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
- package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
- package/dist/types/compute-engine/library/sets.d.ts +1 -1
- package/dist/types/compute-engine/library/statistics.d.ts +1 -1
- package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
- package/dist/types/compute-engine/library/utils.d.ts +60 -2
- package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
- package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
- package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
- package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
- package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
- package/dist/types/compute-engine/numerics/numeric.d.ts +2 -2
- package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
- package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
- package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
- package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
- package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
- package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
- package/dist/types/compute-engine/numerics/types.d.ts +2 -1
- package/dist/types/compute-engine/oeis.d.ts +85 -0
- package/dist/types/compute-engine/sequence.d.ts +120 -0
- package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/derivative.d.ts +17 -2
- package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu-cost.d.ts +33 -0
- package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +130 -0
- package/dist/types/compute-engine/symbolic/fu.d.ts +48 -0
- package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +12 -0
- package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +15 -0
- package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +2 -0
- package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +14 -0
- package/dist/types/compute-engine/symbolic/simplify-log.d.ts +15 -0
- package/dist/types/compute-engine/symbolic/simplify-power.d.ts +15 -0
- package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -11
- package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +2 -0
- package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
- package/dist/types/compute-engine/tensor/tensors.d.ts +3 -3
- package/dist/types/compute-engine/types.d.ts +1 -1
- package/dist/types/compute-engine.d.ts +5 -1
- package/dist/types/math-json/symbols.d.ts +1 -1
- package/dist/types/math-json/types.d.ts +1 -1
- package/dist/types/math-json/utils.d.ts +1 -1
- package/dist/types/math-json.d.ts +2 -2
- package/package.json +2 -2
|
@@ -1,8 +1,37 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.34.0 */
|
|
2
2
|
/**
|
|
3
3
|
* Quantifier domain helpers and boolean analysis functions.
|
|
4
4
|
* Extracted from logic.ts for better code organization.
|
|
5
5
|
*/
|
|
6
|
+
/**
|
|
7
|
+
* Result of extracting a finite domain from an Element expression.
|
|
8
|
+
* - `status: 'success'` - Domain was successfully extracted
|
|
9
|
+
* - `status: 'non-enumerable'` - Domain exists but cannot be enumerated (e.g., infinite set, unknown symbol)
|
|
10
|
+
* - `status: 'error'` - Invalid Element expression (missing variable, malformed domain)
|
|
11
|
+
*/
|
|
12
|
+
export type ExtractDomainResult = {
|
|
13
|
+
status: 'success';
|
|
14
|
+
variable: string;
|
|
15
|
+
values: BoxedExpression[];
|
|
16
|
+
} | {
|
|
17
|
+
status: 'non-enumerable';
|
|
18
|
+
variable: string;
|
|
19
|
+
domain: BoxedExpression;
|
|
20
|
+
reason: string;
|
|
21
|
+
} | {
|
|
22
|
+
status: 'error';
|
|
23
|
+
reason: string;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Extract the finite domain from a quantifier's condition.
|
|
27
|
+
* Supports:
|
|
28
|
+
* - ["Element", "x", ["Set", 1, 2, 3]] → [1, 2, 3]
|
|
29
|
+
* - ["Element", "x", ["Range", 1, 5]] → [1, 2, 3, 4, 5]
|
|
30
|
+
* - ["Element", "x", ["Interval", 1, 5]] → [1, 2, 3, 4, 5] (integers only)
|
|
31
|
+
* - ["Element", "x", ["Set", 1, 2, 3], condition] → filtered values (EL-3)
|
|
32
|
+
* Returns detailed result indicating success, non-enumerable domain, or error.
|
|
33
|
+
*/
|
|
34
|
+
export declare function extractFiniteDomainWithReason(condition: BoxedExpression, ce: ComputeEngine): ExtractDomainResult;
|
|
6
35
|
/**
|
|
7
36
|
* Extract the finite domain from a quantifier's condition.
|
|
8
37
|
* Supports:
|
|
@@ -10,6 +39,7 @@
|
|
|
10
39
|
* - ["Element", "x", ["Range", 1, 5]] → [1, 2, 3, 4, 5]
|
|
11
40
|
* - ["Element", "x", ["Interval", 1, 5]] → [1, 2, 3, 4, 5] (integers only)
|
|
12
41
|
* Returns null if the domain is not finite or not recognized.
|
|
42
|
+
* @deprecated Use extractFiniteDomainWithReason for better error handling
|
|
13
43
|
*/
|
|
14
44
|
export declare function extractFiniteDomain(condition: BoxedExpression, ce: ComputeEngine): {
|
|
15
45
|
variable: string;
|
|
@@ -49,16 +79,171 @@ export declare function evaluateExistsCartesian(domains: {
|
|
|
49
79
|
}[], body: BoxedExpression, ce: ComputeEngine): BoxedExpression | undefined;
|
|
50
80
|
/**
|
|
51
81
|
* Check if a boolean expression is satisfiable.
|
|
52
|
-
*
|
|
82
|
+
*
|
|
83
|
+
* Returns `True` if there exists an assignment of truth values to variables
|
|
84
|
+
* that makes the expression true, `False` if no such assignment exists.
|
|
85
|
+
*
|
|
86
|
+
* ## Algorithm
|
|
87
|
+
*
|
|
88
|
+
* Uses brute-force enumeration of all possible truth assignments.
|
|
89
|
+
* This has **O(2^n) time complexity** where n is the number of variables.
|
|
90
|
+
*
|
|
91
|
+
* ## Performance Characteristics
|
|
92
|
+
*
|
|
93
|
+
* | Variables | Assignments | Approximate Time |
|
|
94
|
+
* |-----------|-------------|------------------|
|
|
95
|
+
* | 10 | 1,024 | < 1ms |
|
|
96
|
+
* | 15 | 32,768 | ~10ms |
|
|
97
|
+
* | 20 | 1,048,576 | ~100ms-1s |
|
|
98
|
+
* | > 20 | (rejected) | N/A |
|
|
99
|
+
*
|
|
100
|
+
* ## Limits
|
|
101
|
+
*
|
|
102
|
+
* - **Maximum 20 variables**: Expressions with more than 20 distinct boolean
|
|
103
|
+
* variables will return the unevaluated `IsSatisfiable` expression rather
|
|
104
|
+
* than attempting evaluation (to prevent blocking the thread).
|
|
105
|
+
*
|
|
106
|
+
* ## Future Improvements
|
|
107
|
+
*
|
|
108
|
+
* For better performance on larger expressions, a DPLL-based SAT solver
|
|
109
|
+
* could be implemented. The current brute-force approach is suitable for
|
|
110
|
+
* small expressions typically encountered in educational and verification
|
|
111
|
+
* contexts.
|
|
112
|
+
*
|
|
113
|
+
* @param expr - A boolean expression to check for satisfiability
|
|
114
|
+
* @param ce - The ComputeEngine instance
|
|
115
|
+
* @returns `True` if satisfiable, `False` if unsatisfiable, or the
|
|
116
|
+
* unevaluated expression if the variable limit is exceeded
|
|
53
117
|
*/
|
|
54
118
|
export declare function isSatisfiable(expr: BoxedExpression, ce: ComputeEngine): BoxedExpression;
|
|
55
119
|
/**
|
|
56
120
|
* Check if a boolean expression is a tautology.
|
|
57
|
-
*
|
|
121
|
+
*
|
|
122
|
+
* Returns `True` if the expression evaluates to true for all possible
|
|
123
|
+
* assignments of truth values to variables, `False` otherwise.
|
|
124
|
+
*
|
|
125
|
+
* ## Algorithm
|
|
126
|
+
*
|
|
127
|
+
* Uses brute-force enumeration of all possible truth assignments.
|
|
128
|
+
* This has **O(2^n) time complexity** where n is the number of variables.
|
|
129
|
+
*
|
|
130
|
+
* ## Performance Characteristics
|
|
131
|
+
*
|
|
132
|
+
* | Variables | Assignments | Approximate Time |
|
|
133
|
+
* |-----------|-------------|------------------|
|
|
134
|
+
* | 10 | 1,024 | < 1ms |
|
|
135
|
+
* | 15 | 32,768 | ~10ms |
|
|
136
|
+
* | 20 | 1,048,576 | ~100ms-1s |
|
|
137
|
+
* | > 20 | (rejected) | N/A |
|
|
138
|
+
*
|
|
139
|
+
* ## Limits
|
|
140
|
+
*
|
|
141
|
+
* - **Maximum 20 variables**: Expressions with more than 20 distinct boolean
|
|
142
|
+
* variables will return the unevaluated `IsTautology` expression rather
|
|
143
|
+
* than attempting evaluation (to prevent blocking the thread).
|
|
144
|
+
*
|
|
145
|
+
* ## Future Improvements
|
|
146
|
+
*
|
|
147
|
+
* For better performance on larger expressions, a DPLL-based approach
|
|
148
|
+
* (checking unsatisfiability of the negation) could be implemented.
|
|
149
|
+
*
|
|
150
|
+
* @param expr - A boolean expression to check
|
|
151
|
+
* @param ce - The ComputeEngine instance
|
|
152
|
+
* @returns `True` if a tautology, `False` if not, or the unevaluated
|
|
153
|
+
* expression if the variable limit is exceeded
|
|
58
154
|
*/
|
|
59
155
|
export declare function isTautology(expr: BoxedExpression, ce: ComputeEngine): BoxedExpression;
|
|
60
156
|
/**
|
|
61
157
|
* Generate a truth table for a boolean expression.
|
|
62
|
-
*
|
|
158
|
+
*
|
|
159
|
+
* Returns a `List` of `List`s where the first row contains column headers
|
|
160
|
+
* (variable names followed by "Result") and subsequent rows contain the
|
|
161
|
+
* truth values for each assignment.
|
|
162
|
+
*
|
|
163
|
+
* ## Algorithm
|
|
164
|
+
*
|
|
165
|
+
* Generates all 2^n possible truth assignments and evaluates the expression
|
|
166
|
+
* for each. This has **O(2^n) time and space complexity**.
|
|
167
|
+
*
|
|
168
|
+
* ## Performance Characteristics
|
|
169
|
+
*
|
|
170
|
+
* | Variables | Rows Generated | Output Size |
|
|
171
|
+
* |-----------|----------------|-------------|
|
|
172
|
+
* | 5 | 32 | ~1 KB |
|
|
173
|
+
* | 8 | 256 | ~8 KB |
|
|
174
|
+
* | 10 | 1,024 | ~32 KB |
|
|
175
|
+
* | > 10 | (rejected) | N/A |
|
|
176
|
+
*
|
|
177
|
+
* ## Limits
|
|
178
|
+
*
|
|
179
|
+
* - **Maximum 10 variables**: Expressions with more than 10 distinct boolean
|
|
180
|
+
* variables will return the unevaluated `TruthTable` expression. This
|
|
181
|
+
* stricter limit (compared to `IsSatisfiable`/`IsTautology`) accounts for
|
|
182
|
+
* the memory required to store all rows.
|
|
183
|
+
*
|
|
184
|
+
* @param expr - A boolean expression to generate a truth table for
|
|
185
|
+
* @param ce - The ComputeEngine instance
|
|
186
|
+
* @returns A `List` of `List`s representing the truth table, or the
|
|
187
|
+
* unevaluated expression if the variable limit is exceeded
|
|
63
188
|
*/
|
|
64
189
|
export declare function generateTruthTable(expr: BoxedExpression, ce: ComputeEngine): BoxedExpression;
|
|
190
|
+
/**
|
|
191
|
+
* Find all prime implicants using the Quine-McCluskey algorithm.
|
|
192
|
+
*
|
|
193
|
+
* ## Algorithm
|
|
194
|
+
*
|
|
195
|
+
* 1. Generate minterms from the truth table (assignments where expression is true)
|
|
196
|
+
* 2. Group minterms by number of 1s
|
|
197
|
+
* 3. Combine terms differing in exactly one position, marking combined terms
|
|
198
|
+
* 4. Repeat until no more combinations possible
|
|
199
|
+
* 5. Return terms that were never combined (prime implicants)
|
|
200
|
+
*
|
|
201
|
+
* ## Performance Characteristics
|
|
202
|
+
*
|
|
203
|
+
* | Variables | Max Minterms | Approximate Time |
|
|
204
|
+
* |-----------|--------------|------------------|
|
|
205
|
+
* | 5 | 32 | < 1ms |
|
|
206
|
+
* | 8 | 256 | ~10ms |
|
|
207
|
+
* | 10 | 1,024 | ~100ms |
|
|
208
|
+
* | > 12 | (rejected) | N/A |
|
|
209
|
+
*
|
|
210
|
+
* ## Limits
|
|
211
|
+
*
|
|
212
|
+
* - **Maximum 12 variables**: Larger expressions return unevaluated.
|
|
213
|
+
*
|
|
214
|
+
* @param expr - A boolean expression
|
|
215
|
+
* @param ce - The ComputeEngine instance
|
|
216
|
+
* @returns A Set of expressions representing prime implicants
|
|
217
|
+
*/
|
|
218
|
+
export declare function findPrimeImplicants(expr: BoxedExpression, ce: ComputeEngine): BoxedExpression[] | null;
|
|
219
|
+
/**
|
|
220
|
+
* Find all prime implicates using the Quine-McCluskey algorithm.
|
|
221
|
+
*
|
|
222
|
+
* Prime implicates are the dual of prime implicants - they are the minimal
|
|
223
|
+
* clauses in CNF. We find them by finding prime implicants of the negation
|
|
224
|
+
* and then negating the result.
|
|
225
|
+
*
|
|
226
|
+
* @param expr - A boolean expression
|
|
227
|
+
* @param ce - The ComputeEngine instance
|
|
228
|
+
* @returns A Set of expressions representing prime implicates (clauses)
|
|
229
|
+
*/
|
|
230
|
+
export declare function findPrimeImplicates(expr: BoxedExpression, ce: ComputeEngine): BoxedExpression[] | null;
|
|
231
|
+
/**
|
|
232
|
+
* Find a minimal DNF (sum of products) using prime implicants.
|
|
233
|
+
*
|
|
234
|
+
* This uses the Quine-McCluskey algorithm followed by a greedy covering
|
|
235
|
+
* algorithm to select a minimal set of prime implicants.
|
|
236
|
+
*
|
|
237
|
+
* @param expr - A boolean expression
|
|
238
|
+
* @param ce - The ComputeEngine instance
|
|
239
|
+
* @returns The minimal DNF, or null if too many variables
|
|
240
|
+
*/
|
|
241
|
+
export declare function minimalDNF(expr: BoxedExpression, ce: ComputeEngine): BoxedExpression | null;
|
|
242
|
+
/**
|
|
243
|
+
* Find a minimal CNF (product of sums) using prime implicates.
|
|
244
|
+
*
|
|
245
|
+
* @param expr - A boolean expression
|
|
246
|
+
* @param ce - The ComputeEngine instance
|
|
247
|
+
* @returns The minimal CNF, or null if too many variables
|
|
248
|
+
*/
|
|
249
|
+
export declare function minimalCNF(expr: BoxedExpression, ce: ComputeEngine): BoxedExpression | null;
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
2
|
-
/**
|
|
3
|
-
* Basic evaluation functions for logical operators.
|
|
4
|
-
* Extracted from logic.ts for better code organization.
|
|
5
|
-
*/
|
|
1
|
+
/* 0.34.0 */
|
|
6
2
|
export declare function evaluateAnd(args: ReadonlyArray<BoxedExpression>, { engine: ce }: {
|
|
7
3
|
engine: ComputeEngine;
|
|
8
4
|
}): BoxedExpression | undefined;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.34.0 */
|
|
2
2
|
export declare const NUMBER_THEORY_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.34.0 */
|
|
2
2
|
export declare const POLYNOMIALS_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.34.0 */
|
|
2
2
|
export declare function randomExpression(level?: number): Expression;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.34.0 */
|
|
2
2
|
export declare const RELOP_LIBRARY: SymbolDefinitions;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.34.0 */
|
|
2
2
|
export declare const SETS_LIBRARY: SymbolDefinitions;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.34.0 */
|
|
2
2
|
export declare const STATISTICS_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.34.0 */
|
|
2
2
|
export declare const TRIGONOMETRY_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,4 +1,20 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.34.0 */
|
|
2
|
+
/**
|
|
3
|
+
* EL-4: Convert known infinite integer sets to their equivalent Limits bounds.
|
|
4
|
+
* Returns undefined if the set cannot be converted to a Limits form.
|
|
5
|
+
*
|
|
6
|
+
* Mappings:
|
|
7
|
+
* - NonNegativeIntegers (ℕ₀) → [0, ∞)
|
|
8
|
+
* - PositiveIntegers (ℤ⁺) → [1, ∞)
|
|
9
|
+
* - NegativeIntegers (ℤ⁻) → Not supported (would need negative direction)
|
|
10
|
+
* - Integers (ℤ) → Not supported (bidirectional)
|
|
11
|
+
* - Other sets (Reals, Complexes, etc.) → Not supported (non-integer)
|
|
12
|
+
*/
|
|
13
|
+
export declare function convertInfiniteSetToLimits(domainSymbol: string): {
|
|
14
|
+
lower: number;
|
|
15
|
+
upper: number;
|
|
16
|
+
isFinite: false;
|
|
17
|
+
} | undefined;
|
|
2
18
|
export type IndexingSet = {
|
|
3
19
|
index: string | undefined;
|
|
4
20
|
lower: number;
|
|
@@ -58,20 +74,62 @@ export declare function canonicalLimits(ops: ReadonlyArray<BoxedExpression>, { e
|
|
|
58
74
|
* - `lower` (a number), `Nothing` if none is present
|
|
59
75
|
* - `upper` (a number), `Nothing` if none is present
|
|
60
76
|
*
|
|
77
|
+
* Or, for Element expressions, preserve them in canonical form.
|
|
78
|
+
*
|
|
61
79
|
* Assume we are in the context of a big operator
|
|
62
80
|
* (i.e. `pushScope()` has been called)
|
|
63
81
|
*/
|
|
64
82
|
export declare function canonicalIndexingSet(expr: BoxedExpression): BoxedExpression | undefined;
|
|
65
83
|
export declare function canonicalBigop(bigOp: string, body: BoxedExpression, indexingSets: BoxedExpression[], scope: Scope | undefined): BoxedExpression | null;
|
|
84
|
+
/**
|
|
85
|
+
* A special symbol used to signal that a BigOp could not be evaluated
|
|
86
|
+
* because the domain is non-enumerable (e.g., infinite set, unknown symbol).
|
|
87
|
+
* When this is returned, the Sum/Product should keep the expression symbolic
|
|
88
|
+
* rather than returning NaN.
|
|
89
|
+
*/
|
|
90
|
+
export declare const NON_ENUMERABLE_DOMAIN: unique symbol;
|
|
91
|
+
/**
|
|
92
|
+
* Result type for reduceBigOp that includes reason for failure
|
|
93
|
+
*/
|
|
94
|
+
export type BigOpResult<T> = {
|
|
95
|
+
status: 'success';
|
|
96
|
+
value: T;
|
|
97
|
+
} | {
|
|
98
|
+
status: 'non-enumerable';
|
|
99
|
+
reason: string;
|
|
100
|
+
domain?: BoxedExpression;
|
|
101
|
+
} | {
|
|
102
|
+
status: 'error';
|
|
103
|
+
reason: string;
|
|
104
|
+
};
|
|
66
105
|
/**
|
|
67
106
|
* Process an expression of the form
|
|
68
107
|
* - ['Operator', body, ['Tuple', index1, lower, upper]]
|
|
69
108
|
* - ['Operator', body, ['Tuple', index1, lower, upper], ['Tuple', index2, lower, upper], ...]
|
|
109
|
+
* - ['Operator', body, ['Element', index, collection]]
|
|
70
110
|
* - ['Operator', body]
|
|
71
111
|
* - ['Operator', collection]
|
|
72
112
|
*
|
|
73
113
|
* `fn()` is the processing done on each element
|
|
74
114
|
* Apply the function `fn` to the body of a big operator, according to the
|
|
75
115
|
* indexing sets.
|
|
116
|
+
*
|
|
117
|
+
* Returns either the reduced value, or `typeof NON_ENUMERABLE_DOMAIN` if the
|
|
118
|
+
* domain cannot be enumerated (in which case the expression should remain symbolic).
|
|
76
119
|
*/
|
|
77
|
-
export declare function reduceBigOp<T>(body: BoxedExpression, indexes: ReadonlyArray<BoxedExpression>, fn: (acc: T, x: BoxedExpression) => T | null, initial: T): Generator<T | undefined>;
|
|
120
|
+
export declare function reduceBigOp<T>(body: BoxedExpression, indexes: ReadonlyArray<BoxedExpression>, fn: (acc: T, x: BoxedExpression) => T | null, initial: T): Generator<T | typeof NON_ENUMERABLE_DOMAIN | undefined>;
|
|
121
|
+
/**
|
|
122
|
+
* Result type for reduceElementIndexingSets to distinguish between
|
|
123
|
+
* successful evaluation, non-enumerable domains (keep symbolic), and errors.
|
|
124
|
+
*/
|
|
125
|
+
export type ReduceElementResult<T> = {
|
|
126
|
+
status: 'success';
|
|
127
|
+
value: T;
|
|
128
|
+
} | {
|
|
129
|
+
status: 'non-enumerable';
|
|
130
|
+
reason: string;
|
|
131
|
+
domain?: BoxedExpression;
|
|
132
|
+
} | {
|
|
133
|
+
status: 'error';
|
|
134
|
+
reason: string;
|
|
135
|
+
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.34.0 */
|
|
2
2
|
export declare function bigint(a: Decimal | number | bigint | string): bigint | null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.34.0 */
|
|
2
2
|
export declare function bigintValue(expr: Expression | null | undefined): bigint | null;
|
|
3
3
|
/** Output a shorthand if possible */
|
|
4
4
|
export declare function numberToExpression(num: number | bigint, fractionalDigits?: string | number): Expression;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.34.0 */
|
|
2
2
|
export declare const MACHINE_PRECISION_BITS = 53;
|
|
3
3
|
export declare const MACHINE_PRECISION: number;
|
|
4
4
|
export declare const DEFAULT_TOLERANCE = 1e-10;
|
|
5
5
|
export declare const SMALL_INTEGER = 1000000;
|
|
6
6
|
/** The largest number of digits of a bigint */
|
|
7
7
|
export declare const MAX_BIGINT_DIGITS = 1024;
|
|
8
|
-
export declare const MAX_ITERATION =
|
|
8
|
+
export declare const MAX_ITERATION = 10000;
|
|
9
9
|
export declare const MAX_SYMBOLIC_TERMS = 200;
|
|
10
10
|
/**
|
|
11
11
|
* Returns the smallest floating-point number greater than x.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.34.0 */
|
|
2
2
|
export declare function numberToString(num: number | bigint, fractionalDigits?: number | string): string;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/* 0.34.0 */
|
|
2
|
+
* OEIS (Online Encyclopedia of Integer Sequences) Integration
|
|
3
|
+
*
|
|
4
|
+
* This module provides functions to look up sequences in the OEIS database
|
|
5
|
+
* and import them for use in the compute engine.
|
|
6
|
+
*
|
|
7
|
+
* @see https://oeis.org
|
|
8
|
+
*/
|
|
9
|
+
import type { ComputeEngine, BoxedExpression } from './global-types';
|
|
10
|
+
/**
|
|
11
|
+
* Result from an OEIS lookup operation.
|
|
12
|
+
*/
|
|
13
|
+
export interface OEISSequenceInfo {
|
|
14
|
+
/** OEIS sequence ID (e.g., 'A000045') */
|
|
15
|
+
id: string;
|
|
16
|
+
/** Sequence name/description */
|
|
17
|
+
name: string;
|
|
18
|
+
/** First several terms of the sequence */
|
|
19
|
+
terms: number[];
|
|
20
|
+
/** Formula or recurrence (if available) */
|
|
21
|
+
formula?: string;
|
|
22
|
+
/** Comments about the sequence */
|
|
23
|
+
comments?: string[];
|
|
24
|
+
/** URL to the OEIS page */
|
|
25
|
+
url: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Options for OEIS operations.
|
|
29
|
+
*/
|
|
30
|
+
export interface OEISOptions {
|
|
31
|
+
/** Request timeout in milliseconds (default: 10000) */
|
|
32
|
+
timeout?: number;
|
|
33
|
+
/** Maximum number of results to return for lookups (default: 5) */
|
|
34
|
+
maxResults?: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Look up sequences in OEIS by their terms.
|
|
38
|
+
*
|
|
39
|
+
* @param terms - Array of sequence terms to search for
|
|
40
|
+
* @param options - Optional configuration
|
|
41
|
+
* @returns Promise resolving to array of matching sequences
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const results = await lookupOEISByTerms([0, 1, 1, 2, 3, 5, 8, 13]);
|
|
46
|
+
* // → [{ id: 'A000045', name: 'Fibonacci numbers', ... }]
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export declare function lookupOEISByTerms(terms: number[], options?: OEISOptions): Promise<OEISSequenceInfo[]>;
|
|
50
|
+
/**
|
|
51
|
+
* Look up a sequence in OEIS by its ID.
|
|
52
|
+
*
|
|
53
|
+
* @param id - OEIS sequence ID (e.g., 'A000045' or '45')
|
|
54
|
+
* @param options - Optional configuration
|
|
55
|
+
* @returns Promise resolving to sequence info, or undefined if not found
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const fib = await lookupOEISById('A000045');
|
|
60
|
+
* // → { id: 'A000045', name: 'Fibonacci numbers', terms: [0, 1, 1, 2, ...], ... }
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare function lookupOEISById(id: string, options?: OEISOptions): Promise<OEISSequenceInfo | undefined>;
|
|
64
|
+
/**
|
|
65
|
+
* Look up a sequence in OEIS by its terms.
|
|
66
|
+
*
|
|
67
|
+
* @param ce - ComputeEngine instance
|
|
68
|
+
* @param terms - Array of sequence terms (numbers or BoxedExpressions)
|
|
69
|
+
* @param options - Optional configuration
|
|
70
|
+
* @returns Promise resolving to array of matching sequences
|
|
71
|
+
*/
|
|
72
|
+
export declare function lookupSequence(ce: ComputeEngine, terms: (number | BoxedExpression)[], options?: OEISOptions): Promise<OEISSequenceInfo[]>;
|
|
73
|
+
/**
|
|
74
|
+
* Check if a defined sequence matches an OEIS sequence.
|
|
75
|
+
*
|
|
76
|
+
* @param ce - ComputeEngine instance
|
|
77
|
+
* @param name - Name of the defined sequence
|
|
78
|
+
* @param count - Number of terms to check (default: 10)
|
|
79
|
+
* @param options - Optional configuration
|
|
80
|
+
* @returns Promise with match results
|
|
81
|
+
*/
|
|
82
|
+
export declare function checkSequence(ce: ComputeEngine, name: string, count?: number, options?: OEISOptions): Promise<{
|
|
83
|
+
matches: OEISSequenceInfo[];
|
|
84
|
+
terms: number[];
|
|
85
|
+
}>;
|