This modification is relevant for fixing regressions on recent changes to the auto implicit behavior for inductive families. The following declarations are now accepted: ```lean inductive HasType : Fin n → Vector Ty n → Ty → Type where | stop : HasType 0 (ty :: ctx) ty | pop : HasType k ctx ty → HasType k.succ (u :: ctx) ty inductive Sublist : List α → List α → Prop | slnil : Sublist [] [] | cons l₁ l₂ a : Sublist l₁ l₂ → Sublist l₁ (a :: l₂) | cons2 l₁ l₂ a : Sublist l₁ l₂ → Sublist (a :: l₁) (a :: l₂) inductive Lst : Type u → Type u | nil : Lst α | cons : α → Lst α → Lst α ``` TODO: universe inference for `inductive` should be improved. The current approach is not good enough when we have auto implicits. TODO: allow implicit fixed indices that do not depend on indices that cannot be moved to become parameters.
16 lines
480 B
Text
16 lines
480 B
Text
inductive sublist : List α → List α → Prop
|
||
| slnil : sublist [] []
|
||
| cons l₁ l₂ a : sublist l₁ l₂ → sublist l₁ (a :: l₂)
|
||
| cons2 l₁ l₂ a : sublist l₁ l₂ → sublist (a :: l₁) (a :: l₂)
|
||
|
||
#print sublist
|
||
|
||
inductive Foo : List α → Type _ -- Make sure we don't need to use `_` or can use `u`
|
||
| mk₁ : Foo []
|
||
| mk₂ : (a : α) → Foo as → Foo (a::as)
|
||
|
||
inductive Bla : Foo as → Type _
|
||
| mk₁ : Bla Foo.mk₁
|
||
|
||
#print Foo
|
||
#print Bla
|