Introduce `set_bind` and associated lemmas.
The problem is that
set_solver
performssetoid_subst
and since theProper
forset_bind
is not there it takes a while forsetoid_subst
to fail. And then swapping the two lemmas is not easy either, since theProper
makes use of this lemma.I tried to see if
solve_proper
can prove theProper
, but that fails.Can you maybe add this as a comment?
That makes sense, but there's a missing
Params
instance that we should add. If we're lucky,setoid_subst
will become fast.Indeed, before
Params
, EDIT:Time set_solver
tells me:Finished transaction in 1.526 secs (1.508u,0.014s) (successful)
After
Params
, EDIT:Time set_solver
tells me:Finished transaction in 0.343 secs (0.342u,0.001s) (successful)
Edited by Paolo G. GiarrussoTime rewrite !elem_of_set_bind; set_solver.
still takes <= 0.05s. But dfrumin/coq-stdpp!1 (closed) has an alternative proposal with a few more revisions.
I just noticed we have two
Proper
instances with different arities here... Do stdpp/iris ever do that? dfrumin/coq-stdpp!1 (closed) addresses that too.
This should come with a
Params
instance.Looks like it should be
the number should be "total argument count - 2", since the
Proper
instance only enables setoid rewriting in the last 2 arguments.