Moving sofa: related mathematical developments #
Polygon.Foundations.Development002.Bounds.Foundations.Development003.Cap.Foundations.Development005.Sofa.Foundations.Development001.Cap.Foundations.Development006.Bounds.Foundations.Development004.Cap.Foundations.Development007.Area.Foundations.Development003.Bounds.Foundations.Development005.Bounds.Foundations.Development006.Motion.Foundations.Development002.Sofa.Foundations.Development002.
Moving sofa: related mathematical developments #
Polygon.Approximation.Polygon.CapWidthBound.Polygon.DiscreteCapData.Polygon.Height.Properties.Polygon.Nef.Slices.Polygon.Nef.Variation.LocalSlices.Polygon.Nef.Variation.Area.Polygon.Nef.Variation.Boundary.Polygon.Nef.Variation.Polygon.Nef.SignedVariation.Polygon.Height.WallVariation.Polygon.RightAngleGrid.Polygon.Translation.Polygon.Height.Reconstruction.Polygon.Height.PositiveIncrement.Contacts.Polygon.Height.PositiveIncrement.
Polygon / Approximation #
Membership in a polygon cap is given by the strip and selected support inequalities.
A polygon cap is the intersection of its selected support half-planes.
Polygon-cap approximation preserves support at every selected normal.
Polygon-cap approximation fixes caps with the prescribed normals.
An interior selected direction bounds the polygon cap, including at right angle.
A maximum polygon cap dominates every cap under the polygon area functional.
Polygon / Cap Width Bound #
Polygon / Discrete Cap Data #
The uniformly spaced interior directions for a right-angle polygonal approximation.
Equations
Instances For
The cap maximizes the polygonal functional on a uniform mesh with a power-of-two step count.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The two piecewise scalar functions used in the arm-length inequalities.
Equations
Instances For
Polygon / Height / Properties #
Polygon / Nef / Slices #
Convert normal and tangent coordinates into a point in the frame at angle a.
Equations
- MovingSofa.Nef.framePoint a x y = MovingSofa.rotationMap a !₂[x, y]
Instances For
The normal-normal coefficient for changing between two oriented frames.
Equations
Instances For
The tangent-normal coefficient for changing between two oriented frames.
Equations
Instances For
Solve the wall equation for the tangent coordinate at a fixed normal coordinate.
Equations
- MovingSofa.Nef.frameBoundaryValue a H x = (H.height - MovingSofa.Nef.frameNormalCoeff a H.angle * x) / MovingSofa.Nef.frameTangentCoeff a H.angle
Instances For
The wall bounds a Boolean cell’s slice from above in the selected frame.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The wall bounds a Boolean cell’s slice from below in the selected frame.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The affine wall functions imposing upper bounds on the slice.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The affine wall functions imposing lower bounds on the slice.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The minimum of all upper wall functions, capped by the truncation height R.
Equations
- MovingSofa.Nef.upperEnvelope a H P R x = List.foldr (fun (f : ℝ → ℝ) (r : ℝ) => min (f x) r) R (MovingSofa.Nef.upperBoundaryFunctions a H P)
Instances For
The maximum of all lower wall functions, bounded below by -R.
Equations
- MovingSofa.Nef.lowerEnvelope a H P R x = List.foldr (fun (f : ℝ → ℝ) (r : ℝ) => max (f x) r) (-R) (MovingSofa.Nef.lowerBoundaryFunctions a H P)
Instances For
The sum of absolute wall slopes, bounding the variation of slice envelopes.
Equations
- MovingSofa.Nef.slopeBound a H = ∑ j : Fin n, |MovingSofa.Nef.frameNormalCoeff a (H j).angle / MovingSofa.Nef.frameTangentCoeff a (H j).angle|
Instances For
The nonnegative difference between the truncated upper and lower slice envelopes.
Equations
- MovingSofa.Nef.cellSliceLength a H P R x = max (MovingSofa.Nef.upperEnvelope a H P R x - MovingSofa.Nef.lowerEnvelope a H P R x) 0
Instances For
The closed Boolean cell’s slice at a fixed normal coordinate, truncated to [-R, R].
Equations
- MovingSofa.Nef.closedCellSlice a H P R x = {y : ℝ | MovingSofa.Nef.framePoint a x y ∈ MovingSofa.Nef.closedBooleanCell H P} ∩ Set.Icc (-R) R
Instances For
Every wall parallel to the slice is satisfied at the selected normal coordinate.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The actual Boolean membership cell’s slice, truncated to [-R, R].
Equations
- MovingSofa.Nef.booleanCellSlice a H P R x = {y : ℝ | MovingSofa.Nef.framePoint a x y ∈ MovingSofa.Nef.booleanCell (fun (j : Fin n) => (H j).carrier) P} ∩ Set.Icc (-R) R
Instances For
No wall parallel to the slice has its boundary at the selected normal coordinate.
Equations
- MovingSofa.Nef.noParallelBoundaryAt a H x = ∀ (j : Fin n), MovingSofa.Nef.frameTangentCoeff a (H j).angle = 0 → MovingSofa.Nef.frameNormalCoeff a (H j).angle * x ≠ (H j).height
Instances For
The tangent coordinates at which the slice meets a wall boundary.
Equations
- MovingSofa.Nef.cellSliceBoundaryExceptions a H x = ⋃ (j : Fin n), {y : ℝ | inner ℝ (MovingSofa.Nef.framePoint a x y) (MovingSofa.normalVector (H j).angle) = (H j).height}
Instances For
The envelope slice length when parallel walls are feasible, and zero otherwise.
Equations
- MovingSofa.Nef.actualCellSliceLength a H P R x = if MovingSofa.Nef.parallelCellFeasible a H P x then MovingSofa.Nef.cellSliceLength a H P R x else 0
Instances For
The measurable equivalence between the Euclidean plane and a pair of real coordinates.
Equations
Instances For
Polygon / Nef / Variation / Local Slices #
Replace one wall by a closed upper-bound wall at auxiliary height M.
Equations
- MovingSofa.Nef.auxiliaryHalfPlaneFamily H i M = Function.update H i { angle := (H i).angle, height := M, upper := false, strict := false }
Instances For
The slice of the region where the selected Boolean wall is active, truncated to [-R, R].
Equations
- MovingSofa.Nef.activeRegionSlice a E H i R x = {y : ℝ | MovingSofa.Nef.framePoint a x y ∈ MovingSofa.Nef.activeBooleanRegion E H i} ∩ Set.Icc (-R) R
Instances For
Sum the feasible slice lengths over patterns where the selected wall is active.
Equations
- MovingSofa.Nef.activeSliceLength a E H i R x = ∑ P ∈ MovingSofa.Nef.activeBooleanPatterns E i, MovingSofa.Nef.actualCellSliceLength a H P R x
Instances For
Sum slice lengths while freezing all parallel-wall feasibility decisions at the reference height.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Polygon / Nef / Variation / Area #
Polygon / Nef / Variation / Boundary #
The truncated slice of the Boolean set’s frontier along a selected wall boundary.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Polygon / Nef / Variation #
Polygon / Nef / Signed Variation #
Quadratic area variation when the moved half-plane is a lower constraint.
Signed quadratic area variation for either orientation of a simple Nef wall.
Polygon / Height / Wall Variation #
Angles in a polygon angle domain have distinct classes modulo a full turn.
The niche with every lower wall shifted by one is the height-defined niche.
Quadratic area variation for any wall in a polygon-height niche presentation.
The cap with every lower endpoint wall shifted by one is the height-defined cap.
Quadratic area variation for one upper wall of a polygon-height cap.
Quadratic area variation for one lower endpoint wall of a polygon-height cap.
Simultaneous endpoint-wall variation is the sum of the two independent variations.
Polygon / Right Angle Grid #
Directions in the right-angle grid are positive integer multiples of its step size.
No grid direction lies strictly between the predecessor of a grid point and the point.
No grid direction lies strictly between a grid point and its successor.
Every interior grid direction stays at least one step from both endpoints.
The two lower normals of a right-angle polygon cap coincide at 3π/2.
The predecessor of a right-angle grid direction is zero or again a grid direction.
The successor of a right-angle grid direction is the terminal angle or a grid direction.
Polygon / Translation #
Polygon / Height / Reconstruction #
Attainment of both endpoint strip bounds reconstructs a translated polygon cap.
Polygon / Height / Positive Increment / Contacts #
A sufficiently small interior height increase yields a translated polygon cap.
A sufficiently small endpoint height increase preserves both unit widths.
Polygon / Height / Positive Increment #
Moving sofa: related mathematical developments #
Bounds.LegComputation.Bounds.Lower.Profile.Bounds.NicheLimits.
Bounds / Leg Computation #
The face line of a convex body meets the two adjacent inner-wall half-planes in a set whose
length is at most 2 tan(δ/2) less the face length.
Bounds / Lower / Profile #
Iteratively improve the nonnegative arm lower bound by taking the maximum with its integral update.
Equations
- One or more equations did not get rendered due to their size.
- MovingSofa.armLowerBoundSequence 0 = { toFun := fun (x : ↑(Set.Icc 0 (Real.pi / 2))) => 0, continuous_toFun := MovingSofa.armLowerBoundSequence._proof_1 }
Instances For
The continuous profile max (1 - x) c on the quarter-turn interval.
Equations
Instances For
Bounds / Niche Limits #
Support values converge under Hausdorff convergence of caps.
Every niche point belongs to all sufficiently fine uniform polygon niches.
Moving sofa: related mathematical developments #
Cap.NicheLimit.Cap.Reflection.
Cap / Niche Limit #
Containment of uniformly approximating polygon niches persists in the cap limit.
Cap / Reflection #
Reflect about the line through the origin and the distinguished parallelogram point.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Reflect every interior wall direction about half the terminal angle.
Equations
- MovingSofa.reflectedAngleSet Θ = { angle := Θ.angle, angle_pos := ⋯, angle_le := ⋯, directions := Finset.image (fun (t : ℝ) => Θ.angle - t) Θ.directions, nonempty := ⋯, interior := ⋯ }
Instances For
Moving sofa: related mathematical developments #
Sofa.Support.Sofa.Cap.
Sofa / Support #
Sofa / Cap #
Moving sofa: related mathematical developments #
Cap.Connectedness.Cap.MirrorFeatures.
Cap / Connectedness #
Cap / Mirror Features #
Moving sofa: related mathematical developments #
Bounds.Arm.Geometry.
Bounds / Arm / Geometry #
Moving sofa: related mathematical developments #
Cap.Regularity.Cap.Tail.Contacts.Cap.Tail.Bodies.Cap.Tail.Extension.Cap.Tail.Separation.
Cap / Regularity #
The corner coordinates of a right-angle cap in its moving frame.
The injectivity condition supplies the support derivatives with their strict signs.
Endpoint contacts for the canonical cap tails #
The right and left canonical tails of a special cap are cut out of the cap by the upper half-planes of its inner supporting walls. This file supplies the contact points that make the tail support values meet their endpoint bounds.
The mathematical content is the frame-free lemma
exists_mem_inner_eq_sub_one_of_deriv_signs: let s be a nonempty compact convex planar set
lying above the horizontal axis with h_s(pi/2) = 1, whose support function h is
differentiable on the two quarter-turn families with the strict corner velocity signs
h'(t) - h(t + pi/2) + 1 < 0 and h'(t + pi/2) + h(t) - 1 > 0 for t in (0, pi/2). Then
every interior cut line {q | inner q (normalVector t) = h(t) - 1} meets s in a point that
stays above the whole cut family on [t, pi/2].
The proof selects the transverse maximum p of the first cut section and studies the
deficiency g(t) = h(t) - inner p (normalVector t). Wherever g(t) = 1, the chord joining the
two frame contacts has nonpositive signed area (planeCrossProduct_nonpos_of_isMaxOn), which
forces g to decrease strictly at the cut angle; at a first return of g to level one the
same determinant is strictly positive, a contradiction.
The left tail follows from the same lemma applied to reflectedBody (pi/2) K, whose support
derivatives are the negated right-hand ones read backwards; see exists_left_tail_contact.
This argument replaces the step in the paper's proof of lem:right-left-body which infers that the
upper boundary avoids the niche; that inference fails for the stated class of caps (P46 in
NOTES.md).
Lowering a right-angle cap point vertically to the base line keeps it inside the cap.
The two frame contacts at an interior angle, with their derivative coordinates.
A transverse chord through a maximizing section point has nonpositive signed area.
Endpoint contact for the upper cut family of a strip body with strict corner velocities.
The lowered horizontal extremes of a right-angle cap lie under all right and left cuts.
The right cut line meets the cap, below the whole right cut family.
The left cut line meets the cap, below the whole left cut family.
Cap / Tail / Bodies #
The distinguished inner wall, upper half-plane, fan point and corner on one side.
The distinguished inner supporting wall.
The upper half-plane selected at the distinguished wall.
- fanPoint : Point
The corresponding endpoint of the cap fan.
- corner : Point
The inner hallway corner at the distinguished angle.
Instances For
The right and left cap geometry at the two distinguished Gerver angles.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The right distinguished fan point is the right wedge endpoint at the right Gerver angle.
The right distinguished corner is the inner corner at the right Gerver angle.
The left distinguished fan point is the left wedge endpoint at the left Gerver angle.
The left distinguished corner is the inner corner at the left Gerver angle.
Canonical tails are convex bodies and satisfy all support and endpoint-line identities.
The inner corner's normal support coordinate is the cap's support value less one.
The inner corner's tangent support coordinate is the quarter-turned support value less one.
A point whose displacement from the inner corner has negative coordinates in the rotating
frame at time t lies in the open inward quadrant at that time.
Cap / Tail / Extension #
The canonical tail sets give an admissible cap-tail triple with exactly these carriers.
Cap / Tail / Separation #
Moving sofa: related mathematical developments #
Area.NicheDecomposition.
Area / Niche Decomposition #
Moving sofa: related mathematical developments #
Bounds.MonotonicityIntervals.Bounds.WedgeEndpoints.
Monotonicity intervals for the distinguished cap sides #
cap_tail_monotonicity_intervals records that on the right interval
(φ, π/2] the inner corner has left the distinguished right half-plane, and
that inside that half-plane the inner quadrant is cut out by the single inner
wall b(t); symmetrically on [0, π/2 - φ) for the left side. Intersecting
with the fan gives the two wedge forms.
On any subinterval of [0, π/2] the inner corner of a special cap has strictly decreasing
horizontal coordinate: the injectivity condition makes its horizontal derivative negative.
Bounds / Wedge Endpoints #
Bounds / Upper / Q #
The cap-tail upper-bound functional Q assembled from cap area, tail arcs and endpoint segments.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Moving sofa: related mathematical developments #
Motion.Monotonization.
Motion / Monotonization #
Moving sofa: related mathematical developments #
Sofa.Area.