| PR | Angles | Conflict | Merged resolution |
|---|---|---|---|
| #755 | API vs naming | roadmap condExp_tendsto_iInf vs Mathlib-shaped name | primary tendsto_ae_condExp_iInf |
| #755 | API vs proof-quality | private helpers vs reusable cross-file facts | general helpers extracted in #687 / #772 |
| #824 | API vs naming | public deFinetti primary vs conclusion-shaped name | conditionallyIID_of_exchangeable primary; later facade alias in #891 |
| #824 | API vs reuse | private core vs duplicated integration | colocate consumers; private shared core |
| #743 | API vs naming | roadmap spelling vs conclusion-shaped theorem | idiomatic primary + roadmap alias |
| #549 | API vs naming | export ..._eq/..._implies_... planning names | conclusion-first names |
| #526 | naming vs API | generic revFiltration name vs roadmap alias | futureFiltration at merge; later deleted as dead API |
| #526 | API vs API | remove @[expose] vs keep characteristic lemmas | build failure established that exposure must remain |
| #746 | reuse vs API | delete duplicate permutation wrappers vs re-add public wrappers | reuse Mathlib theorem; no wrappers |
| #734 | generality vs API | drop unused Integrable f vs exclude unneeded case | refactor so the hypothesis becomes load-bearing |
| #596 | correctness vs generality | finite-measure hypothesis prevents vacuous real identity | split lintegral / integral / integrable lemmas |
| #612 | API vs API | require _def lemma vs remove @[expose] | compiler evidence; keep exposure |
| #666 | API vs API | require permReindex_apply vs hide definition | compiler evidence; keep exposure |
| #451 | API vs API | public unfold/simp surface vs remove all exposure | keep the API and @[expose] |
condExp_tendsto_iInf (planning handle) → tendsto_ae_condExp_iInf (Mathlib-shaped primary). deFinetti (eponymous roadmap handle) → conditionallyIID_of_exchangeable (conclusion-shaped primary). condExp_exists_ae_limit_antitone (roadmap spelling) → exists_integrable_tendsto_ae_condExp_of_antitone (primary + alias). Idiomatic primary names remain. A roadmap is a target list, not a naming authority, and an alias survives only while it stays semantically faithful: #1192 later retired the deFinetti* aliases rather than let them name a mixture-only statement.
The governing question is whether a helper eliminates real duplicated reasoning. Cross-file consumers: extract general public API (#687 / #772). Consumers can be colocated: private shared core in one file (#824). Duplicates Mathlib: delete the wrapper (#746). Review was about avoiding duplicated proof logic, not maximizing the number of public declarations.
#734, an “unused” integrability hypothesis: generality said drop it; api-design said do not expose an irrelevant non-integrable case. Resolution: restructure the proof so hf.neg is genuinely used, keeping an honest load-bearing hypothesis. #596, finite measure vs vacuity: generality said remove [IsFiniteMeasure μ]; correctness observed the naive real-valued identity becomes vacuous at infinite mass. Resolution: split into an unconditional lintegral lemma, a toReal integral identity, and an integrability theorem under finiteness.
@[expose] conflictsOne review round requires a characteristic theorem such as foo_def := rfl or foo_apply; a later round requests removal of @[expose] from the opaque definition. lake env lean then fails: the requested public theorem is no longer definitionally provable. When removing @[expose] breaks a required characteristic lemma, the compiler determines the answer. Observed in #451, #526, #612, and #666.