You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Must-fixes (1)–(3):
- Add strict 1D additive forms `StrictConvexOn.add_hasDerivAt_mul_lt` and
`StrictConcaveOn.lt_add_hasDerivAt_mul` (plus `deriv`-form variants) to
`Convex/Deriv.lean`.
- Refactor `StrictConvexOn.add_lineDeriv_lt` to use the new strict 1D additive
form via `StrictConvexOn.lineRestriction` (drops the brittle midpoint `calc`).
- Add `StrictConcaveOn.lt_add_lineDeriv`, `.lt_add_fderiv`, `.lt_add_inner_gradient`
(missing concave strict duals across all three layers).
- Add `ConvexOn.isMinOn_of_fderiv_eq_zero` (FDeriv-form sibling of the gradient
one; needs only `NormedSpace ℝ E`, not Hilbert).
- Add `HasLineDerivAt`- and `HasFDerivAt`-flavoured primitive forms for all
inequality lemmas; the `lineDeriv` / `fderiv` versions become one-line
corollaries via `LineDifferentiableAt.hasLineDerivAt` /
`DifferentiableAt.hasFDerivAt`.
Should-fixes (4)–(7):
- Rename `_sub_apply_nonneg` → `_sub_nonneg` in both LineDeriv and FDeriv;
`_apply` was vestigial for the scalar `lineDeriv` and added noise for
`fderiv` where the application is visible in the statement.
- Drop the LineDeriv-layer iff converse (`convexOn_iff_add_lineDeriv_le`);
the FDeriv-layer iff is the canonical statement users want, and its
premise `∀ x ∈ s, DifferentiableAt ℝ f x` is easier to instantiate than
the pair-quantified line-differentiability of the dropped version.
- Reprove `convexOn_iff_add_fderiv_le` directly using `fderiv`-arithmetic
(no longer delegating through the dropped LineDeriv iff).
- Rewrite Gradient module docstring to lead with "Hilbert space" framing.
- Refactor the `▸` chain in `ConvexOn.lineDeriv_sub_nonneg` to a `have` +
`rw` block.
Bonus: factor out `private lineMap_eq_add_smul_sub` helper.
0 commit comments