Skip to content

Comments

feat: Liouville Theorem for harmonic functions#35640

Open
kebekus wants to merge 2 commits intoleanprover-community:masterfrom
kebekus:kebekus/HarmonicLiouville
Open

feat: Liouville Theorem for harmonic functions#35640
kebekus wants to merge 2 commits intoleanprover-community:masterfrom
kebekus:kebekus/HarmonicLiouville

Conversation

@kebekus
Copy link
Collaborator

@kebekus kebekus commented Feb 22, 2026

Implement Liouville's theorem for harmonic functions on the complex plane.

This material is used in Project VD, formalizing Value Distribution Theory for meromorphic functions on the complex plane.


Open in Gitpod

@github-actions
Copy link

github-actions bot commented Feb 22, 2026

PR summary 8a897592b7

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference
Mathlib.Analysis.Complex.Harmonic.Liouville (new file) 2551

Declarations diff

+ InnerProductSpace.bounded_harmonic_on_complex_plane_is_constant
+ InnerProductSpace.harmonic_is_realOfHolomorphic_univ
+ IsConservativeOn.isExactOn_univ
+ _root_.Differentiable.isExactOn_univ
+ re_eq_re_if_cexp_eq_cexp

You can run this locally as follows
## summary with just the declaration names:
./scripts/declarations_diff.sh <optional_commit>

## more verbose report:
./scripts/declarations_diff.sh long <optional_commit>

The doc-module for scripts/declarations_diff.sh contains some details about this script.


Increase in tech debt: (relative, absolute) = (1.00, 0.00)
Current number Change Type
13074 1 backward.isDefEq

Current commit a3b8f36c17
Reference commit 8a897592b7

You can run this locally as

./scripts/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@github-actions github-actions bot added the t-analysis Analysis (normed *, calculus) label Feb 22, 2026
@kebekus kebekus marked this pull request as ready for review February 22, 2026 09:39
Comment on lines +114 to +117
theorem InnerProductSpace.harmonic_is_realOfHolomorphic_univ {f : ℂ → ℝ}
(hf : HarmonicOnNhd f univ) :
∃ F : ℂ → ℂ, (AnalyticOnNhd ℂ F univ) ∧ ((fun z ↦ (F z).re) = f) := by
let g := ofRealCLM ∘ (fderiv ℝ f · 1) - I • ofRealCLM ∘ (fderiv ℝ f · I)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't how I would approach this. Instead, I recommend defining a harmonicConjugate function, and then proving that the function f + I * harmonicConjugate f is holomorphic. You can then add the existential statement as a consequence for convenience if you prefer.


open Complex Real Set

set_option backward.isDefEq.respectTransparency false
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, can you merge master and check that this is still necessary?

Suggested change
set_option backward.isDefEq.respectTransparency false
set_option backward.isDefEq.respectTransparency false in

Comment on lines +27 to +31
theorem InnerProductSpace.bounded_harmonic_on_complex_plane_is_constant
(f : ℂ → ℝ)
(h_harm : HarmonicOnNhd f univ)
(h_bound : Bornology.IsBounded (range f)) :
∀ z w, f z = f w := by
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this really only work for -valued functions? Can't you take values in a finite dimensional inner product space? I thought it was true in that generality.

Comment on lines +292 to +309
/--
**Morera's theorem for the complex plane** A continuous function on `ℂ` whose integrals on
rectangles vanish, has primitives.
-/
theorem IsConservativeOn.isExactOn_univ (h₁ : Continuous f) (h₂ : IsConservativeOn f univ) :
IsExactOn f univ := by
use (wedgeIntegral 0 · f)
intro z _
have h₃ : IsConservativeOn f (ball 0 (‖z‖ + 1)) := h₂.mono (subset_univ _)
exact h₃.hasDerivAt_wedgeIntegral (by fun_prop) (by aesop)

/--
**Morera's theorem for the complex plane** A holomorphic function on `ℂ` has
primitives.
-/
theorem _root_.Differentiable.isExactOn_univ (hf : Differentiable ℂ f) : IsExactOn f univ := by
apply IsConservativeOn.isExactOn_univ hf.continuous
((isConservativeOn_and_continuousOn_iff_isDifferentiableOn isOpen_univ).2 hf.differentiableOn).1
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please do it for any open set instead, and then conclude these afterwards?

theorem exp_eq_exp_iff_exists_int {x y : ℂ} : exp x = exp y ↔ ∃ n : ℤ, x = y + n * (2 * π * I) := by
simp only [exp_eq_exp_iff_exp_sub_eq_one, exp_eq_one_iff, sub_eq_iff_eq_add']

@[grind .] lemma re_eq_re_if_cexp_eq_cexp {x y : ℂ} (h : cexp x = cexp y) :
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
@[grind .] lemma re_eq_re_if_cexp_eq_cexp {x y : ℂ} (h : cexp x = cexp y) :
@[grind .] lemma re_eq_re_of_cexp_eq_cexp {x y : ℂ} (h : cexp x = cexp y) :

@j-loreaux j-loreaux added the awaiting-author A reviewer has asked the author a question or requested changes. label Feb 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

awaiting-author A reviewer has asked the author a question or requested changes. t-analysis Analysis (normed *, calculus)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants