Encyclopedia Cost Cost Convexity Jlog Strict Convex On
ARTICLE 3 claims 3 theorems
Cost Convexity Jlog Strict Convex On
The framework's cost function has a bowl-shaped graph, and that curvature is what makes a unique solution possible.
The shape of the cost curve
A function is strictly convex when the line segment between any two points on its graph lies strictly above the graph itself. The Recognition Science framework's central cost function, written Jcost(x) = ½(x + x⁻¹) - 1, has exactly this bowl shape on the positive numbers. Its graph bends upward everywhere, with no flat stretches and no wobbles. The framework proves this in its machine-checked library of formal theorems, where the declaration Jlog_strictConvexOn records the result. The proof works by changing variables: write x as e^t, so the cost becomes cosh t - 1, and the hyperbolic cosine is strictly convex because its second derivative is itself, always positive.
Strict convexity is not a decorative property. A strictly convex function has at most one minimum, and for this cost function the minimum sits at x = 1, where the cost is zero. That single minimum is what lets the framework's uniqueness theorem T5 select one cost function among all candidates. Without strict convexity, the functional equation that forces the cost could admit multiple solutions, and the whole derivation would branch. The curvature is the guarantee that the ledger's cost has one unambiguous shape.
The classical picture behind this is older than the framework. The function ½(x + x⁻¹) is the arithmetic mean of a number and its reciprocal, and its convexity on the positive reals is a standard fact in real analysis. The framework's contribution is to show that this particular convex function, not some other one, is forced by the five conditions of reciprocal symmetry, zero cost at unity, composition law, calibration, and continuity. The strict convexity is a lemma in that proof, a step that makes the uniqueness argument work.
What the declaration does not claim is just as important as what it proves. It does not claim that Jcost is convex on all real numbers; the function is undefined at zero and the convexity statement is restricted to positive inputs. It does not claim that strict convexity alone identifies the cost function; many strictly convex functions exist, and the uniqueness comes from the full set of conditions, not from the bowl shape by itself. It does not claim anything about the physical interpretation of the cost, only about its mathematical properties.
THEOREM Jlog_strictConvexOn · IndisputableMonolith/Cost/Convexity.lean
/-- Strict convexity of `Jlog` on `ℝ`. -/
theorem Jlog_strictConvexOn : StrictConvexOn ℝ univ Jlog := by
-- Jlog = cosh - 1, and cosh is strictly convex
-- Subtracting a constant preserves strict convexity
have h : Jlog = fun t => Real.cosh t - 1 := by ext t; exact Jlog_eq_cosh_sub_one t
rw [h]
exact strictConvexOn_cosh.add_const (-1)
THEOREM Jcost_strictConvexOn_pos · IndisputableMonolith/Cost/Convexity.lean
/-- Strict convexity of `Jcost` on `(0, ∞)`. -/
theorem Jcost_strictConvexOn_pos : StrictConvexOn ℝ (Ioi (0 : ℝ)) Jcost := by
-- A function is strictly convex if its derivative is strictly increasing
apply strictConvexOn_of_deriv2_pos (convex_Ioi 0)
· -- Continuity on (0, ∞)
unfold Jcost
apply ContinuousOn.sub
· apply ContinuousOn.div_const
apply ContinuousOn.add continuousOn_id
exact continuousOn_inv₀.mono (fun x hx => ne_of_gt hx)
· exact continuousOn_const
· -- Positive second derivative on interior
intro x hx
rw [interior_Ioi] at hx
-- deriv^[2] Jcost x = x⁻³ > 0
show 0 < deriv^[2] Jcost x
rw [Function.iterate_succ, Function.iterate_one, Function.comp_apply]
-- In a neighborhood of x, deriv Jcost = JcostDeriv
have h_event : ∀ᶠ y in nhds x, deriv Jcost y = JcostDeriv y := by
have h_mem : Ioi (0 : ℝ) ∈ nhds x := Ioi_mem_nhds hx
filter_upwards [h_mem] with y hy using deriv_Jcost hy
have h_deriv2 : deriv (deriv Jcost) x = deriv JcostDeriv x := Filter.EventuallyEq.deriv_eq h_event
rw [h_deriv2, deriv_JcostDeriv hx]
unfold JcostDeriv'
-- x ^ (-3) > 0 for x > 0
have hx_pos : 0 < x := hx
exact zpow_pos hx_pos (-3)
THEOREM deriv2_Jcost · IndisputableMonolith/Cost/Convexity.lean
/-- Second derivative of Jcost at x > 0: J''(x) = x⁻³ -/
lemma deriv2_Jcost {x : ℝ} (hx : 0 < x) :
deriv (deriv Jcost) x = x ^ (-3 : ℤ) := by
have h_event : ∀ᶠ y in nhds x, deriv Jcost y = JcostDeriv y := by
have h_mem : Set.Ioi (0 : ℝ) ∈ nhds x := Ioi_mem_nhds hx
filter_upwards [h_mem] with y hy using deriv_Jcost hy
have h_deriv2 : deriv (deriv Jcost) x = deriv JcostDeriv x :=
Filter.EventuallyEq.deriv_eq h_event
rw [h_deriv2, deriv_JcostDeriv hx]
rfl
What this page does not claim
Jcost is not claimed to be convex on all real numbers, only on the positive reals. Strict convexity alone does not identify the cost function; the full set of five conditions is needed. The declaration makes no claim about the physical meaning of the cost function.
Verify this page
Every tagged claim above names its theorem. To check one yourself rather than trust this page, elaborate the source module with Lean 4 and audit its axiom basis:
$ lake env lean IndisputableMonolith/Cost/Convexity.lean
expected axiom basis: [propext, Classical.choice, Quot.sound] (the Lean kernel's standard three; no RS-specific axioms)
A page whose claims cannot be reproduced this way does not ship. In production, every anchor links to the exact declaration in the public source release, and this block carries the build receipt for the page itself.
Derived articles
This page is generated by a question-recursion engine: the questions its answers raise become the next pages. The current agenda, with open targets marked red:
- How does strict convexity interact with the composition law to force the unique cost function?
- What pathological solutions to the functional equation exist if convexity is dropped?
- Does the cost function's convexity have a direct interpretation in terms of recognition events?
- How does the proof of uniqueness T5 use the strict convexity lemma in its argument?
MACHINE LAYER · GROUNDED CLAIM TABLE · CLICK TO EXPAND
THEOREM Jlog_strictConvexOn · IndisputableMonolith/Cost/Convexity.lean
/-- Strict convexity of `Jlog` on `ℝ`. -/ theorem Jlog_strictConvexOn : StrictConvexOn ℝ univ Jlog := by -- Jlog = cosh - 1, and cosh is strictly convex -- Subtracting a constant preserves strict convexity have h : Jlog = fun t => Real.cosh t - 1 := by ext t; exact Jlog_eq_cosh_sub_one t rw [h] exact strictConvexOn_cosh.add_const (-1)Jlog(t) = cosh t - 1 is strictly convex on the real line. Jlog_strictConvexOn · IndisputableMonolith/Cost/Convexity.leanTHEOREM Jcost_strictConvexOn_pos · IndisputableMonolith/Cost/Convexity.lean
/-- Strict convexity of `Jcost` on `(0, ∞)`. -/ theorem Jcost_strictConvexOn_pos : StrictConvexOn ℝ (Ioi (0 : ℝ)) Jcost := by -- A function is strictly convex if its derivative is strictly increasing apply strictConvexOn_of_deriv2_pos (convex_Ioi 0) · -- Continuity on (0, ∞) unfold Jcost apply ContinuousOn.sub · apply ContinuousOn.div_const apply ContinuousOn.add continuousOn_id exact continuousOn_inv₀.mono (fun x hx => ne_of_gt hx) · exact continuousOn_const · -- Positive second derivative on interior intro x hx rw [interior_Ioi] at hx -- deriv^[2] Jcost x = x⁻³ > 0 show 0 < deriv^[2] Jcost x rw [Function.iterate_succ, Function.iterate_one, Function.comp_apply] -- In a neighborhood of x, deriv Jcost = JcostDeriv have h_event : ∀ᶠ y in nhds x, deriv Jcost y = JcostDeriv y := by have h_mem : Ioi (0 : ℝ) ∈ nhds x := Ioi_mem_nhds hx filter_upwards [h_mem] with y hy using deriv_Jcost hy have h_deriv2 : deriv (deriv Jcost) x = deriv JcostDeriv x := Filter.EventuallyEq.deriv_eq h_event rw [h_deriv2, deriv_JcostDeriv hx] unfold JcostDeriv' -- x ^ (-3) > 0 for x > 0 have hx_pos : 0 < x := hx exact zpow_pos hx_pos (-3)Jcost(x) = ½(x + x⁻¹) - 1 is strictly convex on the positive reals. Jcost_strictConvexOn_pos · IndisputableMonolith/Cost/Convexity.leanTHEOREM deriv2_Jcost · IndisputableMonolith/Cost/Convexity.lean
/-- Second derivative of Jcost at x > 0: J''(x) = x⁻³ -/ lemma deriv2_Jcost {x : ℝ} (hx : 0 < x) : deriv (deriv Jcost) x = x ^ (-3 : ℤ) := by have h_event : ∀ᶠ y in nhds x, deriv Jcost y = JcostDeriv y := by have h_mem : Set.Ioi (0 : ℝ) ∈ nhds x := Ioi_mem_nhds hx filter_upwards [h_mem] with y hy using deriv_Jcost hy have h_deriv2 : deriv (deriv Jcost) x = deriv JcostDeriv x := Filter.EventuallyEq.deriv_eq h_event rw [h_deriv2, deriv_JcostDeriv hx] rflThe second derivative of Jcost at positive x is x⁻³. deriv2_Jcost · IndisputableMonolith/Cost/Convexity.lean