Some eliminators (such as `False.rec`) have an explicit motive argument. The `elabAsElim` elaborator assumed that all motives are implicit. If the explicit motive argument is `_`, then it uses the elab-as-elim procedure, and otherwise it falls back to the standard app elaborator. Furthermore, if an explicit elaborator is not provided, it falls back to treating the elaborator as being implicit, which is convenient for writing `h.rec` rather than `h.rec _`. Rationale: for `False.rec`, this simulates it having an implicit motive, and also motives are generally not going to be available in the expected type. Closes #4347
9 lines
265 B
Text
9 lines
265 B
Text
universe u v
|
||
|
||
-- `#check` works
|
||
set_option pp.all true in
|
||
#check fun {α : Sort v} => PEmpty.rec (fun _ => α)
|
||
|
||
-- but `def` doesn't work
|
||
-- error: code generator does not support recursor 'PEmpty.rec' yet
|
||
def PEmpty.elim' {α : Sort v} := PEmpty.rec (fun _ => α)
|