Prove2Me
Navigate
DiscoverFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

The antiderivatives ln⁡x+C\ln x + Clnx+C of 1/x1/x1/x live in the logarithmic extension C(x,ln⁡x)\mathbb{C}(x,\ln x)C(x,lnx)

Proved
LiouvilleDiffAlg.inv_X_antideriv_logExtension

by Lucas · Sep 27, 2026 · Mathlib 0df444a (Lean v4.33.1)

differential-algebrarational-functions

Equip C(x)\mathbb{C}(x)C(x) with the standard derivative D=d/dxD = d/dxD=d/dx. There is a differential field extension G⊇C(x)G \supseteq \mathbb{C}(x)G⊇C(x) and an element t=“ln⁡x”∈Gt = \text{“}\ln x\text{”} \in Gt=“lnx”∈G such that

  1. G=C(x)(t)G = \mathbb{C}(x)(t)G=C(x)(t) and ttt is transcendental over C(x)\mathbb{C}(x)C(x);
  2. Dt=DxxDt = \dfrac{Dx}{x}Dt=xDx​, so G=C(x,ln⁡x)G = \mathbb{C}(x, \ln x)G=C(x,lnx) is a logarithmic extension of C(x)\mathbb{C}(x)C(x);
  3. the antiderivatives of 1/x1/x1/x in GGG are exactly the elements t+Ct + Ct+C with C∈CC \in \mathbb{C}C∈C:
Dg=1x  ⟺  g=ln⁡x+C for some C∈C(g∈G).Dg = \frac{1}{x} \iff g = \ln x + C \text{ for some } C \in \mathbb{C} \qquad (g \in G).Dg=x1​⟺g=lnx+C for some C∈C(g∈G).

Together with the previous milestone, this shows that a logarithmic extension is needed to integrate 1/x1/x1/x.

Formalization Note The extension is packaged as an existential over a type GGG with a field structure, a derivation, and a C(x)\mathbb{C}(x)C(x)-algebra structure compatible with the derivations.

Preamble
import Mathlib
import Definitions.Def_LiouvilleDiffAlg_RatFunc

open scoped Differential
Formal statement
namespace LiouvilleDiffAlg

theorem inv_X_antideriv_logExtension [Differential (RatFunc ℂ)] (hD : IsStandardDerivation) :
    ∃ (G : Type) (_ : Field G) (_ : Differential G) (_ : Algebra (RatFunc ℂ) G)
      (_ : DifferentialAlgebra (RatFunc ℂ) G) (t : G),
      IntermediateField.adjoin (RatFunc ℂ) {t} = ⊤ ∧ Transcendental (RatFunc ℂ) t ∧
      t′ = (algebraMap (RatFunc ℂ) G RatFunc.X)′ / algebraMap (RatFunc ℂ) G RatFunc.X ∧
      ∀ g : G, g′ = algebraMap (RatFunc ℂ) G (1 / RatFunc.X) ↔
        ∃ c : ℂ, g = t + algebraMap (RatFunc ℂ) G (algebraMap ℂ (RatFunc ℂ) c) := by sorry

end LiouvilleDiffAlg
Source
Wikipedia, "Liouville's theorem (differential algebra)", revision oldid=1349223559, https://en.wikipedia.org/w/index.php?title=Liouville%27s_theorem_(differential_algebra)&oldid=1349223559, section "Examples": "Its antiderivatives ln⁡x+C\ln x + Clnx+C do, however, exist in the logarithmic extension C(x,ln⁡x)\mathbb{C}(x, \ln x)C(x,lnx)"
Read-back

What the Lean code literally says, in plain math · Aristotle (Harmonic)

Non-blind read-back — not independent testimony. This read-back was written by the same agent that drafted the Lean statements below (Aristotle, by Harmonic), with full knowledge of the source article and of the intended meaning. It was not produced by a blind, independent auditor, so it must not be mistaken for independent testimony; please compare it against the Lean code yourself.

Assume C(x)\mathbb{C}(x)C(x) carries a derivation DDD (over Z\mathbb{Z}Z) with D(p)=p′D(p) = p'D(p)=p′ for all polynomials ppp. Then there exist: a type GGG (in the lowest universe) with a field structure, a derivation DGD_GDG​ on GGG, a C(x)\mathbb{C}(x)C(x)-algebra structure ι:C(x)→G\iota : \mathbb{C}(x) \to Gι:C(x)→G such that DG(ιr)=ι(Dr)D_G(\iota r) = \iota(Dr)DG​(ιr)=ι(Dr) for all rrr, and an element t∈Gt \in Gt∈G, such that all of the following hold:

  1. the intermediate field generated by ttt over C(x)\mathbb{C}(x)C(x) is all of GGG;
  2. ttt is transcendental over C(x)\mathbb{C}(x)C(x);
  3. DGt=DG(ιx)/ιxD_G t = D_G(\iota x) / \iota xDG​t=DG​(ιx)/ιx;
  4. for every g∈Gg \in Gg∈G:
DGg=ι(1/x)  ⟺  ∃ c∈C:  g=t+ι(c),D_G g = \iota(1/x) \iff \exists\, c \in \mathbb{C}:\; g = t + \iota(c),DG​g=ι(1/x)⟺∃c∈C:g=t+ι(c),

where ccc is viewed as a constant rational function before applying ι\iotaι.

Item 4 says that every antiderivative of ι(1/x)\iota(1/x)ι(1/x) in GGG differs from ttt by an embedded complex number, and that every such shift is an antiderivative.

Human review
  • Endorsed by Shuze Chen · Oct 1, 2026

    Confirmed by the moderator at approval.

  • Endorsed by Lucas · Oct 1, 2026

    Confirmed by the mission captain (proposal self-audit).

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me