Zulip Chat Archive
Stream: new members
Topic: symmetric function
Vaibhav Karve (Mar 22 2020 at 15:11):
I have the following setup:
example : (A B : Sort) (rel : A -> A -> B) : Prop := forall a b : A, f a b = f b a
In the special case of B
being Prop
, I know that I can restate the above as symmetric f
. Is there a corresponding general version of symmetric
that will work for any B
?
I also discovered that for some reason, library search doesn't work:
example : (A : Sort) : (A -> A -> Prop) -> Prop := by suggest -- doesn't work example : (A : Sort) : (A -> A -> Prop) -> Prop := by library_search -- doesn't work
Mario Carneiro (Mar 22 2020 at 15:14):
That looks like commutative
Mario Carneiro (Mar 22 2020 at 15:15):
but that might also be special cased to B = A
Mario Carneiro (Mar 22 2020 at 15:17):
I think that whole section of core is due for an update
Vaibhav Karve (Mar 22 2020 at 15:30):
Yes, commutative
is close but not quite right. I definitely want B ≠ A
. Any idea why the suggest
doesn't work?
Kevin Buzzard (Mar 22 2020 at 16:00):
What is Sort
by the way? Isn't it defeq to Prop
or something?
Mario Carneiro (Mar 22 2020 at 16:17):
it is Prop
Mario Carneiro (Mar 22 2020 at 16:17):
#check Sort -- Prop : Type
Mario Carneiro (Mar 22 2020 at 16:18):
Technically Prop
is a notation for Sort
:
notation `Prop` := Sort 0
Kevin Buzzard (Mar 22 2020 at 16:37):
@Vaibhav Karve are you aware of this? You say "in the special case of B
being Prop
" but Prop
is not allowed as a value for B
in what you say, strictly speaking.
Vaibhav Karve (Mar 22 2020 at 18:46):
Yes, Kevin, I was aware of this. In my attempt to write a MWE, I went too far. I was actually looking for a simple analogue of symmetric
that would work for Sort u
, not just Sort
.
Mario Carneiro (Mar 22 2020 at 18:54):
You can just write Sort*
if you don't want to declare the universe - or even nothing at all, that is:
example (A B) (rel : A -> A -> B) : Prop := forall a b : A, f a b = f b a
This is my favorite way to write theorems. It's compact, maximally general and there is nothing to mess up
Vaibhav Karve (Mar 22 2020 at 19:14):
Thanks for teaching me this new trick. I did not know that omitting the type is the same as writing Sort*
(provided there aren't other type-inferences, ofcourse).
Last updated: Dec 20 2023 at 11:08 UTC