@cortex-js/compute-engine 0.33.0 → 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.
Files changed (168) hide show
  1. package/dist/compute-engine.esm.js +15940 -10828
  2. package/dist/compute-engine.min.esm.js +76 -52
  3. package/dist/compute-engine.min.umd.js +76 -52
  4. package/dist/compute-engine.umd.js +15940 -10828
  5. package/dist/math-json.esm.js +2 -2
  6. package/dist/math-json.min.esm.js +2 -2
  7. package/dist/math-json.min.umd.js +2 -2
  8. package/dist/math-json.umd.js +2 -2
  9. package/dist/types/common/ansi-codes.d.ts +1 -1
  10. package/dist/types/common/configuration-change.d.ts +1 -1
  11. package/dist/types/common/fuzzy-string-match.d.ts +1 -1
  12. package/dist/types/common/grapheme-splitter.d.ts +1 -1
  13. package/dist/types/common/interruptible.d.ts +1 -1
  14. package/dist/types/common/one-of.d.ts +1 -1
  15. package/dist/types/common/signals.d.ts +1 -1
  16. package/dist/types/common/type/ast-nodes.d.ts +1 -1
  17. package/dist/types/common/type/boxed-type.d.ts +1 -1
  18. package/dist/types/common/type/lexer.d.ts +1 -1
  19. package/dist/types/common/type/parse.d.ts +1 -1
  20. package/dist/types/common/type/parser.d.ts +1 -1
  21. package/dist/types/common/type/primitive.d.ts +1 -1
  22. package/dist/types/common/type/reduce.d.ts +12 -0
  23. package/dist/types/common/type/serialize.d.ts +1 -1
  24. package/dist/types/common/type/subtype.d.ts +1 -1
  25. package/dist/types/common/type/type-builder.d.ts +1 -1
  26. package/dist/types/common/type/types.d.ts +1 -1
  27. package/dist/types/common/type/utils.d.ts +1 -1
  28. package/dist/types/common/utils.d.ts +1 -1
  29. package/dist/types/compute-engine/assume.d.ts +37 -1
  30. package/dist/types/compute-engine/boxed-expression/abstract-boxed-expression.d.ts +5 -3
  31. package/dist/types/compute-engine/boxed-expression/apply.d.ts +1 -1
  32. package/dist/types/compute-engine/boxed-expression/arithmetic-add.d.ts +1 -1
  33. package/dist/types/compute-engine/boxed-expression/arithmetic-mul-div.d.ts +1 -1
  34. package/dist/types/compute-engine/boxed-expression/arithmetic-power.d.ts +1 -1
  35. package/dist/types/compute-engine/boxed-expression/ascii-math.d.ts +1 -1
  36. package/dist/types/compute-engine/boxed-expression/box.d.ts +1 -1
  37. package/dist/types/compute-engine/boxed-expression/boxed-dictionary.d.ts +1 -1
  38. package/dist/types/compute-engine/boxed-expression/boxed-function.d.ts +2 -2
  39. package/dist/types/compute-engine/boxed-expression/boxed-number.d.ts +1 -1
  40. package/dist/types/compute-engine/boxed-expression/boxed-operator-definition.d.ts +1 -1
  41. package/dist/types/compute-engine/boxed-expression/boxed-patterns.d.ts +1 -1
  42. package/dist/types/compute-engine/boxed-expression/boxed-string.d.ts +1 -1
  43. package/dist/types/compute-engine/boxed-expression/boxed-symbol.d.ts +1 -1
  44. package/dist/types/compute-engine/boxed-expression/boxed-tensor.d.ts +2 -1
  45. package/dist/types/compute-engine/boxed-expression/boxed-value-definition.d.ts +5 -1
  46. package/dist/types/compute-engine/boxed-expression/cache.d.ts +1 -1
  47. package/dist/types/compute-engine/boxed-expression/canonical-utils.d.ts +1 -1
  48. package/dist/types/compute-engine/boxed-expression/canonical.d.ts +1 -1
  49. package/dist/types/compute-engine/boxed-expression/compare.d.ts +1 -1
  50. package/dist/types/compute-engine/boxed-expression/expand.d.ts +1 -1
  51. package/dist/types/compute-engine/boxed-expression/expression-map.d.ts +1 -1
  52. package/dist/types/compute-engine/boxed-expression/factor.d.ts +47 -1
  53. package/dist/types/compute-engine/boxed-expression/flatten.d.ts +1 -1
  54. package/dist/types/compute-engine/boxed-expression/hold.d.ts +1 -1
  55. package/dist/types/compute-engine/boxed-expression/match.d.ts +1 -1
  56. package/dist/types/compute-engine/boxed-expression/negate.d.ts +1 -1
  57. package/dist/types/compute-engine/boxed-expression/numerics.d.ts +1 -1
  58. package/dist/types/compute-engine/boxed-expression/order.d.ts +1 -1
  59. package/dist/types/compute-engine/boxed-expression/polynomials.d.ts +1 -1
  60. package/dist/types/compute-engine/boxed-expression/product.d.ts +1 -1
  61. package/dist/types/compute-engine/boxed-expression/rules.d.ts +1 -1
  62. package/dist/types/compute-engine/boxed-expression/serialize.d.ts +1 -1
  63. package/dist/types/compute-engine/boxed-expression/sgn.d.ts +1 -1
  64. package/dist/types/compute-engine/boxed-expression/simplify.d.ts +1 -1
  65. package/dist/types/compute-engine/boxed-expression/solve-linear-system.d.ts +60 -0
  66. package/dist/types/compute-engine/boxed-expression/solve.d.ts +1 -1
  67. package/dist/types/compute-engine/boxed-expression/terms.d.ts +1 -1
  68. package/dist/types/compute-engine/boxed-expression/trigonometry.d.ts +1 -1
  69. package/dist/types/compute-engine/boxed-expression/utils.d.ts +1 -1
  70. package/dist/types/compute-engine/boxed-expression/validate.d.ts +1 -1
  71. package/dist/types/compute-engine/collection-utils.d.ts +1 -1
  72. package/dist/types/compute-engine/compilation/base-compiler.d.ts +31 -0
  73. package/dist/types/compute-engine/compilation/glsl-target.d.ts +63 -0
  74. package/dist/types/compute-engine/compilation/javascript-target.d.ts +68 -0
  75. package/dist/types/compute-engine/compilation/types.d.ts +140 -0
  76. package/dist/types/compute-engine/cost-function.d.ts +1 -1
  77. package/dist/types/compute-engine/function-utils.d.ts +1 -1
  78. package/dist/types/compute-engine/global-types.d.ts +340 -8
  79. package/dist/types/compute-engine/index.d.ts +186 -3
  80. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-algebra.d.ts +1 -1
  81. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-arithmetic.d.ts +1 -1
  82. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-calculus.d.ts +1 -1
  83. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-complex.d.ts +1 -1
  84. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-core.d.ts +1 -1
  85. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-linear-algebra.d.ts +1 -1
  86. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-logic.d.ts +1 -1
  87. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-other.d.ts +1 -1
  88. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-relational-operators.d.ts +1 -1
  89. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-sets.d.ts +1 -1
  90. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-statistics.d.ts +1 -1
  91. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-symbols.d.ts +1 -1
  92. package/dist/types/compute-engine/latex-syntax/dictionary/definitions-trigonometry.d.ts +1 -1
  93. package/dist/types/compute-engine/latex-syntax/dictionary/definitions.d.ts +8 -1
  94. package/dist/types/compute-engine/latex-syntax/parse-symbol.d.ts +1 -1
  95. package/dist/types/compute-engine/latex-syntax/parse.d.ts +21 -1
  96. package/dist/types/compute-engine/latex-syntax/serialize-number.d.ts +1 -1
  97. package/dist/types/compute-engine/latex-syntax/serializer-style.d.ts +1 -1
  98. package/dist/types/compute-engine/latex-syntax/serializer.d.ts +1 -1
  99. package/dist/types/compute-engine/latex-syntax/tokenizer.d.ts +1 -1
  100. package/dist/types/compute-engine/latex-syntax/types.d.ts +23 -2
  101. package/dist/types/compute-engine/latex-syntax/utils.d.ts +1 -1
  102. package/dist/types/compute-engine/library/arithmetic.d.ts +1 -1
  103. package/dist/types/compute-engine/library/calculus.d.ts +1 -1
  104. package/dist/types/compute-engine/library/collections.d.ts +1 -1
  105. package/dist/types/compute-engine/library/combinatorics.d.ts +1 -1
  106. package/dist/types/compute-engine/library/complex.d.ts +1 -1
  107. package/dist/types/compute-engine/library/control-structures.d.ts +1 -1
  108. package/dist/types/compute-engine/library/core.d.ts +1 -1
  109. package/dist/types/compute-engine/library/invisible-operator.d.ts +1 -1
  110. package/dist/types/compute-engine/library/library.d.ts +1 -1
  111. package/dist/types/compute-engine/library/linear-algebra.d.ts +1 -1
  112. package/dist/types/compute-engine/library/logic-analysis.d.ts +159 -4
  113. package/dist/types/compute-engine/library/logic-utils.d.ts +1 -1
  114. package/dist/types/compute-engine/library/logic.d.ts +1 -1
  115. package/dist/types/compute-engine/library/number-theory.d.ts +1 -1
  116. package/dist/types/compute-engine/library/polynomials.d.ts +1 -1
  117. package/dist/types/compute-engine/library/random-expression.d.ts +1 -1
  118. package/dist/types/compute-engine/library/relational-operator.d.ts +1 -1
  119. package/dist/types/compute-engine/library/sets.d.ts +1 -1
  120. package/dist/types/compute-engine/library/statistics.d.ts +1 -1
  121. package/dist/types/compute-engine/library/trigonometry.d.ts +1 -1
  122. package/dist/types/compute-engine/library/utils.d.ts +1 -1
  123. package/dist/types/compute-engine/numeric-value/big-numeric-value.d.ts +1 -1
  124. package/dist/types/compute-engine/numeric-value/exact-numeric-value.d.ts +1 -1
  125. package/dist/types/compute-engine/numeric-value/machine-numeric-value.d.ts +1 -1
  126. package/dist/types/compute-engine/numeric-value/types.d.ts +1 -1
  127. package/dist/types/compute-engine/numerics/bigint.d.ts +1 -1
  128. package/dist/types/compute-engine/numerics/expression.d.ts +1 -1
  129. package/dist/types/compute-engine/numerics/interval.d.ts +1 -1
  130. package/dist/types/compute-engine/numerics/monte-carlo.d.ts +1 -1
  131. package/dist/types/compute-engine/numerics/numeric-bigint.d.ts +1 -1
  132. package/dist/types/compute-engine/numerics/numeric-bignum.d.ts +1 -1
  133. package/dist/types/compute-engine/numerics/numeric-complex.d.ts +1 -1
  134. package/dist/types/compute-engine/numerics/numeric.d.ts +1 -1
  135. package/dist/types/compute-engine/numerics/primes.d.ts +1 -1
  136. package/dist/types/compute-engine/numerics/rationals.d.ts +1 -1
  137. package/dist/types/compute-engine/numerics/richardson.d.ts +1 -1
  138. package/dist/types/compute-engine/numerics/special-functions.d.ts +1 -1
  139. package/dist/types/compute-engine/numerics/statistics.d.ts +1 -1
  140. package/dist/types/compute-engine/numerics/strings.d.ts +1 -1
  141. package/dist/types/compute-engine/numerics/types.d.ts +1 -1
  142. package/dist/types/compute-engine/oeis.d.ts +85 -0
  143. package/dist/types/compute-engine/sequence.d.ts +120 -0
  144. package/dist/types/compute-engine/symbolic/antiderivative.d.ts +1 -1
  145. package/dist/types/compute-engine/symbolic/derivative.d.ts +17 -2
  146. package/dist/types/compute-engine/symbolic/distribute.d.ts +1 -1
  147. package/dist/types/compute-engine/symbolic/fu-cost.d.ts +1 -1
  148. package/dist/types/compute-engine/symbolic/fu-transforms.d.ts +1 -1
  149. package/dist/types/compute-engine/symbolic/fu.d.ts +1 -1
  150. package/dist/types/compute-engine/symbolic/simplify-abs.d.ts +1 -1
  151. package/dist/types/compute-engine/symbolic/simplify-divide.d.ts +1 -1
  152. package/dist/types/compute-engine/symbolic/simplify-hyperbolic.d.ts +1 -1
  153. package/dist/types/compute-engine/symbolic/simplify-infinity.d.ts +1 -1
  154. package/dist/types/compute-engine/symbolic/simplify-log.d.ts +1 -1
  155. package/dist/types/compute-engine/symbolic/simplify-power.d.ts +1 -1
  156. package/dist/types/compute-engine/symbolic/simplify-product.d.ts +1 -1
  157. package/dist/types/compute-engine/symbolic/simplify-rules.d.ts +1 -1
  158. package/dist/types/compute-engine/symbolic/simplify-sum.d.ts +1 -1
  159. package/dist/types/compute-engine/symbolic/simplify-trig.d.ts +1 -1
  160. package/dist/types/compute-engine/tensor/tensor-fields.d.ts +1 -1
  161. package/dist/types/compute-engine/tensor/tensors.d.ts +1 -1
  162. package/dist/types/compute-engine/types.d.ts +1 -1
  163. package/dist/types/compute-engine.d.ts +5 -1
  164. package/dist/types/math-json/symbols.d.ts +1 -1
  165. package/dist/types/math-json/types.d.ts +1 -1
  166. package/dist/types/math-json/utils.d.ts +1 -1
  167. package/dist/types/math-json.d.ts +2 -2
  168. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const DEFINITIONS_CORE: LatexDictionary;
3
3
  export declare const DELIMITERS_SHORTHAND: {
4
4
  '(': string;
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const DEFINITIONS_LINEAR_ALGEBRA: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const DEFINITIONS_LOGIC: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const DEFINITIONS_OTHERS: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const DEFINITIONS_INEQUALITIES: LatexDictionaryEntry[];
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const DEFINITIONS_SETS: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const DEFINITIONS_STATISTICS: LatexDictionary;
@@ -1,3 +1,3 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const SYMBOLS: [string, string, number][];
3
3
  export declare const DEFINITIONS_SYMBOLS: LatexDictionary;
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const DEFINITIONS_TRIGONOMETRY: LatexDictionary;
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  import { Delimiter, EnvironmentParseHandler, ExpressionParseHandler, InfixParseHandler, LatexDictionary, LatexDictionaryEntry, LatexString, LatexToken, LibraryCategory, MatchfixParseHandler, PostfixParseHandler, Precedence, SerializeHandler } from '../types';
3
3
  export type CommonEntry = {
4
4
  /** Note: a name is required if a serialize handler is provided */
@@ -82,6 +82,13 @@ export type IndexedLatexDictionary = {
82
82
  ids: Map<string, IndexedLatexDictionaryEntry>;
83
83
  lookahead: number;
84
84
  defs: IndexedLatexDictionaryEntry[];
85
+ matchfixByOpen: Map<string, IndexedMatchfixEntry[]>;
86
+ infixByTrigger: Map<string, IndexedInfixEntry[]>;
87
+ prefixByTrigger: Map<string, IndexedPrefixEntry[]>;
88
+ postfixByTrigger: Map<string, IndexedPostfixEntry[]>;
89
+ functionByTrigger: Map<string, IndexedFunctionEntry[]>;
90
+ symbolByTrigger: Map<string, IndexedSymbolEntry[]>;
91
+ expressionByTrigger: Map<string, IndexedExpressionEntry[]>;
85
92
  };
86
93
  export declare function indexLatexDictionary(dic: Readonly<Partial<LatexDictionaryEntry>[]>, onError: (sig: WarningSignal) => void): IndexedLatexDictionary;
87
94
  export declare const DEFAULT_LATEX_DICTIONARY: {
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  import { Parser } from './types';
3
3
  /** For error handling, if we have a symbol prefix, assume
4
4
  * the symbol is invalid (it would have been captured by
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.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.33.0 */
1
+ /* 0.34.0 */
2
2
  import { NumberSerializationFormat } from './types';
3
3
  /**
4
4
  * @param expr - A number, can be represented as a string
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  import { DelimiterScale } from './types';
3
3
  export declare function getApplyFunctionStyle(_expr: Expression, _level: number): DelimiterScale;
4
4
  export declare function getGroupStyle(_expr: Expression, _level: number): DelimiterScale;
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  import { LatexString, SerializeLatexOptions, DelimiterScale } from './types';
3
3
  import type { IndexedLatexDictionary, IndexedLatexDictionaryEntry } from './dictionary/definitions';
4
4
  export declare class Serializer {
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  * ## Reference
3
3
  * TeX source code:
4
4
  * {@link http://tug.org/texlive/devsrc/Build/source/texk/web2c/tex.web | Tex.web}
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.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: Required<ParseLatexOptions>;
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.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare function asLatexString(s: unknown): string | null;
3
3
  export declare function isRelationalOperator(name: string | undefined): boolean;
4
4
  export declare function isInequalityOperator(operator: string | undefined): boolean;
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.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.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const CALCULUS_LIBRARY: SymbolDefinitions[];
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const DEFAULT_LINSPACE_COUNT = 50;
3
3
  export declare const COLLECTIONS_LIBRARY: SymbolDefinitions;
4
4
  /**
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const COMBINATORICS_LIBRARY: SymbolDefinitions[];
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const COMPLEX_LIBRARY: SymbolDefinitions[];
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const CONTROL_STRUCTURES_LIBRARY: SymbolDefinitions[];
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const CORE_LIBRARY: SymbolDefinitions[];
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare function canonicalInvisibleOperator(ops: ReadonlyArray<BoxedExpression>, { engine: ce }: {
3
3
  engine: ComputeEngine;
4
4
  }): BoxedExpression | null;
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  import type { SymbolDefinitions, ComputeEngine } from '../global-types';
3
3
  export declare function getStandardLibrary(categories: LibraryCategory[] | LibraryCategory | 'all'): readonly SymbolDefinitions[];
4
4
  export declare const LIBRARIES: {
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const LINEAR_ALGEBRA_LIBRARY: SymbolDefinitions[];
@@ -1,4 +1,4 @@
1
- /* 0.33.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.
@@ -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
- * Returns True if there exists an assignment that makes the expression true.
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
- * Returns True if the expression is true for all possible assignments.
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
- * Returns a List of Lists with headers and rows.
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,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare function evaluateAnd(args: ReadonlyArray<BoxedExpression>, { engine: ce }: {
3
3
  engine: ComputeEngine;
4
4
  }): BoxedExpression | undefined;
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const LOGIC_LIBRARY: SymbolDefinitions;
3
3
  export declare function simplifyLogicFunction(x: BoxedExpression): {
4
4
  value: BoxedExpression;
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const NUMBER_THEORY_LIBRARY: SymbolDefinitions[];
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const POLYNOMIALS_LIBRARY: SymbolDefinitions[];
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare function randomExpression(level?: number): Expression;
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const RELOP_LIBRARY: SymbolDefinitions;
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const SETS_LIBRARY: SymbolDefinitions;
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const STATISTICS_LIBRARY: SymbolDefinitions[];
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare const TRIGONOMETRY_LIBRARY: SymbolDefinitions[];
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  /**
3
3
  * EL-4: Convert known infinite integer sets to their equivalent Limits bounds.
4
4
  * Returns undefined if the set cannot be converted to a Limits form.
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  import { BigNumFactory, NumericValue, NumericValueData } from './types';
3
3
  import { ExactNumericValue } from './exact-numeric-value';
4
4
  import { Expression } from '../../math-json/types';
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  import { Rational, SmallInteger } from '../numerics/types';
3
3
  import { BigNumFactory, ExactNumericValueData, NumericValue, NumericValueFactory } from './types';
4
4
  import { Expression } from '../../math-json/types';
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  import { BigNumFactory, NumericValue, NumericValueData } from './types';
3
3
  import type { Expression } from '../../math-json/types';
4
4
  import type { SmallInteger } from '../numerics/types';
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  *
3
3
  * ## THEORY OF OPERATIONS
4
4
  *
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare function bigint(a: Decimal | number | bigint | string): bigint | null;
@@ -1,4 +1,4 @@
1
- /* 0.33.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,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  /** An interval is a continuous set of real numbers */
3
3
  export type Interval = {
4
4
  start: number;
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  estimate: number;
3
3
  error: number;
4
4
  };
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare function lcm(a: bigint, b: bigint): bigint;
3
3
  /** Return `[factor, root]` such that
4
4
  * pow(n, 1/exponent) = factor * pow(root, 1/exponent)
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare function gcd(a: BigNum, b: BigNum): BigNum;
3
3
  export declare function lcm(a: BigNum, b: BigNum): BigNum;
4
4
  export declare function factorial2(ce: IBigNum, n: BigNum): BigNum;
@@ -1,3 +1,3 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare function gamma(c: Complex): Complex;
3
3
  export declare function gammaln(c: Complex): Complex;
@@ -1,4 +1,4 @@
1
- /* 0.33.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;
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare function primeFactors(n: number): {
3
3
  [factor: number]: number;
4
4
  };
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare function isRational(x: any | null): x is Rational;
3
3
  export declare function isMachineRational(x: any | null): x is [SmallInteger, SmallInteger];
4
4
  export declare function isBigRational(x: any | null): x is [bigint, bigint];
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
 
3
3
  Translated from https://github.com/JuliaMath/Richardson.jl/blob/master/src/Richardson.jl
4
4
 
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  import type { BigNum } from './types';
3
3
  export declare function gammaln(z: number): number;
4
4
  export declare function gamma(z: number): number;
@@ -1,4 +1,4 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  import type { BigNum } from './types';
3
3
  export declare function mean(values: Iterable<number>): number;
4
4
  export declare function bigMean(bignum: BigNumFactory, values: Iterable<BigNum>): BigNum;
@@ -1,2 +1,2 @@
1
- /* 0.33.0 */
1
+ /* 0.34.0 */
2
2
  export declare function numberToString(num: number | bigint, fractionalDigits?: number | string): string;