-
Notifications
You must be signed in to change notification settings - Fork 720
Open
Description
Example due to @robbertkrebbers:
Class Foo (n : nat) := {}.
Module foo.
Global Instance foo_S n : Foo n -> Foo (S n) := {}.
(* fails immediately *)
Goal Foo 100. Fail apply _. Abort.
End foo.
Module bar.
Include foo.
(* takes forever *)
Goal Foo 100. Timeout 10 apply _. Abort.
End bar.
The expected behavior is that Include brings names and other things like notations into scope, but doesn't duplicate typeclass hints. But instead we get duplicate hints which leads to backtracking which makes that failing TC search take exponential time.
With its current behavior, Include is unfortunately entirely unusable for any typeclass-using development.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels