Zulip Chat Archive
Stream: general
Topic: rext
Reid Barton (Sep 07 2018 at 10:41):
How about rext
= ext
+ rintros
? Is this going too far?
Reid Barton (Sep 07 2018 at 10:41):
Or ext
+ rcases
depending on your point of view
Simon Hudon (Sep 07 2018 at 18:49):
That shouldn't be too hard. I thought of doing it before but I had to change the import structure to do it so in the end I didn't bother
Simon Hudon (Sep 09 2018 at 01:59):
@Reid Barton I just pushed this branch: https://travis-ci.org/leanprover/mathlib/builds/426239546 please let me know if it does what you wanted
Scott Morrison (Sep 09 2018 at 02:13):
Looks like there are problems in
/home/travis/build/leanprover/mathlib/tactic/pi_instances.lean:25:14: error: type mismatch at application cons x term x has type name but is expected to have type rcases_patt
Simon Hudon (Sep 09 2018 at 02:15):
I prefer to think of it as undocumented feature :D
Scott Morrison (Sep 09 2018 at 02:17):
:-)
Simon Hudon (Sep 09 2018 at 03:47):
The documentation of that feature is getting complicated, I'll just remove it
Reid Barton (Sep 09 2018 at 11:38):
Simon I've just finished building mathlib with your patch; about to try it on my example (although it will require some preparatory work).
Simon Hudon (Sep 09 2018 at 11:39):
:fingers_crossed:
Reid Barton (Sep 09 2018 at 11:48):
I see ext
no longer applied propext
to my goal, is that intentional?
Reid Barton (Sep 09 2018 at 11:49):
I had something like (\lam a b, f a b) = (\lam a b, g a b)
and I want to intro a
and b
and get the goal f a b \iff g a b
-- where f a b
and g a b
are propositions
Reid Barton (Sep 09 2018 at 11:50):
anyways, it worked! I changed
ext a₁ a₂, rcases a₁ with ⟨⟨i'₁, f₁⟩, j₁⟩, rcases a₂ with ⟨⟨i'₂, f₂⟩, j₂⟩,
to
ext ⟨⟨i'₁, f₁⟩, j₁⟩ ⟨⟨i'₂, f₂⟩, j₂⟩,
Simon Hudon (Sep 09 2018 at 11:52):
It is not intentional. Can you find where propext
is labelled with extentionality
?
Reid Barton (Sep 09 2018 at 11:53):
It... doesn't appear to be so marked anywhere that I can find
Reid Barton (Sep 09 2018 at 11:54):
Is there a way to tell ext
to trace what it is doing?
Johannes Hölzl (Sep 09 2018 at 11:57):
rext
is very nice!
Reid Barton (Sep 09 2018 at 11:57):
Wait, maybe it never used to apply propext
? I might have been confused because set.ext
is very similar.
Simon Hudon (Sep 09 2018 at 12:01):
I think that's probably it
Simon Hudon (Sep 09 2018 at 12:02):
We can add it though
Simon Hudon (Sep 09 2018 at 12:02):
Check what happens if you add attribute [extensionality] propext
before your proof.
Reid Barton (Sep 09 2018 at 12:03):
only constants and Pi types are supported: Prop
Reid Barton (Sep 09 2018 at 12:05):
Aha, I understand why the behavior changed.
Before, it applied funext
once and then, by chance, it happened to apply set.ext
which is funext
plus propext
.
Now, it (correctly) prefers to apply funext
twice and then it gets stuck.
Simon Hudon (Sep 09 2018 at 12:08):
:face_palm: oh dear! I was discussing this with Mario and saying that each type we care about is a named constant ... except for pi types. And now, the type of Prop is also not names so I have to think about making more exceptions
Reid Barton (Sep 09 2018 at 12:12):
expr.sort
, I guess?
Reid Barton (Sep 09 2018 at 12:12):
Also don't forget to implement univalence for equalities between types
Simon Hudon (Sep 09 2018 at 12:14):
Now then next exception should be easier to add. Can you send me your example so that I can try it out?
Reid Barton (Sep 09 2018 at 12:15):
I think I included one in the github issue (my real one has some dependencies)
Reid Barton (Sep 09 2018 at 12:15):
But I can also provide it
Simon Hudon (Sep 09 2018 at 12:18):
Or a link to the issue please
Reid Barton (Sep 09 2018 at 12:18):
https://gist.github.com/rwbarton/1966db9e4ba470f2a5865f5086776f84, it should compile against your branch
Reid Barton (Sep 09 2018 at 12:18):
https://github.com/leanprover/mathlib/issues/246
Reid Barton (Sep 09 2018 at 12:18):
import data.set example {α : Type} (f g : α → α → Prop) : f = g := begin ext a b, -- ⊢ b ∈ f a ↔ b ∈ g a end
Reid Barton (Sep 09 2018 at 12:19):
My real example is no more interesting than this as far as the propext issue is concerned--it's just a test case for the rext
feature.
Simon Hudon (Sep 09 2018 at 12:34):
Cool, that works now. I'll push it and then get some sleep :)
Reid Barton (Sep 09 2018 at 12:36):
(Wait aren't we in the same time zone...)
Simon Hudon (Sep 09 2018 at 12:37):
Are you on the east coast of the US?
Simon Hudon (Sep 09 2018 at 12:37):
But to answer your surprise, when I program, time flies and I forget to do all kinds of stuff
Simon Hudon (Sep 09 2018 at 12:38):
... including sleeping
Reid Barton (Sep 09 2018 at 12:40):
Yes. But still have not adjusted from being in Europe and have been up for 4 hours today...
Simon Hudon (Sep 09 2018 at 12:41):
Were you in the UK? You seem to be driving on the wrong side of the road ... the road being a stand-in for the night, and the wrong side is being awake after 4 rather than awake until 4 :D
Simon Hudon (Sep 09 2018 at 12:42):
Yeah, my metaphors are not that enlightening ...
Reid Barton (Sep 09 2018 at 12:42):
So we seem to be off by a full 12 hours from each other, yes
Simon Hudon (Sep 09 2018 at 12:44):
For today at least
Last updated: Dec 20 2023 at 11:08 UTC