/** * wyrm-math — an exact, conditionally-sound symbolic algebra engine for * manipulative interfaces. * * This file IS the public API: every export below is supported surface, * grouped by concern. Anything not re-exported here is an internal detail. * The groups, top to bottom: * * 1. Expression trees — immutable AST, constructors, traversal * 2. Exact arithmetic — Rational (bigint; no floats, ever) * 3. Evaluation — substitute and decide truth, exactly * 4. Parsing & printing — text ⇄ tree * 5. Judgments/assumptions — conditional soundness (the heart) * 6. Rules & derivations — the only mutation paths; the derivation tree * 7. Built-in rules — the algebra * 8. Move enumeration — legal affordances for a UI * 9. Layout geometry — DOM-free boxes/glyphs for rendering * 10. Rule-authoring toolkit — helpers for writing new rules soundly * * The product invariant everything serves: legal moves are possible, * illegal moves are impossible, and every reachable state is equivalent to * the original equation GIVEN its assumption set. */ export { int, variable, sum, product, neg, fraction, pow, sqrt, root, equation, allNodes, childrenOf, findById, findParent, variablesIn, eq, exprToString, flipRelation, cloneFresh, } from "./expr.js"; export type { Expr, Node, NodeId, Integer, Variable, Sum, Product, Neg, Fraction, Pow, Sqrt, Root, Equation, RelationKind, } from "./expr.js"; export { Rational, DivisionByZero, gcd } from "./rational.js"; export { Surd } from "./surd.js"; export { evalExpr, truthValue, rationalToExpr, exactToExpr, sqrtRational, UnboundVariable, NonIntegerExponent, InexactSqrt, } from "./eval.js"; export type { Env } from "./eval.js"; export { parseEquation, ParseError } from "./parse.js"; export { mkJudgment, checkSolution, envSatisfiesAssumptions, AssumptionConflict, } from "./assumptions.js"; export type { Judgment, Assumption, Restriction, Extension, Pinned, AssumptionOrigin, CheckVerdict, DischargeReason, } from "./assumptions.js"; export { applyRule, applyBranchingRule, RulePreconditionViolation } from "./rule.js"; export type { Rule, RuleApplication, BranchingRule, BranchOutcome, AnimationDiff, Location, } from "./rule.js"; export { Derivation } from "./derivation.js"; export type { DerivationNode } from "./derivation.js"; export { generateProblem, generateSystem, PROBLEM_TOPICS, DIFFICULTIES } from "./generate.js"; export type { ProblemTopic, ProblemSpec, GeneratedProblem, SystemProblem, Difficulty, Rng, } from "./generate.js"; export { additiveCancellation } from "./rules/additiveCancellation.js"; export type { AdditiveCancellationParams } from "./rules/additiveCancellation.js"; export { addToBothSides } from "./rules/addToBothSides.js"; export type { AddToBothSidesParams } from "./rules/addToBothSides.js"; export { combineIntegers } from "./rules/combineIntegers.js"; export type { CombineIntegersParams } from "./rules/combineIntegers.js"; export { combineIntegerFactors } from "./rules/combineIntegerFactors.js"; export type { CombineIntegerFactorsParams } from "./rules/combineIntegerFactors.js"; export { combineLikeFactors } from "./rules/combineLikeFactors.js"; export type { CombineLikeFactorsParams } from "./rules/combineLikeFactors.js"; export { distribute } from "./rules/distribute.js"; export type { DistributeParams } from "./rules/distribute.js"; export { divideBothSides } from "./rules/divideBothSides.js"; export type { DivideBothSidesParams } from "./rules/divideBothSides.js"; export { expandPower } from "./rules/expandPower.js"; export type { ExpandPowerParams } from "./rules/expandPower.js"; export { combineFractions } from "./rules/combineFractions.js"; export type { CombineFractionsParams } from "./rules/combineFractions.js"; export { factorOut } from "./rules/factorOut.js"; export type { FactorOutParams } from "./rules/factorOut.js"; export { factorOutNegative } from "./rules/factorOutNegative.js"; export type { FactorOutNegativeParams } from "./rules/factorOutNegative.js"; export { dropZeroTerm, dropOneFactor, multiplyByZero, cancelNegatives, pullOutNegative, distributeNegation, powerOne, powerZero, } from "./rules/identities.js"; export type { DropTermParams } from "./rules/identities.js"; export { moveTermAcross } from "./rules/moveTermAcross.js"; export type { MoveTermAcrossParams } from "./rules/moveTermAcross.js"; export { multiplicativeCancellation } from "./rules/multiplicativeCancellation.js"; export type { MultiplicativeCancellationParams } from "./rules/multiplicativeCancellation.js"; export { multiplyBothSides } from "./rules/multiplyBothSides.js"; export type { MultiplyBothSidesParams } from "./rules/multiplyBothSides.js"; export { negativeExponent, powerOfPower, distributePower } from "./rules/powers.js"; export { sqrtBothSides, zeroProduct, simplifySqrt, quadraticFormula } from "./rules/quadratics.js"; export { nthRootBothSides, simplifyNthRoot } from "./rules/roots.js"; export { quotientOfPowers } from "./rules/quotientOfPowers.js"; export type { QuotientOfPowersParams } from "./rules/quotientOfPowers.js"; export { reduceIntegerFraction } from "./rules/reduceIntegerFraction.js"; export type { ReduceIntegerFractionParams } from "./rules/reduceIntegerFraction.js"; export { splitTerm, linearTerm } from "./rules/splitTerm.js"; export type { SplitTermParams } from "./rules/splitTerm.js"; export { squareBothSides } from "./rules/squareBothSides.js"; export { swapSides } from "./rules/swapSides.js"; export { enumerateMoves, movesFrom, allRules, ruleById, allBranchingRules, branchingRuleById, } from "./moves.js"; export type { Move, AnyRule, AnyBranchingRule } from "./moves.js"; export { describeMove, describeExpr } from "./describe.js"; export { mkSystem, applyRuleInSystem, systemTruth, enumerateSystemMoves } from "./system.js"; export type { System, SystemMove } from "./system.js"; export { substitute, substituteInSystem, solvedVariable } from "./substitution.js"; export { eliminate, eliminateInSystem } from "./elimination.js"; export { layoutNode, hitTest, boxCenter, METRICS } from "./layout.js"; export type { Layout, LayoutBox, LayoutRect, PlacedGlyph } from "./layout.js"; export { rebuildNary, replaceNode, replaceTermRespectingInvariants, invariantViolations, } from "./expr.js"; export { idSetDiff, survivorMoved, emptyDiff } from "./rule.js"; export { dischargePass, materializeAssumption, mkPinned, pinsEnv, restrictionStatus, signOf, } from "./assumptions.js"; export type { EmittedAssumption, RestrictionStatus, Sign } from "./assumptions.js"; export { literalValue } from "./rules/combineIntegers.js"; export { factorInstancesOf } from "./rules/factorOut.js"; //# sourceMappingURL=index.d.ts.map