Zulip Chat Archive

Stream: lean4

Topic: Elaboration Strategies


François G. Dorais (Jan 08 2021 at 12:28):

Closed issue #201 suggests that special elaboration strategies like Lean 3's elab_as_eliminator are no longer useful in Lean 4. What has changed?

François G. Dorais (Jan 09 2021 at 14:09):

I've been working on porting some low-level Lean 3 code which makes strong use of term mode and custom recursors. Here is a trick to work around the absence of elab_as_eliminator in case someone else is struggling with similar issues.

It looks like *.recOn and friends are always elaborated just like any other terms but in Lean 4 we can specify individual optional arguments by name. The motive in *.recOn and friends seems to always be called motive (rather than a nondescript name like C in Lean 3), so *.recOn (motive := fun _ => _) ... often works to simulate what elab_as_eliminator would do. Sometimes fun _ => _ is not enough and a bit more of the motive needs to be specified but it's generally a good starting point.

In tactic mode, it appears that the induction and cases tactics have gained some additional powers that may make elaboration strategies obsolete but I haven't explored this yet.


Last updated: Dec 20 2023 at 11:08 UTC