All notable changes to this project. Format loosely follows Keep a Changelog; versioning is SemVer — and pre-1.0, so anything may break.
- Renamed the package and context from
FormalCalctoCalculemus. - Sped up integral/sum verification: activate each side once and reuse for samples.
- The tactic loop now serves the search for a derivation, not just its
transcription (look → recall a move → try → see what changed → retract):
- A transform that leaves the expression unchanged (a rewrite whose left side
matched nothing, a locator that missed) records no step — it can no
longer masquerade as a verified line (
step::noop). by[...]refuses a Refuted move: the goal stays where it was, like an illegal move in a proof assistant, and the refusal message includes the numeric counterexample (sample point, both values). The functional layer (step) still records refuted steps for scripts.compute[...]holds its argument and inertizes liveIntegrate/Sum/Product, so ordinary mathematical input works directly — no need to learndint/sumbefore the first checkmark.- Numeric probes sample unconstrained variables with both signs, so a
sign-dependent claim (e.g.
Sqrt[x^2] == xwith no assumptions) is refuted instead of slipping through a positive-only probe. evaluateactivates under the derivation's assumptions and stripsConditionalExpressionconditions the chain already implies.ibptakes boundary terms at infinite endpoints as limits under the derivation's assumptions (no more0*E^(-Infinity u)junk in results).abbreviate/letreplaces every occurrence of the named subexpression (a partial flat match no longer hides the one inside a power).
- A transform that leaves the expression unchanged (a rewrite whose left side
matched nothing, a locator that missed) records no step — it can no
longer masquerade as a verified line (
- README, LICENSE (MIT), ROADMAP, CHANGELOG.
assuming[cond]— add an assumption mid-derivation (affects later steps only; contradictory additions rejected).moves[]— shape-directed discovery: which transforms apply to the current goal.changed[]— the current line with the parts that differ from the previous line highlighted.- Refuted verification certificates carry a
"witness"(sample point and both numeric values), surfaced instep/bymessages.
First cut: a verified relation-chain substrate and the modules built on it.
- Core — verified relation-chain substrate: equalities and inequalities
composed into one running relation; live
Derivationnotebook panel. - Series — graded truncation, weighted series expansion, verified
~steps. - Matrix — NCAlgebra-backed non-commutative algebra with random-matrix verification; quadratic forms under side relations; sym/antisym split.
- Integral — formal
Inactive[Integrate]manipulation with quadrature verification; relation-aware checks. - Sums — formal
Inactive[Sum]manipulation;Activate/numeric verification; symbolic-nsums; gather (inverse of linearity);reverseLimits,peelFirst/peelLast. - Inequalities — inequality system with assumption accumulation and contradiction rejection.
- Two-sided (in)equations — apply the same operation to both sides.
- Gaussian domain pack — log-density, complete-the-square, Gaussian integral.
- Subexpressions — addressing via
on/partOf/highlightwith natural locators. - Surface syntax — tactic mode, verbs,
>op>operator; abbreviations (let w = expr, work, restore);claim(unverified mid-derivation) andcaveats. - Notebook assistance —
SyntaxInformation, argument-value completions, tooltips, argument hints. - Domain packs separated from the general-purpose core.
- Docs — MkDocs Material site; examples gallery, including a tour-de-force Mellin computation (∫ x^{s-1}/(e^x−1) = Γ(s)ζ(s)).