Zulip Chat Archive
Stream: general
Topic: proving obvious instances pow_pos_iff
Amaury Hayat (Apr 07 2022 at 19:33):
Hi !
I have question concerning pow_pos_iff
: when I try to use it like this:
example (n a:ℕ)(h:n>0)(h₀: a>0): 0<a^n:=
begin
rw pow_pos_iff h,
end
it gives a subgoal asking me to prove no_zero_divisors nat
. Of course this is not very hard but it does not ask me to prove linear_ordered_comm_monoid_with_zero nat
which is also an instance of pow_pos_iff
. In fact in the nat framework it is the only rule that ever asked me to prove such obvious instances. Do you know if there is a logic behind it ?
Thanks a lot in advance !
Riccardo Brasca (Apr 07 2022 at 19:35):
I think apply_instance
will prove it, but it is strange it asks for it.
Patrick Massot (Apr 07 2022 at 19:39):
This is an elaboration issue, Lean looks for the type class before figuring the type of a
.
Patrick Massot (Apr 07 2022 at 19:39):
The proof term (pow_pos_iff h).mpr h₀
will be probably be ok
Amaury Hayat (Apr 07 2022 at 19:50):
Ok thanks a lot ! But isn't it strange then that it does not ask me to prove linear_ordered_comm_monoid_with_zero nat
? Thanks for the advice, apply (pow_pos_iff h).mpr h₀
works perfectly
Yaël Dillies (Apr 07 2022 at 19:56):
Bugs be buggy. And this one is probably not getting fixed because Lean 4 is just around the corner.
Amaury Hayat (Apr 07 2022 at 20:13):
Ok thanks ;)
Last updated: Dec 20 2023 at 11:08 UTC