Swapping the factors of exchanges the singular loci of and
ProvedCurveSymmetry.family_projective_critical_swapLet be an integer and let be arbitrary. For and , in let
the bihomogenization of , and let . Let be the set of points such that , viewed as a function on , vanishes at together with its differential (all four partial derivatives). This homogeneous Jacobian condition does not depend on the chosen representatives; it is the Jacobian criterion for the singular points of .
Then for every
In the proof of Lemma 4 one mixed boundary point of is treated from the other by exchanging and and conjugating the coefficients; this is that symmetry at the level of singular points. The formalization uses it in the classification of the singular points of and in the transport of singular points under anti-Möbius maps (Theorem 2).
Formalization Note: the condition is evaluated at chosen representatives in Projectivization ℂ (Fin 2 → ℂ), with the vanishing differential expressed by HasFDerivAt.
import Definitions.Def_CurveSymmetry_01_RealLoci import Definitions.Def_CurveSymmetry_02_FamilyBasics import Definitions.Def_CurveSymmetry_03_IsometriesAndCharts import Mathlib.Algebra.MvPolynomial.Nilpotent import Mathlib.Algebra.MvPolynomial.NoZeroDivisors import Mathlib.Algebra.MvPolynomial.PDeriv import Mathlib.Algebra.Polynomial.FieldDivision import Mathlib.Algebra.Polynomial.Reverse import Mathlib.Analysis.Calculus.FDeriv.Equiv import Mathlib.Analysis.Calculus.FDeriv.Mul import Mathlib.Analysis.Complex.Isometry import Mathlib.Analysis.Complex.OperatorNorm import Mathlib.Analysis.Complex.Polynomial.Basic import Mathlib.Analysis.Normed.Affine.MazurUlam import Mathlib.Data.Complex.Basic import Mathlib.FieldTheory.Separable import Mathlib.RingTheory.MvPolynomial.Homogeneous import Mathlib.RingTheory.MvPolynomial.IrreducibleQuadratic import Mathlib.RingTheory.Polynomial.Eisenstein.Criterion import Mathlib.RingTheory.Polynomial.GaussLemma import Mathlib.RingTheory.RootsOfUnity.Complex import Mathlib.RingTheory.RootsOfUnity.PrimitiveRoots import Mathlib.Tactic import Mathlib.Topology.Algebra.Module.FiniteDimension import Mathlib.Topology.Compactification.OnePoint.ProjectiveLine open CurveSymmetry set_option autoImplicit false
theorem CurveSymmetry.family_projective_critical_swap (m : ℕ) (α : ℂ)
(p : ProjectiveLine × ProjectiveLine) :
p.swap ∈ familyProjectiveCritical m α ↔ p ∈ familyProjectiveCritical m (star α) := by sorry