Skip to content

feat(Analysis/SpecialFunctions): Erlang's loss formula - #42382

Draft
matt-w-horn wants to merge 2 commits into
leanprover-community:masterfrom
matt-w-horn:erlang-b
Draft

feat(Analysis/SpecialFunctions): Erlang's loss formula#42382
matt-w-horn wants to merge 2 commits into
leanprover-community:masterfrom
matt-w-horn:erlang-b

Conversation

@matt-w-horn

@matt-w-horn matt-w-horn commented Aug 2, 2026

Copy link
Copy Markdown

Adds Mathlib/Analysis/SpecialFunctions/ErlangB.lean. Real.erlangB a c is the blocking probability of an M/M/c/c loss system, defined by the standard recursion, with its range bounds, monotonicity in the load, antitonicity in the number of servers, and the closed form Real.erlangB_eq_div.

This upstreams a file that has been in use in Overload, a standalone Lean library on retry and overload dynamics, where it is sorry-free and axiom-audited: Overload/Queueing/Erlang.lean. The domain-specific parts of that file - the loop instances and the pinned numeric evaluations - stay downstream; what is here is the loss formula and its general properties.

Generated by Claude Fable based on a spec I provided, then tested and reviewed extremely thoroughly myself. I performed adversarial testing on the output, including a full set of suites used in the above library. Dependencies of this have been thoroughly tested as well.

Assisted-by: Claude Fable 5

erlangB a c by the recursion B(0) = 1,
B(c+1) = a*B(c) / (c + 1 + a*B(c)); membership in [0, 1], antitone in
the server count, monotone in the offered load, the carried-load bound
a*(1 - B) <= c, and equality with the closed form
(a^c/c!) / sum_{j <= c} a^j/j! for 0 <= a.
@github-actions github-actions Bot added the new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community! label Aug 2, 2026
@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

Welcome new contributor!

Thank you for contributing to Mathlib! If you haven't done so already, please review our contribution guidelines, as well as the style guide and naming conventions. In particular, we kindly remind contributors that we have guidelines regarding the use of AI when making pull requests.

We use a review queue to manage reviews. If your PR does not appear there, it is probably because it is not successfully building (i.e., it doesn't have a green checkmark), has the awaiting-author tag, or another reason described in the Lifecycle of a PR. The review dashboard has a dedicated webpage which shows whether your PR is on the review queue, and (if not), why.

If you haven't already done so, please come to https://leanprover.zulipchat.com/, introduce yourself, and mention your new PR.

Thank you again for joining our community.

@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

PR summary 37ffc7c7ef

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference
Mathlib.Analysis.SpecialFunctions.ErlangB (new file) 806

Declarations diff (regex)

+ erlangB
+ erlangB_antitone
+ erlangB_carried_le
+ erlangB_denom_pos
+ erlangB_eq_div
+ erlangB_le_one
+ erlangB_mem_Icc
+ erlangB_mono_load
+ erlangB_mul_sum
+ erlangB_nonneg
+ erlangB_succ
+ erlangB_succ_le
+ erlangB_zero

You can run this locally as follows
## from your `mathlib4` directory:
git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci

## summary with just the declaration names:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh <optional_commit>

## more verbose report:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh long <optional_commit>

The doc-module for scripts/pr_summary/declarations_diff.sh in the mathlib-ci repository contains some details about this script.

Declarations diff (Lean)

Lean-aware diff — post-build, computed from the Lean environment (commit 37ffc7c).

  • +13 new declarations
  • −0 removed declarations
+Real.erlangB
+Real.erlangB_antitone
+Real.erlangB_carried_le
+Real.erlangB_denom_pos
+Real.erlangB_eq_div
+Real.erlangB_le_one
+Real.erlangB_mem_Icc
+Real.erlangB_mono_load
+Real.erlangB_mul_sum
+Real.erlangB_nonneg
+Real.erlangB_succ
+Real.erlangB_succ_le
+Real.erlangB_zero

No changes to strong technical debt.

Increase in weak tech debt: (relative, absolute) = (1.00, 0.00)
Current number Change Type (weak)
5048 1 exposed public sections

Current commit 37ffc7c7ef
Reference commit 375d54da29

This script lives in the mathlib-ci repository. To run it locally, from your mathlib4 directory:

git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci
../mathlib-ci/scripts/reporting/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 Aug 2, 2026
@matt-w-horn

Copy link
Copy Markdown
Author

LLM-generated

@github-actions github-actions Bot added the LLM-generated PRs with substantial input from LLMs - review accordingly label Aug 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

LLM-generated PRs with substantial input from LLMs - review accordingly new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community! t-analysis Analysis (normed *, calculus)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant