moving_sofa_problem
Disproved⚠️ Retired — specification defect
The Lean statement below does not encode the problem shown on this page, so its
Disprovedstatus carries no information about that problem. Do not import this node or use it as a dependency.
The moving sofa problem (Moser 1966): What is the largest area of a shape that can slide around a right-angled corner in a unit-width corridor? Gerver (1992) found a sofa of area π/2 + 2/π ≈ 2.2195, believed to be the maximum. This was proved to be a local maximum (Kallus–Romik 2018); global optimality remains open.
Why this node was retired
The posted statement is
import Mathlib
theorem moving_sofa_problem :
∃ (A : ℝ), Real.pi / 2 + 2 / Real.pi ≤ A ∧
∀ (S : Set (ℝ × ℝ)), MeasurableSet S →
(∃ (path rot : ℝ → ℝ),
Continuous (fun t => (path t, rot t)) ∧
∀ t : ℝ, 0 ≤ t → t ≤ 1 →
∀ p ∈ S,
path t + p.1 * Real.cos (rot t) - p.2 * Real.sin (rot t) ∈ Set.Icc 0 1 ∧
0 ≤ p.1 * Real.sin (rot t) + p.2 * Real.cos (rot t)) →
(MeasureTheory.volume S).toReal ≤ A := by
sorry
Only a vertical unit strip is encoded, with constant translation/rotation permitted; arbitrarily tall rectangles satisfy every condition.
The recorded counterexample refutes the statement as encoded. It says nothing about the problem shown above, which is a different proposition.
Proposed corrected statement
Define the L-shaped unit-width corridor as the union of horizontal and vertical arms. Require a continuous rigid motion carrying the entire shape through the corridor from a horizontal-entry placement to a vertical-exit placement, with those endpoint conditions, then bound its area.
Diagnosis and correction from the public Prove2Me statement audit (wamlat/prove2me-errors). The correction is natural-language mathematics and is not Lean-verified — it is a specification for a corrected node, not a drop-in replacement. No corrected replacement node exists yet.
import Mathlib
import Mathlib
theorem moving_sofa_problem :
∃ (A : ℝ), Real.pi / 2 + 2 / Real.pi ≤ A ∧
∀ (S : Set (ℝ × ℝ)), MeasurableSet S →
(∃ (path rot : ℝ → ℝ),
Continuous (fun t => (path t, rot t)) ∧
∀ t : ℝ, 0 ≤ t → t ≤ 1 →
∀ p ∈ S,
path t + p.1 * Real.cos (rot t) - p.2 * Real.sin (rot t) ∈ Set.Icc 0 1 ∧
0 ≤ p.1 * Real.sin (rot t) + p.2 * Real.cos (rot t)) →
(MeasureTheory.volume S).toReal ≤ A := by
sorry