← Visual paper

HardnessBilevelUnconditional/Instances.lean

d1032f4c70da9b037605c2f444ce2450900e5a76 · GitHub

  1. /-
  2. Copyright: HardnessBilevel project.
  3. # Proved instances of the assumption classes A1, A2, A3
  4. The classes of `HardnessBilevel/Assumptions/Classes.lean` are inhabited here by the interface theorems of the
  5. `Semialgebraic` companion library (https://github.com/svaiter/Semialgebraic), which proves them over `ℝ` on top of
  6. TauCeti's real algebraic geometry:
  7. * A1 `HasSemialgebraicProjections` — `Semialgebraic.Interface.image_comp_inl` (Tarski–Seidenberg; TauCeti's
  8. cylindrical algebraic decomposition);
  9. * A2 `HasFinitenessTheorem` — `Semialgebraic.Interface.exists_eq_iUnion_iInter_nonneg` (finiteness theorem, through
  10. a weighted Łojasiewicz inequality);
  11. * A3 `HasGrowthBound` — `Semialgebraic.Interface.growth`.
  12. `Bilevel.IsSemialgebraic` and `TauCeti.IsSemialgebraic` have the same body, so each instance is the interface
  13. theorem itself, with no glue (`isSemialgebraic_iff_tauCeti` is `Iff.rfl`).
  14. These instances live in the separate library `HardnessBilevelUnconditional`; the core library `HardnessBilevel`
  15. declares no instance and keeps its binder-form statements.
  16. -/
  17. import HardnessBilevel.Assumptions.Classes
  18. import Semialgebraic.Interface.Finiteness
  19. import Semialgebraic.Interface.Growth
  20. import Semialgebraic.Interface.Projection
  21. namespace Bilevel
  22. /-- The semialgebraicity predicate of this library is definitionally TauCeti's, over `ℝ`. -/
  23. theorem isSemialgebraic_iff_tauCeti {ι : Type*} (s : Set (ι → ℝ)) :
  24. IsSemialgebraic s ↔ TauCeti.IsSemialgebraic s := Iff.rfl
  25. /-- A1 (Tarski–Seidenberg), proved. -/
  26. instance instHasSemialgebraicProjections : HasSemialgebraicProjections :=
  27. ⟨Semialgebraic.Interface.image_comp_inl⟩
  28. /-- A2 (finiteness theorem), proved. -/
  29. instance instHasFinitenessTheorem : HasFinitenessTheorem :=
  30. ⟨Semialgebraic.Interface.exists_eq_iUnion_iInter_nonneg⟩
  31. /-- A3 (growth bound), proved. -/
  32. instance instHasGrowthBound : HasGrowthBound :=
  33. ⟨Semialgebraic.Interface.growth⟩
  34. end Bilevel