@cortex-js/compute-engine 0.33.0 → 0.35.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 +16198 -9444
- package/dist/compute-engine.min.esm.js +457 -52
- package/dist/compute-engine.min.umd.js +457 -52
- package/dist/compute-engine.umd.js +16197 -9443
- package/dist/math-json.esm.js +2 -2
- package/dist/math-json.min.esm.js +2 -2
- 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 +1 -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 +5 -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 +2 -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 +1 -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 -1
- 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 +31 -0
- package/dist/types/compute-engine/compilation/glsl-target.d.ts +63 -0
- package/dist/types/compute-engine/compilation/interval-glsl-target.d.ts +51 -0
- package/dist/types/compute-engine/compilation/interval-javascript-target.d.ts +93 -0
- package/dist/types/compute-engine/compilation/javascript-target.d.ts +68 -0
- package/dist/types/compute-engine/compilation/types.d.ts +140 -0
- 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 +340 -8
- package/dist/types/compute-engine/index.d.ts +188 -3
- package/dist/types/compute-engine/interval/arithmetic.d.ts +56 -0
- package/dist/types/compute-engine/interval/comparison.d.ts +70 -0
- package/dist/types/compute-engine/interval/elementary.d.ts +100 -0
- package/dist/types/compute-engine/interval/index.d.ts +93 -0
- package/dist/types/compute-engine/interval/trigonometric.d.ts +105 -0
- package/dist/types/compute-engine/interval/types.d.ts +50 -0
- package/dist/types/compute-engine/interval/util.d.ts +99 -0
- 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 +8 -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 +23 -2
- 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 +159 -4
- package/dist/types/compute-engine/library/logic-utils.d.ts +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -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 +1 -1
- package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
- package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
- package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
- package/dist/types/compute-engine/tensor/tensors.d.ts +1 -1
- 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,4 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
import { ParseLatexOptions, LatexToken, Terminator, Parser, SymbolTable } from './types';
|
|
3
3
|
import type { IndexedLatexDictionary, IndexedLatexDictionaryEntry, IndexedInfixEntry, IndexedPostfixEntry, IndexedPrefixEntry, IndexedSymbolEntry, IndexedExpressionEntry, IndexedFunctionEntry } from './dictionary/definitions';
|
|
4
4
|
import { BoxedType } from '../../common/type/boxed-type';
|
|
@@ -69,6 +69,7 @@ export declare class _Parser implements Parser {
|
|
|
69
69
|
private _peekCounter;
|
|
70
70
|
constructor(tokens: LatexToken[], dictionary: IndexedLatexDictionary, options: Readonly<ParseLatexOptions>);
|
|
71
71
|
getSymbolType(id: MathJsonSymbol): BoxedType;
|
|
72
|
+
hasSubscriptEvaluate(id: MathJsonSymbol): boolean;
|
|
72
73
|
get peek(): LatexToken;
|
|
73
74
|
nextToken(): LatexToken;
|
|
74
75
|
get atEnd(): boolean;
|
|
@@ -88,6 +89,18 @@ export declare class _Parser implements Parser {
|
|
|
88
89
|
removeBoundary(): void;
|
|
89
90
|
matchBoundary(): boolean;
|
|
90
91
|
boundaryError(msg: string | [string, ...Expression[]]): Expression;
|
|
92
|
+
/**
|
|
93
|
+
* Performance optimization: determines if we can skip expensive re-parsing
|
|
94
|
+
* for matchfix boundary mismatches.
|
|
95
|
+
*
|
|
96
|
+
* We skip re-parsing only for specific non-ambiguous cases where we know
|
|
97
|
+
* the boundary mismatch is due to trying interval notation on regular parens.
|
|
98
|
+
* For example, trying (] on input () - we can safely skip without re-parsing.
|
|
99
|
+
*
|
|
100
|
+
* All other cases (including |, [, and other delimiters) require re-parsing
|
|
101
|
+
* to handle nested delimiters correctly.
|
|
102
|
+
*/
|
|
103
|
+
private canSkipMatchfixReparsing;
|
|
91
104
|
latex(start: number, end?: number): string;
|
|
92
105
|
private latexAhead;
|
|
93
106
|
/**
|
|
@@ -235,6 +248,13 @@ export declare class _Parser implements Parser {
|
|
|
235
248
|
*/
|
|
236
249
|
private parseFunction;
|
|
237
250
|
parseSymbol(until?: Readonly<Terminator>): Expression | null;
|
|
251
|
+
/**
|
|
252
|
+
* In non-strict mode, try to parse a bare function name followed by parentheses.
|
|
253
|
+
* This allows syntax like `sin(x)` instead of requiring `\sin(x)`.
|
|
254
|
+
*
|
|
255
|
+
* Returns the parsed function call or null if not a bare function.
|
|
256
|
+
*/
|
|
257
|
+
private tryParseBareFunction;
|
|
238
258
|
/**
|
|
239
259
|
* Parse a sequence superfix/subfix operator, e.g. `^{*}`
|
|
240
260
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
import type { Expression, MathJsonSymbol } from '../../math-json/types';
|
|
3
3
|
import { BoxedType, TypeString } from '../types';
|
|
4
4
|
import type { IndexedLatexDictionary, IndexedLatexDictionaryEntry } from './dictionary/definitions';
|
|
@@ -480,6 +480,16 @@ export type NumberSerializationFormat = NumberFormat & {
|
|
|
480
480
|
* @category Latex Parsing and Serialization
|
|
481
481
|
*/
|
|
482
482
|
export type ParseLatexOptions = NumberFormat & {
|
|
483
|
+
/**
|
|
484
|
+
* Controls the strictness of LaTeX parsing:
|
|
485
|
+
*
|
|
486
|
+
* - `true`: Strict LaTeX syntax required (e.g., `\sin{x}`, `x^{n+1}`)
|
|
487
|
+
* - `false`: Accept relaxed Math-ASCII/Typst-like syntax in addition to
|
|
488
|
+
* LaTeX (e.g., `sin(x)`, `x^(n+1)`)
|
|
489
|
+
*
|
|
490
|
+
* **Default**: `true`
|
|
491
|
+
*/
|
|
492
|
+
strict: boolean;
|
|
483
493
|
/**
|
|
484
494
|
* If true, ignore space characters in math mode.
|
|
485
495
|
*
|
|
@@ -513,6 +523,13 @@ export type ParseLatexOptions = NumberFormat & {
|
|
|
513
523
|
*
|
|
514
524
|
*/
|
|
515
525
|
getSymbolType: (symbol: MathJsonSymbol) => BoxedType;
|
|
526
|
+
/**
|
|
527
|
+
* This handler is invoked when the parser needs to determine if a symbol
|
|
528
|
+
* has a custom subscript evaluation handler. If true, subscripts on this
|
|
529
|
+
* symbol will be kept as `Subscript` expressions rather than being absorbed
|
|
530
|
+
* into a compound symbol name.
|
|
531
|
+
*/
|
|
532
|
+
hasSubscriptEvaluate?: (symbol: MathJsonSymbol) => boolean;
|
|
516
533
|
/** This handler is invoked when the parser encounters an unexpected token.
|
|
517
534
|
*
|
|
518
535
|
* The `lhs` argument is the left-hand side of the token, if any.
|
|
@@ -587,8 +604,12 @@ export type ParseLatexOptions = NumberFormat & {
|
|
|
587
604
|
* @category Latex Parsing and Serialization
|
|
588
605
|
*/
|
|
589
606
|
export interface Parser {
|
|
590
|
-
readonly options:
|
|
607
|
+
readonly options: Readonly<ParseLatexOptions>;
|
|
591
608
|
getSymbolType(id: MathJsonSymbol): BoxedType;
|
|
609
|
+
/**
|
|
610
|
+
* Check if a symbol has a custom subscript evaluation handler.
|
|
611
|
+
*/
|
|
612
|
+
hasSubscriptEvaluate(id: MathJsonSymbol): boolean;
|
|
592
613
|
pushSymbolTable(): void;
|
|
593
614
|
popSymbolTable(): void;
|
|
594
615
|
addSymbol(id: MathJsonSymbol, type: BoxedType | TypeString): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
export type CanonicalArithmeticOperators = 'Add' | 'Negate' | 'Multiply' | 'Divide' | 'Power' | 'Sqrt' | 'Root' | 'Ln';
|
|
3
3
|
export declare const ARITHMETIC_LIBRARY: SymbolDefinitions[];
|
|
4
4
|
export declare function isPrime(expr: BoxedExpression): boolean | undefined;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
export declare const CALCULUS_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
export declare const COMBINATORICS_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
export declare const COMPLEX_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
export declare const CONTROL_STRUCTURES_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
export declare const CORE_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
export declare const LINEAR_ALGEBRA_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
/**
|
|
3
3
|
* Quantifier domain helpers and boolean analysis functions.
|
|
4
4
|
* Extracted from logic.ts for better code organization.
|
|
@@ -79,16 +79,171 @@ export declare function evaluateExistsCartesian(domains: {
|
|
|
79
79
|
}[], body: BoxedExpression, ce: ComputeEngine): BoxedExpression | undefined;
|
|
80
80
|
/**
|
|
81
81
|
* Check if a boolean expression is satisfiable.
|
|
82
|
-
*
|
|
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
|
|
83
117
|
*/
|
|
84
118
|
export declare function isSatisfiable(expr: BoxedExpression, ce: ComputeEngine): BoxedExpression;
|
|
85
119
|
/**
|
|
86
120
|
* Check if a boolean expression is a tautology.
|
|
87
|
-
*
|
|
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
|
|
88
154
|
*/
|
|
89
155
|
export declare function isTautology(expr: BoxedExpression, ce: ComputeEngine): BoxedExpression;
|
|
90
156
|
/**
|
|
91
157
|
* Generate a truth table for a boolean expression.
|
|
92
|
-
*
|
|
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
|
|
93
188
|
*/
|
|
94
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,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
export declare const NUMBER_THEORY_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
export declare const POLYNOMIALS_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
export declare function randomExpression(level?: number): Expression;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
export declare const RELOP_LIBRARY: SymbolDefinitions;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
export declare const SETS_LIBRARY: SymbolDefinitions;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
export declare const STATISTICS_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
export declare const TRIGONOMETRY_LIBRARY: SymbolDefinitions[];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
export declare function bigint(a: Decimal | number | bigint | string): bigint | null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.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,2 +1,2 @@
|
|
|
1
|
-
/* 0.
|
|
1
|
+
/* 0.35.0 */
|
|
2
2
|
export declare function numberToString(num: number | bigint, fractionalDigits?: number | string): string;
|