symbolicjs 0.0.1 → 0.1.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/README.md +28 -15
- package/dist/analysis.d.ts +6 -0
- package/dist/analysis.d.ts.map +1 -0
- package/dist/analysis.js +43 -0
- package/dist/analysis.js.map +1 -0
- package/dist/budget.d.ts +15 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +62 -0
- package/dist/budget.js.map +1 -0
- package/dist/constants.d.ts +3 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +3 -0
- package/dist/constants.js.map +1 -0
- package/dist/custom-factory.d.ts +5 -0
- package/dist/custom-factory.d.ts.map +1 -0
- package/dist/custom-factory.js +3 -0
- package/dist/custom-factory.js.map +1 -0
- package/dist/equality-node.d.ts +4 -0
- package/dist/equality-node.d.ts.map +1 -0
- package/dist/equality-node.js +79 -0
- package/dist/equality-node.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +5 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +23 -0
- package/dist/install.js.map +1 -0
- package/dist/isolate.d.ts +19 -0
- package/dist/isolate.d.ts.map +1 -0
- package/dist/isolate.js +395 -0
- package/dist/isolate.js.map +1 -0
- package/dist/kernel.d.ts +25 -0
- package/dist/kernel.d.ts.map +1 -0
- package/dist/kernel.js +256 -0
- package/dist/kernel.js.map +1 -0
- package/dist/parse-equation.d.ts +8 -0
- package/dist/parse-equation.d.ts.map +1 -0
- package/dist/parse-equation.js +93 -0
- package/dist/parse-equation.js.map +1 -0
- package/dist/polynomial.d.ts +21 -0
- package/dist/polynomial.d.ts.map +1 -0
- package/dist/polynomial.js +535 -0
- package/dist/polynomial.js.map +1 -0
- package/dist/solve-all.d.ts +24 -0
- package/dist/solve-all.d.ts.map +1 -0
- package/dist/solve-all.js +54 -0
- package/dist/solve-all.js.map +1 -0
- package/dist/solve-types.d.ts +87 -0
- package/dist/solve-types.d.ts.map +1 -0
- package/dist/solve-types.js +18 -0
- package/dist/solve-types.js.map +1 -0
- package/dist/solve.d.ts +12 -0
- package/dist/solve.d.ts.map +1 -0
- package/dist/solve.js +75 -0
- package/dist/solve.js.map +1 -0
- package/dist/types.d.ts +37 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/docs/api.md +91 -0
- package/docs/implementation-plan.md +673 -0
- package/docs/release-checklist.md +17 -0
- package/docs/security.md +23 -0
- package/package.json +9 -3
package/README.md
CHANGED
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
Computer algebra extensions for [MathJS](https://mathjs.org/), beginning with
|
|
4
4
|
first-class equations.
|
|
5
5
|
|
|
6
|
-
> Early development release. The
|
|
7
|
-
> parser boundary; solving is the next milestone.
|
|
6
|
+
> Early development release. The package API may change before 1.0.0.
|
|
8
7
|
|
|
9
8
|
## Install
|
|
10
9
|
|
|
@@ -24,6 +23,9 @@ first-class equations.
|
|
|
24
23
|
equation.toString(); // 'x + 1 =:= y / 2'
|
|
25
24
|
equation.toTex(); // MathJS LaTeX joined by '='
|
|
26
25
|
|
|
26
|
+
const result = math.solveEquation('x*x - 5*x + 6 =:= 0', 'x');
|
|
27
|
+
// result.kind === 'finite'; roots are 2 and 3
|
|
28
|
+
|
|
27
29
|
The lower-level factory array can be imported directly when an application
|
|
28
30
|
manages its own MathJS instance typing:
|
|
29
31
|
|
|
@@ -54,7 +56,7 @@ The package does not monkey-patch or silently replace **math.parse**. Ordinary
|
|
|
54
56
|
MathJS parsing, including assignment parsing, remains unchanged.
|
|
55
57
|
Assignments and function assignments are rejected inside equation sides.
|
|
56
58
|
|
|
57
|
-
##
|
|
59
|
+
## API
|
|
58
60
|
|
|
59
61
|
- **importsymbolicjs(math)** imports the symbolicjs factories and returns the same
|
|
60
62
|
instance with typed **EqualityNode** and **parseEquation** members.
|
|
@@ -63,25 +65,32 @@ Assignments and function assignments are rejected inside equation sides.
|
|
|
63
65
|
- **splitEquation(expression)** validates and splits one top-level **=:=**.
|
|
64
66
|
- **isEqualityNode(value)** is the runtime type guard.
|
|
65
67
|
- **EQUALITY_OPERATOR** is the canonical **=:=** token.
|
|
68
|
+
- **equationSymbols(equation)** returns sorted free member symbols.
|
|
69
|
+
- **solveEquation(equation, target, options?)** solves for one target.
|
|
70
|
+
- **solveEquationForAll(equation, options?)** independently attempts every
|
|
71
|
+
member symbol and returns an immutable result map.
|
|
66
72
|
|
|
67
73
|
**EqualityNode** supports MathJS traversal, transformation, cloning,
|
|
68
74
|
compilation, equality evaluation, string output, LaTeX output, HTML output, and
|
|
69
75
|
its own JSON codec.
|
|
70
76
|
|
|
71
|
-
|
|
77
|
+
See the [API guide](docs/api.md), [implementation plan](docs/implementation-plan.md),
|
|
78
|
+
and [security guidance](docs/security.md) for result types, supported families,
|
|
79
|
+
limits, and integration details.
|
|
80
|
+
|
|
81
|
+
## Implemented solver scope
|
|
72
82
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
6. Numeric cubic fallback when all coefficients are numeric.
|
|
83
|
+
- First-class equality nodes, parsing, formatting, and serialization.
|
|
84
|
+
- Symbol discovery, immutable substitution, conservative simplification,
|
|
85
|
+
domain conditions, candidate verification, and deterministic limits.
|
|
86
|
+
- Single-occurrence isolation for arithmetic, powers, roots, exponential,
|
|
87
|
+
logarithm, and absolute value.
|
|
88
|
+
- Target-relative rational normalization and symbolic affine/quadratic solving.
|
|
89
|
+
- Numeric cubic fallback when every coefficient is numeric.
|
|
90
|
+
- Typed finite, identity, contradiction, partial, unsupported, and limit results.
|
|
91
|
+
- Independent solve-for-all orchestration and opt-in diagnostics.
|
|
83
92
|
|
|
84
|
-
The
|
|
93
|
+
The solver domain is real scalar equations. Periodic
|
|
85
94
|
trigonometric families, simultaneous systems, matrices, units, and a general
|
|
86
95
|
equivalence prover are not part of the first solver release.
|
|
87
96
|
|
|
@@ -91,12 +100,16 @@ Requires Node 22 or newer.
|
|
|
91
100
|
|
|
92
101
|
npm install
|
|
93
102
|
npm run check
|
|
103
|
+
npm run test:benchmark
|
|
94
104
|
npm run pack:dry
|
|
95
105
|
|
|
96
106
|
The package is tested independently of any consuming application. MathJS is a
|
|
97
107
|
peer dependency and is pinned to 15.2.0 in development so the node contract is
|
|
98
108
|
tested against a known implementation.
|
|
99
109
|
|
|
110
|
+
The stable-release requirements are tracked in the
|
|
111
|
+
[release checklist](docs/release-checklist.md).
|
|
112
|
+
|
|
100
113
|
## Publishing
|
|
101
114
|
|
|
102
115
|
The repository includes a tag-triggered GitHub Actions publishing workflow.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { MathNode } from 'mathjs';
|
|
2
|
+
import type { EqualityNode } from './types.js';
|
|
3
|
+
export declare function nodeSymbols(node: MathNode): readonly string[];
|
|
4
|
+
export declare function equationSymbols(equation: EqualityNode): readonly string[];
|
|
5
|
+
export declare const createEquationSymbols: import("mathjs").FactoryFunction<unknown>;
|
|
6
|
+
//# sourceMappingURL=analysis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../src/analysis.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,QAAQ,CAAC;AAErC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AAmB7C,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,MAAM,EAAE,CAc7D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,MAAM,EAAE,CAOzE;AAED,eAAO,MAAM,qBAAqB,2CAIjC,CAAC"}
|
package/dist/analysis.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { isFunctionNode, isSymbolNode } from 'mathjs';
|
|
2
|
+
import { customFactory } from './custom-factory.js';
|
|
3
|
+
const BUILTIN_CONSTANTS = new Set([
|
|
4
|
+
'e',
|
|
5
|
+
'false',
|
|
6
|
+
'i',
|
|
7
|
+
'Infinity',
|
|
8
|
+
'NaN',
|
|
9
|
+
'null',
|
|
10
|
+
'phi',
|
|
11
|
+
'pi',
|
|
12
|
+
'SQRT1_2',
|
|
13
|
+
'SQRT2',
|
|
14
|
+
'tau',
|
|
15
|
+
'true',
|
|
16
|
+
'undefined',
|
|
17
|
+
'version'
|
|
18
|
+
]);
|
|
19
|
+
export function nodeSymbols(node) {
|
|
20
|
+
const symbols = new Set();
|
|
21
|
+
node.traverse((candidate, path, parent) => {
|
|
22
|
+
if (!isSymbolNode(candidate)) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (parent && isFunctionNode(parent) && path === 'fn') {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (!BUILTIN_CONSTANTS.has(candidate.name)) {
|
|
29
|
+
symbols.add(candidate.name);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
return Object.freeze([...symbols].sort());
|
|
33
|
+
}
|
|
34
|
+
export function equationSymbols(equation) {
|
|
35
|
+
if (!equation?.isEqualityNode) {
|
|
36
|
+
throw new TypeError('EqualityNode expected');
|
|
37
|
+
}
|
|
38
|
+
return Object.freeze([
|
|
39
|
+
...new Set([...nodeSymbols(equation.lhs), ...nodeSymbols(equation.rhs)])
|
|
40
|
+
].sort());
|
|
41
|
+
}
|
|
42
|
+
export const createEquationSymbols = customFactory('equationSymbols', [], () => equationSymbols);
|
|
43
|
+
//# sourceMappingURL=analysis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../src/analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAE,YAAY,EAAC,MAAM,QAAQ,CAAC;AAEpD,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAGlD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,GAAG;IACH,OAAO;IACP,GAAG;IACH,UAAU;IACV,KAAK;IACL,MAAM;IACN,KAAK;IACL,IAAI;IACJ,SAAS;IACT,OAAO;IACP,KAAK;IACL,MAAM;IACN,WAAW;IACX,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,UAAU,WAAW,CAAC,IAAc;IACxC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;QACxC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,IAAI,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACtD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAsB;IACpD,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,CAAC;QAC9B,MAAM,IAAI,SAAS,CAAC,uBAAuB,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;KACzE,CAAC,IAAI,EAAE,CAAC,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAChD,iBAAiB,EACjB,EAAE,EACF,GAAG,EAAE,CAAC,eAAe,CACtB,CAAC"}
|
package/dist/budget.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { MathNode } from 'mathjs';
|
|
2
|
+
import type { LimitKind, LimitResult, SolveOptions, SolverLimits } from './solve-types.js';
|
|
3
|
+
type ConsumableLimit = Exclude<LimitKind, 'input-nodes' | 'polynomial-degree'>;
|
|
4
|
+
export declare function resolveLimits(options?: SolveOptions): SolverLimits;
|
|
5
|
+
export declare class SolverContext {
|
|
6
|
+
readonly target: string;
|
|
7
|
+
readonly limits: SolverLimits;
|
|
8
|
+
readonly used: Record<ConsumableLimit, number>;
|
|
9
|
+
constructor(target: string, options?: SolveOptions);
|
|
10
|
+
preflight(node: MathNode): LimitResult | null;
|
|
11
|
+
checkPolynomialDegree(degree: number): LimitResult | null;
|
|
12
|
+
consume(kind: ConsumableLimit, amount?: number): LimitResult | null;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,QAAQ,CAAC;AAKrC,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,YAAY,EACb,MAAM,kBAAkB,CAAC;AAE1B,KAAK,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,aAAa,GAAG,mBAAmB,CAAC,CAAC;AAkB/E,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,YAAY,CASlE;AAED,qBAAa,aAAa;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAO5C;IAEF,YAAY,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAGjD;IAED,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,IAAI,CAQ5C;IAED,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAIxD;IAED,OAAO,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,SAAI,GAAG,WAAW,GAAG,IAAI,CAO7D;CACF"}
|
package/dist/budget.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { DEFAULT_SOLVER_LIMITS, limitResult } from './solve-types.js';
|
|
2
|
+
const LIMIT_PROPERTY = {
|
|
3
|
+
'rewrite-steps': 'rewriteSteps',
|
|
4
|
+
'recursion-depth': 'recursionDepth',
|
|
5
|
+
branches: 'branches',
|
|
6
|
+
candidates: 'candidates',
|
|
7
|
+
'numeric-iterations': 'numericIterations',
|
|
8
|
+
'total-work': 'totalWork'
|
|
9
|
+
};
|
|
10
|
+
function validateLimit(name, value) {
|
|
11
|
+
if (!Number.isSafeInteger(value) || value < 0) {
|
|
12
|
+
throw new RangeError('Solver limit "' + name + '" must be a nonnegative safe integer');
|
|
13
|
+
}
|
|
14
|
+
return value;
|
|
15
|
+
}
|
|
16
|
+
export function resolveLimits(options) {
|
|
17
|
+
const supplied = options?.limits ?? {};
|
|
18
|
+
const limits = { ...DEFAULT_SOLVER_LIMITS, ...supplied };
|
|
19
|
+
for (const [name, value] of Object.entries(limits)) {
|
|
20
|
+
validateLimit(name, value);
|
|
21
|
+
}
|
|
22
|
+
return Object.freeze(limits);
|
|
23
|
+
}
|
|
24
|
+
export class SolverContext {
|
|
25
|
+
target;
|
|
26
|
+
limits;
|
|
27
|
+
used = {
|
|
28
|
+
'rewrite-steps': 0,
|
|
29
|
+
'recursion-depth': 0,
|
|
30
|
+
branches: 0,
|
|
31
|
+
candidates: 0,
|
|
32
|
+
'numeric-iterations': 0,
|
|
33
|
+
'total-work': 0
|
|
34
|
+
};
|
|
35
|
+
constructor(target, options) {
|
|
36
|
+
this.target = target;
|
|
37
|
+
this.limits = resolveLimits(options);
|
|
38
|
+
}
|
|
39
|
+
preflight(node) {
|
|
40
|
+
let count = 0;
|
|
41
|
+
node.traverse(() => {
|
|
42
|
+
count += 1;
|
|
43
|
+
});
|
|
44
|
+
return count > this.limits.inputNodes
|
|
45
|
+
? limitResult(this.target, 'input-nodes')
|
|
46
|
+
: null;
|
|
47
|
+
}
|
|
48
|
+
checkPolynomialDegree(degree) {
|
|
49
|
+
return degree > this.limits.polynomialDegree
|
|
50
|
+
? limitResult(this.target, 'polynomial-degree')
|
|
51
|
+
: null;
|
|
52
|
+
}
|
|
53
|
+
consume(kind, amount = 1) {
|
|
54
|
+
validateLimit('amount', amount);
|
|
55
|
+
this.used[kind] += amount;
|
|
56
|
+
const property = LIMIT_PROPERTY[kind];
|
|
57
|
+
return this.used[kind] > this.limits[property]
|
|
58
|
+
? limitResult(this.target, kind)
|
|
59
|
+
: null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget.js","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qBAAqB,EACrB,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAU1B,MAAM,cAAc,GAA0D;IAC5E,eAAe,EAAE,cAAc;IAC/B,iBAAiB,EAAE,gBAAgB;IACnC,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;IACxB,oBAAoB,EAAE,mBAAmB;IACzC,YAAY,EAAE,WAAW;CAC1B,CAAC;AAEF,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa;IAChD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,UAAU,CAAC,gBAAgB,GAAG,IAAI,GAAG,sCAAsC,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAsB;IAClD,MAAM,QAAQ,GAAG,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,EAAC,GAAG,qBAAqB,EAAE,GAAG,QAAQ,EAAC,CAAC;IAEvD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnD,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,OAAO,aAAa;IACf,MAAM,CAAS;IACf,MAAM,CAAe;IACrB,IAAI,GAAoC;QAC/C,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,CAAC;QACpB,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,CAAC;QACb,oBAAoB,EAAE,CAAC;QACvB,YAAY,EAAE,CAAC;KAChB,CAAC;IAEF,YAAY,MAAc,EAAE,OAAsB;QAChD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,SAAS,CAAC,IAAc;QACtB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACjB,KAAK,IAAI,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;YACnC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC;YACzC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,qBAAqB,CAAC,MAAc;QAClC,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAC1C,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,OAAO,CAAC,IAAqB,EAAE,MAAM,GAAG,CAAC;QACvC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;QAC1B,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC5C,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;YAChC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,EAAG,KAAc,CAAC;AAChD,eAAO,MAAM,kBAAkB,EAAG,cAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAc,CAAC;AAChD,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAuB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { factory } from 'mathjs';
|
|
2
|
+
type CustomFactory = (name: string, dependencies: string[], create: (dependencies: Record<string, unknown>) => unknown, meta?: Record<string, unknown>) => ReturnType<typeof factory>;
|
|
3
|
+
export declare const customFactory: CustomFactory;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=custom-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-factory.d.ts","sourceRoot":"","sources":["../src/custom-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAE/B,KAAK,aAAa,GAAG,CACnB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,EAC1D,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC3B,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAEhC,eAAO,MAAM,aAAa,EAAyB,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-factory.js","sourceRoot":"","sources":["../src/custom-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAS/B,MAAM,CAAC,MAAM,aAAa,GAAG,OAAmC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { EqualityNode, EqualityNodeConstructor } from './types.js';
|
|
2
|
+
export declare const createEqualityNode: import("mathjs").FactoryFunction<EqualityNodeConstructor>;
|
|
3
|
+
export declare function isEqualityNode(node: unknown): node is EqualityNode;
|
|
4
|
+
//# sourceMappingURL=equality-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equality-node.d.ts","sourceRoot":"","sources":["../src/equality-node.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EACZ,uBAAuB,EAGxB,MAAM,YAAY,CAAC;AA0BpB,eAAO,MAAM,kBAAkB,2DAkG9B,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,YAAY,CAMlE"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { factory } from 'mathjs';
|
|
2
|
+
import { EQUALITY_NODE_NAME, EQUALITY_OPERATOR } from './constants.js';
|
|
3
|
+
function assertNode(node, name) {
|
|
4
|
+
if (!node?.isNode) {
|
|
5
|
+
throw new TypeError('MathJS Node expected for parameter "' + name + '"');
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export const createEqualityNode = factory(EQUALITY_NODE_NAME, ['Node', 'equal'], ({ Node, equal }) => {
|
|
9
|
+
// MathJS exposes NodeCtor as constructing MathNode, while custom node
|
|
10
|
+
// implementations also need its protected runtime hooks. Keep that
|
|
11
|
+
// unavoidable type assertion confined to this factory.
|
|
12
|
+
const MathJsNode = Node;
|
|
13
|
+
class EqualityNodeImpl extends MathJsNode {
|
|
14
|
+
static name = EQUALITY_NODE_NAME;
|
|
15
|
+
lhs;
|
|
16
|
+
rhs;
|
|
17
|
+
constructor(lhs, rhs) {
|
|
18
|
+
super();
|
|
19
|
+
assertNode(lhs, 'lhs');
|
|
20
|
+
assertNode(rhs, 'rhs');
|
|
21
|
+
this.lhs = lhs;
|
|
22
|
+
this.rhs = rhs;
|
|
23
|
+
}
|
|
24
|
+
get type() {
|
|
25
|
+
return EQUALITY_NODE_NAME;
|
|
26
|
+
}
|
|
27
|
+
get isEqualityNode() {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
_compile(math, argNames) {
|
|
31
|
+
const evalLhs = this.lhs._compile(math, argNames);
|
|
32
|
+
const evalRhs = this.rhs._compile(math, argNames);
|
|
33
|
+
return (scope, args, context) => equal(evalLhs(scope, args, context), evalRhs(scope, args, context));
|
|
34
|
+
}
|
|
35
|
+
forEach(callback) {
|
|
36
|
+
callback(this.lhs, 'lhs', this);
|
|
37
|
+
callback(this.rhs, 'rhs', this);
|
|
38
|
+
}
|
|
39
|
+
map(callback) {
|
|
40
|
+
const lhs = this._ifNode(callback(this.lhs, 'lhs', this));
|
|
41
|
+
const rhs = this._ifNode(callback(this.rhs, 'rhs', this));
|
|
42
|
+
return new EqualityNodeImpl(lhs, rhs);
|
|
43
|
+
}
|
|
44
|
+
clone() {
|
|
45
|
+
return new EqualityNodeImpl(this.lhs, this.rhs);
|
|
46
|
+
}
|
|
47
|
+
_toString(options) {
|
|
48
|
+
return (this.lhs.toString(options) +
|
|
49
|
+
' ' + EQUALITY_OPERATOR + ' ' +
|
|
50
|
+
this.rhs.toString(options));
|
|
51
|
+
}
|
|
52
|
+
_toTex(options) {
|
|
53
|
+
return this.lhs.toTex(options) + '=' + this.rhs.toTex(options);
|
|
54
|
+
}
|
|
55
|
+
_toHTML(options) {
|
|
56
|
+
return (this.lhs.toHTML(options) +
|
|
57
|
+
'<span class="math-operator math-binary-operator">=:=' +
|
|
58
|
+
'</span>' +
|
|
59
|
+
this.rhs.toHTML(options));
|
|
60
|
+
}
|
|
61
|
+
toJSON() {
|
|
62
|
+
return {
|
|
63
|
+
mathjs: EQUALITY_NODE_NAME,
|
|
64
|
+
lhs: this.lhs,
|
|
65
|
+
rhs: this.rhs
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
static fromJSON(json) {
|
|
69
|
+
return new EqualityNodeImpl(json.lhs, json.rhs);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return EqualityNodeImpl;
|
|
73
|
+
}, { isClass: true, isNode: true });
|
|
74
|
+
export function isEqualityNode(node) {
|
|
75
|
+
return Boolean(node &&
|
|
76
|
+
typeof node === 'object' &&
|
|
77
|
+
node.isEqualityNode === true);
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=equality-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equality-node.js","sourceRoot":"","sources":["../src/equality-node.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { EQUALITY_NODE_NAME, EQUALITY_OPERATOR } from './constants.js';
|
|
2
|
+
export { createEqualityNode, isEqualityNode } from './equality-node.js';
|
|
3
|
+
export { createParseEquation, splitEquation } from './parse-equation.js';
|
|
4
|
+
export { createEquationSymbols, equationSymbols, nodeSymbols } from './analysis.js';
|
|
5
|
+
export { createSymbolicKernel, SymbolicKernel } from './kernel.js';
|
|
6
|
+
export { createIsolateEquation, IsolationEngine } from './isolate.js';
|
|
7
|
+
export { createPolynomialSolve, PolynomialEngine } from './polynomial.js';
|
|
8
|
+
export { createSolveEquation, solveEquation } from './solve.js';
|
|
9
|
+
export { createSolveEquationForAll, ReadonlyResultMap, solveEquationForAll } from './solve-all.js';
|
|
10
|
+
export { DEFAULT_SOLVER_LIMITS, DEFAULT_SOLVE_TOLERANCE } from './solve-types.js';
|
|
11
|
+
export { symbolicjsFactories, importsymbolicjs } from './install.js';
|
|
12
|
+
export type { symbolicjsInstance, EqualityNode, EqualityNodeConstructor, EqualityNodeJSON } from './types.js';
|
|
13
|
+
export type { Condition, ConditionKind, ContradictionResult, FiniteSolutions, IdentityResult, LimitKind, LimitResult, PartialResult, Solution, SolveDiagnostics, SolveOptions, SolveResult, SolveTraceStage, SolveTraceStep, SolverLimits, UnsupportedReason, UnsupportedResult, VerificationResult, VerificationStatus } from './solve-types.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,aAAa,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,oBAAoB,EAAE,cAAc,EAAC,MAAM,aAAa,CAAC;AACjE,OAAO,EAAC,qBAAqB,EAAE,eAAe,EAAC,MAAM,cAAc,CAAC;AACpE,OAAO,EAAC,qBAAqB,EAAE,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAC,mBAAmB,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9D,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,SAAS,EACT,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,SAAS,EACT,WAAW,EACX,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { EQUALITY_NODE_NAME, EQUALITY_OPERATOR } from './constants.js';
|
|
2
|
+
export { createEqualityNode, isEqualityNode } from './equality-node.js';
|
|
3
|
+
export { createParseEquation, splitEquation } from './parse-equation.js';
|
|
4
|
+
export { createEquationSymbols, equationSymbols, nodeSymbols } from './analysis.js';
|
|
5
|
+
export { createSymbolicKernel, SymbolicKernel } from './kernel.js';
|
|
6
|
+
export { createIsolateEquation, IsolationEngine } from './isolate.js';
|
|
7
|
+
export { createPolynomialSolve, PolynomialEngine } from './polynomial.js';
|
|
8
|
+
export { createSolveEquation, solveEquation } from './solve.js';
|
|
9
|
+
export { createSolveEquationForAll, ReadonlyResultMap, solveEquationForAll } from './solve-all.js';
|
|
10
|
+
export { DEFAULT_SOLVER_LIMITS, DEFAULT_SOLVE_TOLERANCE } from './solve-types.js';
|
|
11
|
+
export { symbolicjsFactories, importsymbolicjs } from './install.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,aAAa,EACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,WAAW,EACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAC,oBAAoB,EAAE,cAAc,EAAC,MAAM,aAAa,CAAC;AACjE,OAAO,EAAC,qBAAqB,EAAE,eAAe,EAAC,MAAM,cAAc,CAAC;AACpE,OAAO,EAAC,qBAAqB,EAAE,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAC,mBAAmB,EAAE,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9D,OAAO,EACL,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { MathJsInstance } from 'mathjs';
|
|
2
|
+
import type { symbolicjsInstance } from './types.js';
|
|
3
|
+
export declare const symbolicjsFactories: readonly [import("mathjs").FactoryFunction<import("./types.js").EqualityNodeConstructor>, import("mathjs").FactoryFunction<unknown>, import("mathjs").FactoryFunction<unknown>, import("mathjs").FactoryFunction<unknown>, import("mathjs").FactoryFunction<unknown>, import("mathjs").FactoryFunction<unknown>, import("mathjs").FactoryFunction<unknown>, import("mathjs").FactoryFunction<unknown>];
|
|
4
|
+
export declare function importsymbolicjs(math: MathJsInstance): symbolicjsInstance;
|
|
5
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,QAAQ,CAAC;AAS3C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAEnD,eAAO,MAAM,mBAAmB,wYAStB,CAAC;AAEX,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,GAAG,kBAAkB,CAGzE"}
|
package/dist/install.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { createEqualityNode } from './equality-node.js';
|
|
2
|
+
import { createParseEquation } from './parse-equation.js';
|
|
3
|
+
import { createEquationSymbols } from './analysis.js';
|
|
4
|
+
import { createSolveEquation } from './solve.js';
|
|
5
|
+
import { createSymbolicKernel } from './kernel.js';
|
|
6
|
+
import { createIsolateEquation } from './isolate.js';
|
|
7
|
+
import { createPolynomialSolve } from './polynomial.js';
|
|
8
|
+
import { createSolveEquationForAll } from './solve-all.js';
|
|
9
|
+
export const symbolicjsFactories = [
|
|
10
|
+
createEqualityNode,
|
|
11
|
+
createParseEquation,
|
|
12
|
+
createEquationSymbols,
|
|
13
|
+
createSymbolicKernel,
|
|
14
|
+
createIsolateEquation,
|
|
15
|
+
createPolynomialSolve,
|
|
16
|
+
createSolveEquation,
|
|
17
|
+
createSolveEquationForAll
|
|
18
|
+
];
|
|
19
|
+
export function importsymbolicjs(math) {
|
|
20
|
+
math.import([...symbolicjsFactories]);
|
|
21
|
+
return math;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAC,qBAAqB,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAC,oBAAoB,EAAC,MAAM,aAAa,CAAC;AACjD,OAAO,EAAC,qBAAqB,EAAC,MAAM,cAAc,CAAC;AACnD,OAAO,EAAC,qBAAqB,EAAC,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAC,yBAAyB,EAAC,MAAM,gBAAgB,CAAC;AAGzD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,kBAAkB;IAClB,mBAAmB;IACnB,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,qBAAqB;IACrB,mBAAmB;IACnB,yBAAyB;CACjB,CAAC;AAEX,MAAM,UAAU,gBAAgB,CAAC,IAAoB;IACnD,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC;IACtC,OAAO,IAA0B,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { MathJsInstance } from 'mathjs';
|
|
2
|
+
import type { SymbolicKernel } from './kernel.js';
|
|
3
|
+
import type { SolveOptions, SolveResult } from './solve-types.js';
|
|
4
|
+
import type { EqualityNode } from './types.js';
|
|
5
|
+
interface IsolationDependencies {
|
|
6
|
+
ConstantNode: MathJsInstance['ConstantNode'];
|
|
7
|
+
FunctionNode: MathJsInstance['FunctionNode'];
|
|
8
|
+
OperatorNode: MathJsInstance['OperatorNode'];
|
|
9
|
+
SymbolNode: MathJsInstance['SymbolNode'];
|
|
10
|
+
symbolicKernel: SymbolicKernel;
|
|
11
|
+
}
|
|
12
|
+
export declare class IsolationEngine {
|
|
13
|
+
#private;
|
|
14
|
+
constructor(dependencies: IsolationDependencies);
|
|
15
|
+
solve(equation: EqualityNode, target: string, options?: SolveOptions): SolveResult;
|
|
16
|
+
}
|
|
17
|
+
export declare const createIsolateEquation: import("mathjs").FactoryFunction<unknown>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=isolate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isolate.d.ts","sourceRoot":"","sources":["../src/isolate.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,cAAc,EAAW,MAAM,QAAQ,CAAC;AAIrD,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC;AAMhD,OAAO,KAAK,EAQV,YAAY,EACZ,WAAW,EAEZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,YAAY,CAAC;AAE7C,UAAU,qBAAqB;IAC7B,YAAY,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IAC7C,YAAY,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IAC7C,YAAY,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IAC7C,UAAU,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;IACzC,cAAc,EAAE,cAAc,CAAC;CAChC;AAyCD,qBAAa,eAAe;;IAG1B,YAAY,YAAY,EAAE,qBAAqB,EAE9C;IA2TD,KAAK,CACH,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,YAAY,GACrB,WAAW,CA6Fb;CACF;AAED,eAAO,MAAM,qBAAqB,2CAmBjC,CAAC"}
|