Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Certificate coverage

DerivedResult.certificate returns Lean 4 source only where the emitter can prove the statement without sorry. This page is the map of that boundary. It is generated by running a corpus and recording what actually emitted — never hand-maintained — from tests/lean_corpus.py (the strict, CI-typechecked corpus) and tests/textbook_gate/ (first-course calculus and algebra). tests/lean_tendsto_corpus.py contributes the recognised Filter.Tendsto fragment (x → +∞, x → 0, finite). tests/lean_gosper_corpus.py contributes Gosper Finset.sum telescopes and the ∏ k = n! product identity.

Corpus: 332 observations over 208 shape classes — 117 certified, 2 conditional, 0 partial, 89 withheld.

Reading a row

A shape class is an operation plus a structural fingerprint of its arguments: which primitive functions occur (funcs), whether they are applied to the bare variable, to an integer power of it, or to something else (fn_arg), what kinds of exponents appear (pow, pow_base), how factors combine (mul), and the top-level form of the expression (form).

VerdictMeaningcertifiable()
✅ certifiedevery corpus observation emitted a certificateTrue
🟡 conditionalemits when the operation rewrites something; some observations had an empty derivation logFalse (class_conditional)
🟠 partialobservations disagree — the class is too coarse to separate themFalse (class_partial)
⛔ withheldno observation ever certifiedFalse (class_withheld)

certifiable() answers True only for certified classes, and in its default verify mode confirms by running the operation before saying so. It under-claims by construction: a shape the corpus has never reached answers False with reason unknown_shape.

diff

76 shape classes — 49 certified, 27 withheld.

VerdictShapeExamplesBlocked by
⛔ withheldform=apply, funcs=Ei, fn_arg=var, mul=none, pow=none, pow_base=noneEi(x)diff_primitive_registry
⛔ withheldform=apply, funcs=Si, fn_arg=var, mul=none, pow=none, pow_base=noneSi(x)diff_primitive_registry
✅ certifiedform=apply, funcs=asin, fn_arg=var, mul=none, pow=none, pow_base=noneasin(x)—
✅ certifiedform=apply, funcs=atan, fn_arg=var, mul=none, pow=none, pow_base=noneatan(x)—
⛔ withheldform=apply, funcs=atan2, fn_arg=other, mul=none, pow=none, pow_base=noneatan2(x, 1)diff_primitive_registry
✅ certifiedform=apply, funcs=cos,sin, fn_arg=other, mul=none, pow=none, pow_base=nonesin(cos(x))—
✅ certifiedform=apply, funcs=cos, fn_arg=other, mul=scalar, pow=none, pow_base=nonecos((2 * x))—
✅ certifiedform=apply, funcs=cos, fn_arg=pow, mul=none, pow=nat, pow_base=varcos(x^2)—
✅ certifiedform=apply, funcs=cos, fn_arg=var, mul=none, pow=none, pow_base=nonecos(x)—
✅ certifiedform=apply, funcs=cosh, fn_arg=var, mul=none, pow=none, pow_base=nonecosh(x)—
✅ certifiedform=apply, funcs=exp, fn_arg=other, mul=scalar, pow=nat, pow_base=varexp((-1 * x^2))—
✅ certifiedform=apply, funcs=exp, fn_arg=other, mul=scalar, pow=none, pow_base=noneexp((-1 * x))—
✅ certifiedform=apply, funcs=exp, fn_arg=pow, mul=none, pow=nat, pow_base=varexp(x^2)—
✅ certifiedform=apply, funcs=exp, fn_arg=var, mul=none, pow=none, pow_base=noneexp(x)—
⛔ withheldform=apply, funcs=log,sqrt, fn_arg=other, mul=none, pow=nat, pow_base=varlog((sqrt((-1 + x^2)) + x))diff_log, diff_sqrt, sum_rule
✅ certifiedform=apply, funcs=log, fn_arg=var, mul=none, pow=none, pow_base=nonelog(x)—
✅ certifiedform=apply, funcs=sin, fn_arg=pow, mul=none, pow=nat, pow_base=varsin(x^2), sin(x^3)—
✅ certifiedform=apply, funcs=sin, fn_arg=var, mul=none, pow=none, pow_base=nonesin(x)—
✅ certifiedform=apply, funcs=sinh, fn_arg=var, mul=none, pow=none, pow_base=nonesinh(x)—
⛔ withheldform=apply, funcs=sqrt, fn_arg=other, mul=none, pow=nat, pow_base=varsqrt((1 + x^2))diff_sqrt
✅ certifiedform=apply, funcs=sqrt, fn_arg=var, mul=none, pow=none, pow_base=nonesqrt(x)—
✅ certifiedform=apply, funcs=tan, fn_arg=var, mul=none, pow=none, pow_base=nonetan(x)—
✅ certifiedform=apply, funcs=tanh, fn_arg=var, mul=none, pow=none, pow_base=nonetanh(x)—
✅ certifiedform=atom, funcs=-, fn_arg=none, mul=none, pow=none, pow_base=none7—
✅ certifiedform=power, funcs=-, fn_arg=none, mul=none, pow=nat, pow_base=varx^10, x^2, x^3—
✅ certifiedform=power, funcs=-, fn_arg=none, mul=none, pow=neg, pow_base=varx^-2—
✅ certifiedform=power, funcs=-, fn_arg=none, mul=none, pow=neg_one, pow_base=varx^-1—
✅ certifiedform=power, funcs=sin, fn_arg=var, mul=none, pow=nat, pow_base=expr(sin(x))^2—
✅ certifiedform=power, funcs=sin, fn_arg=var, mul=none, pow=neg_one, pow_base=expr(sin(x))^-1—
⛔ withheldform=product, funcs=-, fn_arg=none, mul=general, pow=neg_one, pow_base=expr((1 + x)^-1 * x)power_rule, product_rule
⛔ withheldform=product, funcs=-, fn_arg=none, mul=scalar, pow=frac, pow_base=expr((x^(1/2))^3 * 2/3)power_rule, product_rule
✅ certifiedform=product, funcs=-, fn_arg=none, mul=scalar, pow=nat, pow_base=var(1/4 * x^4), (1/5 * x^5)—
⛔ withheldform=product, funcs=-, fn_arg=none, mul=scalar, pow=neg_one, pow_base=expr((-1 + x)^-1 * -1)power_rule, product_rule
✅ certifiedform=product, funcs=-, fn_arg=none, mul=scalar, pow=neg_one, pow_base=var(-1 * x^-1)—
⛔ withheldform=product, funcs=atan, fn_arg=other, mul=scalar, pow=none, pow_base=none(1/2 * atan((1/2 * x)))diff_primitive_registry, product_rule
✅ certifiedform=product, funcs=cos,exp, fn_arg=var, mul=general, pow=neg_one, pow_base=expr((cos(x))^-1 * exp(x))—
⛔ withheldform=product, funcs=cos,log, fn_arg=other, mul=scalar, pow=none, pow_base=none(-1 * log(cos(x)))diff_log, product_rule
✅ certifiedform=product, funcs=cos,sin, fn_arg=var, mul=general, pow=neg_one, pow_base=expr((cos(x))^-1 * sin(x))—
✅ certifiedform=product, funcs=cos,sin, fn_arg=var, mul=general, pow=none, pow_base=none(cos(x) * sin(x))—
✅ certifiedform=product, funcs=cos, fn_arg=other, mul=scalar, pow=none, pow_base=none(-1/4 * cos((2 * x)))—
✅ certifiedform=product, funcs=cos, fn_arg=var, mul=scalar, pow=none, pow_base=none(-1 * cos(x))—
⛔ withheldform=product, funcs=erf,sqrt, fn_arg=other, mul=general, pow=none, pow_base=none(1/2 * erf(x) * sqrt(pi))collect_mul_factors, diff_primitive_registry, diff_sqrt, mul_zero, product_rule
⛔ withheldform=product, funcs=exp,log, fn_arg=other, mul=general, pow=none, pow_base=none(C1 * exp(log(x)))diff_exp, product_rule
✅ certifiedform=product, funcs=exp,log, fn_arg=var, mul=general, pow=none, pow_base=none(exp(x) * log(x))—
✅ certifiedform=product, funcs=exp,sin, fn_arg=var, mul=general, pow=none, pow_base=none(exp(x) * sin(x))—
✅ certifiedform=product, funcs=exp,sinh, fn_arg=var, mul=general, pow=none, pow_base=none(exp(x) * sinh(x))—
⛔ withheldform=product, funcs=exp, fn_arg=other, mul=general, pow=nat, pow_base=var(C1 * exp((1/2 * x^2)))product_rule
⛔ withheldform=product, funcs=exp, fn_arg=other, mul=general, pow=none, pow_base=none(C1 * exp((-1 * x))), (C1 * exp((3 * x)))product_rule
⛔ withheldform=product, funcs=exp, fn_arg=pow, mul=scalar, pow=nat, pow_base=var(1/2 * exp(x^2))product_rule
✅ certifiedform=product, funcs=exp, fn_arg=var, mul=general, pow=nat, pow_base=var(exp(x) * x^2)—
✅ certifiedform=product, funcs=exp, fn_arg=var, mul=general, pow=none, pow_base=none((-1 + x) * exp(x)), (C1 * exp(x))—
⛔ withheldform=product, funcs=log, fn_arg=other, mul=scalar, pow=nat, pow_base=var(1/2 * log((-1 + x^2))), (1/2 * log((1 + x^2)))diff_log, product_rule
✅ certifiedform=product, funcs=log, fn_arg=var, mul=general, pow=nat, pow_base=var(log(x) * x^2), (log(x) * x^3)—
✅ certifiedform=product, funcs=log, fn_arg=var, mul=general, pow=none, pow_base=none(log(x) * x)—
⛔ withheldform=product, funcs=sin, fn_arg=var, mul=general, pow=neg_one, pow_base=var(sin(x) * x^-1)product_rule
✅ certifiedform=product, funcs=sqrt, fn_arg=var, mul=general, pow=nat, pow_base=var(sqrt(x) * x^2)—
✅ certifiedform=product, funcs=sqrt, fn_arg=var, mul=general, pow=none, pow_base=none(sqrt(x) * x)—
⛔ withheldform=sum, funcs=-, fn_arg=none, mul=none, pow=nat, pow_base=expr(3 + y^2)power_rule, sum_rule
✅ certifiedform=sum, funcs=-, fn_arg=none, mul=none, pow=nat, pow_base=var(C1 + x^2)—
✅ certifiedform=sum, funcs=-, fn_arg=none, mul=scalar, pow=nat, pow_base=var((-1 * 2 * x^2) + (-1 * 7) + (3 * x^3) + (5 * x)), ((2 * x) + x^3)—
⛔ withheldform=sum, funcs=asin,sqrt, fn_arg=other, mul=general, pow=nat, pow_base=var((1/2 * sqrt(((-1 * x^2) + 4)) * x) + (2 * asin((1/2 * x))))diff_primitive_registry, diff_sqrt, product_rule, sum_rule
⛔ withheldform=sum, funcs=cos,sin, fn_arg=other, mul=general, pow=none, pow_base=none((-2 * C1 * sin((2 * x))) + (2 * C2 * cos((2 * x)))), ((C1 * cos((2 * x))) + (C2 * sin((2 * x))))product_rule, sum_rule
✅ certifiedform=sum, funcs=cos,sin, fn_arg=var, mul=general, pow=nat, pow_base=var((-2 * sin(x)) + (2 * cos(x) * x) + (sin(x) * x^2))—
✅ certifiedform=sum, funcs=cos,sin, fn_arg=var, mul=general, pow=none, pow_base=none((-1 * C1 * sin(x)) + (C2 * cos(x))), ((-1 * cos(x) * x) + sin(x)), ((C1 * cos(x)) + (C2 * sin(x)))—
✅ certifiedform=sum, funcs=cos,sin, fn_arg=var, mul=none, pow=none, pow_base=none(cos(x) + sin(x))—
✅ certifiedform=sum, funcs=cosh,sinh, fn_arg=var, mul=none, pow=none, pow_base=none(cosh(x) + sinh(x))—
⛔ withheldform=sum, funcs=exp, fn_arg=other, mul=general, pow=none, pow_base=none((-1 * C1 * exp((-1 * x))) + (-1 * C2 * exp((-1 * x)) * x) + (C2 * exp((-1 * x)))), ((-1 * C1 * exp((-1 * x))) + (-2 * C2 * exp((-2 * x)))), ((-1 * C2 * exp((-1 * x))) + (C1 * exp(x)))product_rule, sum_rule
✅ certifiedform=sum, funcs=exp, fn_arg=var, mul=general, pow=none, pow_base=none((C1 * exp(x)) + (C2 * exp(x) * x) + (C2 * exp(x))), ((C1 * exp(x)) + (C2 * exp(x) * x)), ((C1 * exp(x)) + C2)—
⛔ withheldform=sum, funcs=log, fn_arg=other, mul=scalar, pow=nat, pow_base=var((-1 * log((-2 + x))) + (1/2 * log(((-4 * x) + 3 + x^2))))diff_log, product_rule, sum_rule
⛔ withheldform=sum, funcs=log, fn_arg=other, mul=scalar, pow=neg_one, pow_base=expr(((-1 + x)^-1 * -1/2) + (-1/4 * log((-1 + x))) + (1/4 * log((1 + x))))diff_log, power_rule, product_rule, sum_rule
⛔ withheldform=sum, funcs=log, fn_arg=other, mul=scalar, pow=none, pow_base=none((-1 * log((-1 + x))) + log((-2 + x))), ((-1/2 * log((-3 + x))) + (-1/6 * log((-1 + x))) + (1/2 * log((-2 + x))) + (1/6 * log((-4 + x))))diff_log, product_rule, sum_rule
⛔ withheldform=sum, funcs=log, fn_arg=var, mul=general, pow=nat, pow_base=expr(((log(x))^2 * x) + (-2 * log(x) * x) + (2 * x))collect_mul_factors, power_rule, product_rule, sum_rule
⛔ withheldform=sum, funcs=log, fn_arg=var, mul=general, pow=nat, pow_base=var((-1/4 * x^2) + (1/2 * log(x) * x^2))collect_mul_factors
✅ certifiedform=sum, funcs=log, fn_arg=var, mul=general, pow=none, pow_base=none((-1 * x) + (log(x) * x))—
✅ certifiedform=sum, funcs=log, fn_arg=var, mul=none, pow=none, pow_base=none(log(x) + x)—
⛔ withheldform=sum, funcs=sqrt, fn_arg=other, mul=general, pow=neg_one, pow_base=var((-1 * sqrt((1 + x^2)) * x^-1) + 1)collect_mul_factors, diff_sqrt, mul_zero, product_rule, sum_rule

integrate

50 shape classes — 25 certified, 25 withheld.

VerdictShapeExamplesBlocked by
✅ certifiedform=apply, funcs=cos, fn_arg=other, mul=scalar, pow=none, pow_base=none, definite=nocos((2 * x))—
✅ certifiedform=apply, funcs=cos, fn_arg=other, mul=scalar, pow=none, pow_base=none, definite=yescos((2 * x))—
✅ certifiedform=apply, funcs=cos, fn_arg=var, mul=none, pow=none, pow_base=none, definite=nocos(x)—
✅ certifiedform=apply, funcs=cos, fn_arg=var, mul=none, pow=none, pow_base=none, definite=yescos(x)—
⛔ withheldform=apply, funcs=exp, fn_arg=other, mul=scalar, pow=nat, pow_base=var, definite=noexp((-1 * x^2))—
✅ certifiedform=apply, funcs=exp, fn_arg=var, mul=none, pow=none, pow_base=none, definite=noexp(x)—
✅ certifiedform=apply, funcs=exp, fn_arg=var, mul=none, pow=none, pow_base=none, definite=yesexp(x)—
✅ certifiedform=apply, funcs=log, fn_arg=var, mul=none, pow=none, pow_base=none, definite=nolog(x)—
✅ certifiedform=apply, funcs=log, fn_arg=var, mul=none, pow=none, pow_base=none, definite=yeslog(x)—
✅ certifiedform=apply, funcs=sin, fn_arg=var, mul=none, pow=none, pow_base=none, definite=nosin(x)—
✅ certifiedform=apply, funcs=sin, fn_arg=var, mul=none, pow=none, pow_base=none, definite=yessin(x)—
⛔ withheldform=apply, funcs=sqrt, fn_arg=other, mul=scalar, pow=nat, pow_base=var, definite=nosqrt(((-1 * x^2) + 4))—
⛔ withheldform=apply, funcs=sqrt, fn_arg=var, mul=none, pow=none, pow_base=none, definite=yessqrt(x)—
⛔ withheldform=apply, funcs=tan, fn_arg=var, mul=none, pow=none, pow_base=none, definite=notan(x)—
⛔ withheldform=power, funcs=-, fn_arg=none, mul=none, pow=frac, pow_base=var, definite=nox^(1/2)—
✅ certifiedform=power, funcs=-, fn_arg=none, mul=none, pow=nat, pow_base=var, definite=nox^2, x^3, x^4—
✅ certifiedform=power, funcs=-, fn_arg=none, mul=none, pow=nat, pow_base=var, definite=yesx^2, x^3, x^4—
✅ certifiedform=power, funcs=-, fn_arg=none, mul=none, pow=neg, pow_base=var, definite=nox^-2—
✅ certifiedform=power, funcs=-, fn_arg=none, mul=none, pow=neg_one, pow_base=var, definite=nox^-1—
⛔ withheldform=power, funcs=log, fn_arg=var, mul=none, pow=nat, pow_base=expr, definite=no(log(x))^2—
⛔ withheldform=product, funcs=-, fn_arg=none, mul=general, pow=neg_one, pow_base=expr, definite=no((((-1 * 1) + x) * ((-1 * 2) + x) * ((-1 * 3) + x) * ((-1 * 4) + x))^-1 * 1), ((((-1 * 1) + x) * ((-1 * 2) + x) * ((-1 * 3) + x))^-1 * 1), ((((-1 * 1) + x) * ((-1 * 2) + x))^-1 * 1)—
⛔ withheldform=product, funcs=-, fn_arg=none, mul=general, pow=neg_one, pow_base=one_plus_sq, definite=no((1 + x^2)^-1 * x)—
⛔ withheldform=product, funcs=-, fn_arg=none, mul=general, pow=neg_one, pow_base=one_plus_sq, definite=yes((1 + x^2)^-1 * x)—
✅ certifiedform=product, funcs=-, fn_arg=none, mul=scalar, pow=nat, pow_base=var, definite=yes(1/2 * x^2)—
⛔ withheldform=product, funcs=-, fn_arg=none, mul=scalar, pow=neg_one, pow_base=expr, definite=no((((-1 * 1) + x)^2)^-1 * 1), ((4 + x^2)^-1 * 1)—
⛔ withheldform=product, funcs=-, fn_arg=none, mul=scalar, pow=neg_one, pow_base=expr, definite=yes((1 + x)^-1 * 1), ((4 + x^2)^-1 * 1), ((x^2)^-1 * 1)—
✅ certifiedform=product, funcs=-, fn_arg=none, mul=scalar, pow=neg_one, pow_base=one_plus_sq, definite=no((1 + x^2)^-1 * 1)—
✅ certifiedform=product, funcs=-, fn_arg=none, mul=scalar, pow=neg_one, pow_base=one_plus_sq, definite=yes((1 + x^2)^-1 * 1)—
✅ certifiedform=product, funcs=-, fn_arg=none, mul=scalar, pow=neg_one, pow_base=var, definite=no(1 * x^-1)—
⛔ withheldform=product, funcs=-, fn_arg=none, mul=scalar, pow=neg_one, pow_base=var, definite=yes(1 * x^-1)—
⛔ withheldform=product, funcs=cos,sin, fn_arg=var, mul=general, pow=none, pow_base=none, definite=no(cos(x) * sin(x))—
✅ certifiedform=product, funcs=cos, fn_arg=var, mul=general, pow=nat, pow_base=var, definite=no(cos(x) * x^2)—
⛔ withheldform=product, funcs=cos, fn_arg=var, mul=scalar, pow=neg_one, pow_base=expr, definite=no(((cos(x))^2)^-1 * 1)—
✅ certifiedform=product, funcs=cos, fn_arg=var, mul=scalar, pow=none, pow_base=none, definite=yes(3 * cos(x))—
⛔ withheldform=product, funcs=exp, fn_arg=pow, mul=general, pow=nat, pow_base=var, definite=no(exp(x^2) * x)—
⛔ withheldform=product, funcs=exp, fn_arg=var, mul=general, pow=nat, pow_base=var, definite=yes(exp(x) * x^2)—
⛔ withheldform=product, funcs=exp, fn_arg=var, mul=general, pow=neg_one, pow_base=var, definite=no(exp(x) * x^-1)—
⛔ withheldform=product, funcs=exp, fn_arg=var, mul=general, pow=none, pow_base=none, definite=no(exp(x) * x)—
⛔ withheldform=product, funcs=exp, fn_arg=var, mul=general, pow=none, pow_base=none, definite=yes(exp(x) * x)—
✅ certifiedform=product, funcs=exp, fn_arg=var, mul=scalar, pow=none, pow_base=none, definite=yes(-1 * exp(x))—
⛔ withheldform=product, funcs=log, fn_arg=var, mul=general, pow=none, pow_base=none, definite=no(log(x) * x)—
⛔ withheldform=product, funcs=log, fn_arg=var, mul=general, pow=none, pow_base=none, definite=yes(log(x) * x)—
⛔ withheldform=product, funcs=sin, fn_arg=var, mul=general, pow=neg_one, pow_base=var, definite=no(sin(x) * x^-1)—
✅ certifiedform=product, funcs=sin, fn_arg=var, mul=general, pow=none, pow_base=none, definite=no(sin(x) * x)—
⛔ withheldform=product, funcs=sqrt, fn_arg=other, mul=general, pow=neg_one, pow_base=expr, definite=no((sqrt((1 + x^2)) * x^2)^-1 * 1), ((sqrt((1 + x^2)))^-1 * x)—
⛔ withheldform=product, funcs=sqrt, fn_arg=other, mul=scalar, pow=neg_one, pow_base=expr, definite=no((sqrt(((-1 * 1) + x^2)))^-1 * 1), ((sqrt(((-1 * x^2) + 1)))^-1 * 1)—
⛔ withheldform=product, funcs=sqrt, fn_arg=other, mul=scalar, pow=neg_one, pow_base=expr, definite=yes((sqrt(((-1 * x^2) + 1)))^-1 * 1)—
✅ certifiedform=sum, funcs=cos,sin, fn_arg=var, mul=none, pow=none, pow_base=none, definite=yes(cos(x) + sin(x))—
✅ certifiedform=sum, funcs=cos,sin, fn_arg=var, mul=scalar, pow=nat, pow_base=var, definite=yes((3 * cos(x)) + sin(x) + x^2)—
✅ certifiedform=sum, funcs=exp,log, fn_arg=var, mul=general, pow=neg_one, pow_base=var, definite=no((exp(x) * log(x)) + (exp(x) * x^-1))—

limit

26 shape classes — 9 certified, 17 withheld.

VerdictShapeExamplesBlocked by
✅ certifiedform=apply, funcs=exp, fn_arg=other, mul=scalar, pow=none, pow_base=none, point=atTopexp((-1 * x))—
✅ certifiedform=apply, funcs=exp, fn_arg=var, mul=none, pow=none, pow_base=none, point=atTopexp(x)—
✅ certifiedform=atom, funcs=-, fn_arg=none, mul=none, pow=none, pow_base=none, point=atTopx—
⛔ withheldform=atom, funcs=-, fn_arg=none, mul=none, pow=none, pow_base=none, point=zero5—
✅ certifiedform=power, funcs=-, fn_arg=none, mul=none, pow=nat, pow_base=var, point=atTopx^2—
⛔ withheldform=power, funcs=-, fn_arg=none, mul=none, pow=sym, pow_base=var, point=zerox^x—
✅ certifiedform=power, funcs=-, fn_arg=none, mul=scalar, pow=sym, pow_base=expr, point=atTop((1 * x^-1) + 1)^x, ((2 * x^-1) + 1)^x—
⛔ withheldform=power, funcs=-, fn_arg=none, mul=scalar, pow=sym, pow_base=expr, point=zero(1 + x)^(1 * x^-1)—
⛔ withheldform=product, funcs=-, fn_arg=none, mul=general, pow=neg_one, pow_base=expr, point=atTop(((2 * x) + 1) * (3 + x^2)^-1)—
⛔ withheldform=product, funcs=-, fn_arg=none, mul=general, pow=neg_one, pow_base=expr, point=finite(((-1 * 1) + x)^-1 * ((-1 * 1) + x^2)), (((-1 * 2) + x)^-1 * ((-1 * 4) + x^2)), (((3 * x) + 2 + x^2) * (1 + x)^-1)—
⛔ withheldform=product, funcs=-, fn_arg=none, mul=general, pow=neg_one, pow_base=one_plus_sq, point=atTop(((2 * x) + (3 * x^2)) * (1 + x^2)^-1), ((1 + x^2)^-1 * x^3)—
✅ certifiedform=product, funcs=-, fn_arg=none, mul=scalar, pow=neg_one, pow_base=var, point=atTop(1 * x^-1)—
⛔ withheldform=product, funcs=-, fn_arg=none, mul=scalar, pow=neg_one, pow_base=var, point=zero(1 * x^-1)—
⛔ withheldform=product, funcs=cos, fn_arg=var, mul=general, pow=neg_one, pow_base=expr, point=zero(((-1 * cos(x)) + 1) * (x^2)^-1)—
✅ certifiedform=product, funcs=exp, fn_arg=other, mul=general, pow=nat, pow_base=var, point=atTop(exp((-1 * x)) * x^2), (exp((-1 * x)) * x^3)—
⛔ withheldform=product, funcs=exp, fn_arg=other, mul=general, pow=neg_one, pow_base=var, point=zero(((-1 * 1) + exp((2 * x))) * x^-1)—
✅ certifiedform=product, funcs=exp, fn_arg=other, mul=general, pow=none, pow_base=none, point=atTop(exp((-1 * x)) * x)—
⛔ withheldform=product, funcs=exp, fn_arg=var, mul=general, pow=neg_one, pow_base=expr, point=zero(((-1 * 1) + (-1 * x) + exp(x)) * (x^2)^-1)—
⛔ withheldform=product, funcs=exp, fn_arg=var, mul=general, pow=neg_one, pow_base=var, point=atTop(exp(x) * x^-1)—
⛔ withheldform=product, funcs=exp, fn_arg=var, mul=general, pow=neg_one, pow_base=var, point=zero(((-1 * 1) + exp(x)) * x^-1)—
⛔ withheldform=product, funcs=log, fn_arg=other, mul=general, pow=neg_one, pow_base=var, point=zero(log((1 + x)) * x^-1)—
⛔ withheldform=product, funcs=log, fn_arg=var, mul=general, pow=neg_one, pow_base=expr, point=finite(((-1 * 1) + x)^-1 * log(x))—
⛔ withheldform=product, funcs=log, fn_arg=var, mul=general, pow=neg_one, pow_base=var, point=atTop(log(x) * x^-1)—
⛔ withheldform=product, funcs=log, fn_arg=var, mul=general, pow=none, pow_base=none, point=zero(log(x) * x)—
✅ certifiedform=product, funcs=sin, fn_arg=var, mul=general, pow=neg_one, pow_base=var, point=zero(sin(x) * x^-1)—
⛔ withheldform=product, funcs=sqrt, fn_arg=other, mul=general, pow=neg_one, pow_base=var, point=zero(((-1 * 1) + sqrt((1 + x))) * x^-1)—

product_definite

1 shape classes — 1 certified.

VerdictShapeExamplesBlocked by
✅ certifiedform=atom, funcs=-, fn_arg=none, mul=none, pow=none, pow_base=none, definite=yesk—

simplify

18 shape classes — 7 certified, 2 conditional, 9 withheld.

VerdictShapeExamplesBlocked by
⛔ withheldform=apply, funcs=exp,log, fn_arg=other, mul=none, pow=noneexp(log(x)), log(exp(x))—
⛔ withheldform=apply, funcs=exp, fn_arg=other, mul=none, pow=noneexp((x + y))—
⛔ withheldform=apply, funcs=log, fn_arg=other, mul=general, pow=nonelog((x * y))—
⛔ withheldform=power, funcs=-, fn_arg=none, mul=none, pow=frac(x^(1/2))^2—
✅ certifiedform=power, funcs=-, fn_arg=none, mul=none, pow=nat(x^2)^3, x^0, x^1—
🟡 conditionalform=power, funcs=-, fn_arg=none, mul=none, pow=neg(x^3)^-2, k^-2, k^-3—
✅ certifiedform=power, funcs=-, fn_arg=none, mul=none, pow=neg_one(x^-1)^-1—
⛔ withheldform=product, funcs=-, fn_arg=none, mul=general, pow=frac(x^(1/3) * x^(2/3))—
✅ certifiedform=product, funcs=-, fn_arg=none, mul=general, pow=nat(x^2 * x^3)—
✅ certifiedform=product, funcs=-, fn_arg=none, mul=general, pow=neg(x^-2 * x^2), (x^-2 * x^5)—
✅ certifiedform=product, funcs=-, fn_arg=none, mul=general, pow=neg_one(x^-1 * x^2)—
✅ certifiedform=product, funcs=-, fn_arg=none, mul=scalar, pow=neg_one((k^2)^-1 * 3), ((x^3)^-1 * 1)—
✅ certifiedform=product, funcs=-, fn_arg=none, mul=scalar, pow=none(0 * x), (1 * x), (3 * 4)—
⛔ withheldform=product, funcs=gamma, fn_arg=other, mul=general, pow=none(gamma((1 + k)) * k)—
⛔ withheldform=product, funcs=log, fn_arg=other, mul=scalar, pow=none(2 * log(x))—
🟡 conditionalform=sum, funcs=-, fn_arg=none, mul=none, pow=none(0 + x), (2 + 3), (2 + x)—
⛔ withheldform=sum, funcs=-, fn_arg=none, mul=scalar, pow=none((2 * k) + 1)—
⛔ withheldform=sum, funcs=log, fn_arg=other, mul=scalar, pow=none((-1 * log(y)) + log(x))—

simplify_log_exp

6 shape classes — 6 certified.

VerdictShapeExamplesBlocked by
✅ certifiedform=apply, funcs=exp,log, fn_arg=other, mul=none, pow=noneexp(log(x)), log(exp(x))—
✅ certifiedform=apply, funcs=log, fn_arg=other, mul=general, pow=neg_onelog((x * y^-1))—
✅ certifiedform=apply, funcs=log, fn_arg=other, mul=none, pow=natlog(x^2)—
✅ certifiedform=product, funcs=exp, fn_arg=other, mul=general, pow=none(exp(x) * exp(y))—
✅ certifiedform=sum, funcs=exp,log, fn_arg=other, mul=none, pow=none(exp(log(y)) + log(exp(x)))—
✅ certifiedform=sum, funcs=log, fn_arg=other, mul=none, pow=none(log(x) + log(y))—

simplify_trig

21 shape classes — 14 certified, 7 withheld.

VerdictShapeExamplesBlocked by
✅ certifiedform=apply, funcs=cos, fn_arg=other, mul=scalar, pow=nonecos((-1 * x))—
✅ certifiedform=apply, funcs=sin, fn_arg=other, mul=scalar, pow=nonesin((-1 * x))—
⛔ withheldform=apply, funcs=sinh, fn_arg=other, mul=scalar, pow=nonesinh((-1 * x))—
✅ certifiedform=apply, funcs=tan, fn_arg=other, mul=none, pow=nonetan(x)—
✅ certifiedform=product, funcs=cos,sin, fn_arg=other, mul=general, pow=none(2 * cos(x) * sin(x))—
⛔ withheldform=product, funcs=cos,tan, fn_arg=other, mul=general, pow=none(cos(x) * tan(x))collect_mul_factors
✅ certifiedform=product, funcs=cos, fn_arg=other, mul=general, pow=neg_one(((-1 * cos((2 * x))) + 1) * 2^-1)—
⛔ withheldform=product, funcs=cosh,sinh, fn_arg=other, mul=general, pow=neg_one((cosh(x))^-1 * sinh(x))—
⛔ withheldform=product, funcs=cosh,sinh, fn_arg=other, mul=general, pow=none(2 * cosh(x) * sinh(x))—
⛔ withheldform=product, funcs=sin,tan, fn_arg=other, mul=general, pow=neg_one((tan(x))^-1 * sin(x))collect_mul_factors, pow_of_product_cancel
✅ certifiedform=product, funcs=sin, fn_arg=other, mul=general, pow=neg_one((sin(x))^-1 * 1 * sin(x))—
✅ certifiedform=sum, funcs=cos,sin,tan, fn_arg=other, mul=general, pow=neg_one(((cos(x))^-1 * -1 * sin(x)) + tan(x)), (((cos(x))^-1 * sin(x)) + (-1 * tan(x)))—
✅ certifiedform=sum, funcs=cos,sin, fn_arg=other, mul=general, pow=none((cos(x) * cos(x)) + (sin(x) * sin(x)))—
✅ certifiedform=sum, funcs=cos,sin, fn_arg=other, mul=none, pow=nat((cos(x))^2 + (sin(x))^2)—
⛔ withheldform=sum, funcs=cos,sin, fn_arg=other, mul=scalar, pow=nat(((((sin(x))^2 * -1 * 2) + 1) * -1) + cos((2 * x)))zero_sum
✅ certifiedform=sum, funcs=cos, fn_arg=other, mul=scalar, pow=nat(((cos(x))^2 * 2) + (-1 * 1))—
✅ certifiedform=sum, funcs=cosh,sinh, fn_arg=other, mul=scalar, pow=nat(((sinh(x))^2 * -1) + (cosh(x))^2)—
✅ certifiedform=sum, funcs=cosh, fn_arg=other, mul=scalar, pow=nat(((cosh(x))^2 * 2) + (-1 * 1))—
✅ certifiedform=sum, funcs=sin, fn_arg=other, mul=scalar, pow=nat(((sin(x))^2 * -1 * 2) + 1)—
✅ certifiedform=sum, funcs=tan, fn_arg=other, mul=none, pow=nat((tan(x))^2 + 1)—
⛔ withheldform=sum, funcs=tanh, fn_arg=other, mul=scalar, pow=nat(((tanh(x))^2 * -1) + 1)—

sum_definite

9 shape classes — 5 certified, 4 withheld.

VerdictShapeExamplesBlocked by
✅ certifiedform=atom, funcs=-, fn_arg=none, mul=none, pow=none, pow_base=none, definite=yes5, k—
✅ certifiedform=power, funcs=-, fn_arg=none, mul=none, pow=nat, pow_base=var, definite=yesk^2, k^3—
⛔ withheldform=power, funcs=-, fn_arg=none, mul=none, pow=neg, pow_base=var, definite=yesk^-2, k^-3, k^-4basel_zeta_even, rational_series_partial_fractions
✅ certifiedform=power, funcs=-, fn_arg=none, mul=none, pow=sym, pow_base=int, definite=yes2^k—
⛔ withheldform=power, funcs=-, fn_arg=none, mul=none, pow=sym, pow_base=recip, definite=yes(1/2)^k—
✅ certifiedform=product, funcs=-, fn_arg=none, mul=general, pow=neg_one, pow_base=expr, definite=yes(((1 + k) * k)^-1 * 1)—
⛔ withheldform=product, funcs=-, fn_arg=none, mul=scalar, pow=neg, pow_base=var, definite=yes(3 * k^-2)basel_zeta_even
⛔ withheldform=product, funcs=gamma, fn_arg=other, mul=general, pow=none, pow_base=none, definite=yes(gamma((1 + k)) * k)—
✅ certifiedform=sum, funcs=-, fn_arg=none, mul=scalar, pow=none, pow_base=none, definite=yes((2 * k) + 1)—

sum_indefinite

1 shape classes — 1 certified.

VerdictShapeExamplesBlocked by
✅ certifiedform=atom, funcs=-, fn_arg=none, mul=none, pow=none, pow_base=nonek—

Querying it

import alkahest as ak

p = ak.ExprPool()
x = p.symbol("x")

# Will this route give me something a referee can check?
answer = ak.certifiable("diff", ak.log(ak.sin(x)), x)
bool(answer)      # False

# Plan across candidate routes without computing any of them.
ak.certifiable("diff", ak.sin(x), x, mode="ledger")

# Fail loudly instead of degrading silently.
with ak.context(require_certificate=True):
    ak.diff(ak.log(ak.sin(x)), x)   # raises E-CERT-001