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).

Corpus: 240 observations over 156 shape classes — 66 certified, 2 conditional, 0 partial, 88 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

63 shape classes — 26 certified, 37 withheld.

VerdictShapeExamplesBlocked by
⛔ withheldform=apply, funcs=asin, fn_arg=var, mul=none, pow=none, pow_base=noneasin(x)diff_primitive_registry
⛔ withheldform=apply, funcs=atan, fn_arg=var, mul=none, pow=none, pow_base=noneatan(x)diff_primitive_registry
⛔ withheldform=apply, funcs=atan2, fn_arg=other, mul=none, pow=none, pow_base=noneatan2(x, 1)diff_primitive_registry
⛔ withheldform=apply, funcs=cos,sin, fn_arg=other, mul=none, pow=none, pow_base=nonesin(cos(x))diff_sin
✅ 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)
⛔ withheldform=apply, funcs=cosh, fn_arg=var, mul=none, pow=none, pow_base=nonecosh(x)diff_primitive_registry
⛔ withheldform=apply, funcs=exp, fn_arg=other, mul=scalar, pow=nat, pow_base=varexp((-1 * x^2))diff_exp
✅ 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)
⛔ withheldform=apply, funcs=sinh, fn_arg=var, mul=none, pow=none, pow_base=nonesinh(x)diff_primitive_registry
⛔ 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)
⛔ withheldform=apply, funcs=tanh, fn_arg=var, mul=none, pow=none, pow_base=nonetanh(x)diff_primitive_registry
✅ 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
⛔ withheldform=power, funcs=-, fn_arg=none, mul=none, pow=neg, pow_base=varx^-2power_rule
✅ 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, pow_base=expr(sin(x))^-1
⛔ withheldform=product, funcs=-, fn_arg=none, mul=general, pow=neg, 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, pow_base=expr((-1 + x)^-1 * -1)power_rule, product_rule
⛔ withheldform=product, funcs=-, fn_arg=none, mul=scalar, pow=neg, pow_base=var(-1 * x^-1)power_rule, product_rule
⛔ 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
⛔ 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, 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))
⛔ withheldform=product, funcs=cos, fn_arg=other, mul=scalar, pow=none, pow_base=none(-1/4 * cos((2 * x)))diff_cos, product_rule
✅ certifiedform=product, funcs=cos, fn_arg=var, mul=scalar, pow=none, pow_base=none(-1 * cos(x))
⛔ withheldform=product, funcs=exp,log, fn_arg=other, mul=general, pow=neg, pow_base=expr((exp((-1 * log(x))))^-1 * C2)diff_exp, power_rule, product_rule
⛔ withheldform=product, funcs=exp,log, fn_arg=var, mul=general, pow=none, pow_base=none(exp(x) * log(x))product_rule
✅ certifiedform=product, funcs=exp,sin, fn_arg=var, mul=general, pow=none, pow_base=none(exp(x) * sin(x))
⛔ withheldform=product, funcs=exp, fn_arg=other, mul=general, pow=neg, pow_base=expr((exp((-1 * x)))^-1 * C2), ((exp((-1/2 * x^2)))^-1 * C2), ((exp((-3 * x)))^-1 * C2)collect_mul_factors, diff_exp, power_rule, 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)
⛔ withheldform=product, funcs=exp, fn_arg=var, mul=general, pow=neg, pow_base=expr((exp(x))^-1 * C2)product_rule
✅ 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
⛔ withheldform=product, funcs=sin, fn_arg=var, mul=general, pow=neg, pow_base=var(sin(x) * x^-1)power_rule, product_rule
⛔ withheldform=product, funcs=sqrt, fn_arg=other, mul=scalar, pow=neg, pow_base=expr(((sqrt((1 + x^2)) + x)^2 + -1)^-1 * -2)diff_sqrt, power_rule, product_rule, sum_rule
⛔ 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(((((2 * x^2) * -1) + (3 * x^3)) + (5 * x)) + (-1 * 7))
⛔ 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)))) * -1) + (4 * 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))))diff_cos, diff_sin, product_rule, sum_rule
✅ certifiedform=sum, funcs=cos,sin, fn_arg=var, mul=general, pow=nat, pow_base=var((((-2 * cos(x) * x) + (2 * sin(x))) * -1) + (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))
⛔ 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)))diff_exp, 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, 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))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))product_rule, sum_rule
⛔ withheldform=sum, funcs=log, fn_arg=var, mul=general, pow=none, pow_base=none((-1 * x) + (log(x) * x))product_rule, sum_rule
⛔ withheldform=sum, funcs=sqrt, fn_arg=other, mul=scalar, pow=neg, pow_base=expr(((sqrt((1 + x^2)) + x) * 1/2) + ((sqrt((1 + x^2)) + x)^-1 * 1/2))diff_sqrt, power_rule, product_rule, sum_rule

integrate

41 shape classes — 14 certified, 27 withheld.

VerdictShapeExamplesBlocked by
⛔ withheldform=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)
✅ 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)
⛔ withheldform=apply, funcs=log, fn_arg=var, mul=none, pow=none, pow_base=none, definite=nolog(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
⛔ withheldform=power, funcs=-, fn_arg=none, mul=none, pow=neg, pow_base=var, definite=nox^-2
⛔ 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, 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, pow_base=expr, 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, pow_base=expr, definite=no((((-1 * 1) + x)^2)^-1 * 1), ((1 + x^2)^-1 * 1), ((4 + x^2)^-1 * 1)
⛔ withheldform=product, funcs=-, fn_arg=none, mul=scalar, pow=neg, pow_base=expr, definite=yes((1 + x)^-1 * 1), ((1 + x^2)^-1 * 1), ((4 + x^2)^-1 * 1)
⛔ withheldform=product, funcs=-, fn_arg=none, mul=scalar, pow=neg, pow_base=var, definite=no(1 * x^-1)
⛔ withheldform=product, funcs=-, fn_arg=none, mul=scalar, pow=neg, 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))
⛔ withheldform=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, 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=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)
✅ 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, 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, 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, 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))
⛔ withheldform=sum, funcs=exp,log, fn_arg=var, mul=general, pow=neg, pow_base=var, definite=no((exp(x) * log(x)) + (exp(x) * x^-1))

simplify

16 shape classes — 5 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^-1)^-1, (x^3)^-2, k^-2
⛔ 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=scalar, pow=neg((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=neglog((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 — 15 certified, 6 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 * sin(x)) * cos(x))
✅ certifiedform=product, funcs=cos,tan, fn_arg=other, mul=general, pow=none(cos(x) * tan(x))
⛔ withheldform=product, funcs=cos, fn_arg=other, mul=general, pow=neg(((-1 * cos((2 * x))) + 1) * 2^-1)
⛔ withheldform=product, funcs=cosh,sinh, fn_arg=other, mul=general, pow=neg((cosh(x))^-1 * sinh(x))
✅ certifiedform=product, funcs=cosh,sinh, fn_arg=other, mul=general, pow=none((2 * sinh(x)) * cosh(x))
✅ certifiedform=product, funcs=sin,tan, fn_arg=other, mul=general, pow=neg((tan(x))^-1 * sin(x))
✅ certifiedform=product, funcs=sin, fn_arg=other, mul=general, pow=neg(((sin(x))^-1 * 1) * sin(x))
✅ certifiedform=sum, funcs=cos,sin,tan, fn_arg=other, mul=general, pow=neg((((cos(x))^-1 * sin(x)) * -1) + 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)
✅ certifiedform=sum, funcs=cos,sin, fn_arg=other, mul=scalar, pow=nat((((((sin(x))^2 * 2) * -1) + 1) * -1) + cos((2 * x)))
⛔ withheldform=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)
⛔ withheldform=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 * 2) * -1) + 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

8 shape classes — 8 withheld.

VerdictShapeExamplesBlocked by
⛔ withheldform=atom, funcs=-, fn_arg=none, mul=none, pow=none, pow_base=none, definite=yes5, kgosper_definite_telescope
⛔ withheldform=power, funcs=-, fn_arg=none, mul=none, pow=nat, pow_base=var, definite=yesk^2, k^3gosper_definite_telescope
⛔ withheldform=power, funcs=-, fn_arg=none, mul=none, pow=neg, pow_base=var, definite=yesk^-2, k^-4basel_zeta_even
⛔ withheldform=power, funcs=-, fn_arg=none, mul=none, pow=sym, pow_base=expr, definite=yes(1/2)^k, 2^kgosper_definite_telescope
⛔ withheldform=product, funcs=-, fn_arg=none, mul=general, pow=neg, pow_base=expr, definite=yes(((1 + k) * k)^-1 * 1)gosper_definite_telescope
⛔ 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)gosper_definite_telescope
⛔ withheldform=sum, funcs=-, fn_arg=none, mul=scalar, pow=none, pow_base=none, definite=yes((2 * k) + 1)gosper_definite_telescope

sum_indefinite

1 shape classes — 1 withheld.

VerdictShapeExamplesBlocked by
⛔ withheldform=atom, funcs=-, fn_arg=none, mul=none, pow=none, pow_base=nonekgosper_indefinite

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("integrate", ak.log(x), x)
bool(answer)      # False
answer.reason     # 'class_withheld'

# 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.integrate(ak.log(x), x)   # raises E-CERT-001