Skip to content

Tracking issue for differential geometry elaborators #30503

@grunweg

Description

@grunweg

#27021 added a first version of custom elaborators in differential geometry for reducing boilerplate and verbosity. This PR tracks missing features for them.

For the T% elaborators (which expands to TotalSpace.mk' calls):

Basic differentiability elaborators

General aspects of all differentiability elaborators

  • support coercions ([Merged by Bors] - feat: support coercions in the differential geometry elaborators #30307)
  • better errors in the CMDiff elaborator if n is simply forgotten (right now, this is just a parse error)
  • helpful trace nodes, including better nesting
  • more newcomer-friendly error messages: suggest the expanded form of the syntax, with any found models filled in. Perhaps suggest missing cases in these elaborators (when appropriate).
  • diagnose why the IsImmersionAt elaborators fail in a different namespace: see feat: add custom elaborators for immersions #30504
  • what's their desired scope: can they be made to assume no imports, and be imported and used in literally the files defining their concepts? or perhaps, not in those but all files depending on them? (that could be nice, never having to wonder about that)

Infer the model with corners in all currently known cases

#30357 contains all or many of the current in-flight changes, and golfs as much of mathlib as possible using them.
Inspecting the remaining unsolved cases closely could turn up further bugs or missing features.

Add corresponding delaborators

Evolution mode, transforming the library

  • allow adding a new elaborator/inferring a new model by writing some short meta code/using an attribute or so in the file defining the instance. This requires using an environment extension (but could make working with this much nicer; a downstream project could define a new instance, but also support finding the model).
  • can we get rid of having to write elaborators for each new definition? speculative idea: could there be a tactic find_model M, and then for any definition requiring a model, make that parameter I := by find_model M?
  • extend fun_prop to ContMDiff, and use find_model to power finding the model with corners for intermediate manifolds.

Some of these will be part of @scholzhannah's master's thesis --- talk to me if you would like to work on this, so we can avoid doing things twice.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions