Zulip Chat Archive
Stream: new members
Topic: defining a class
Heather Macbeth (Jul 18 2020 at 23:30):
I seem to have set up a class in a bad way, or perhaps am using it in the wrong way. I cannot get access to the information in the class hypothesis without an extra-line workaround. Toy example (error is "invalid field notation, function 'sevenish.seven' does not have explicit argument with type (sevenish ...)":
import algebra.group_power
class sevenish (G : Type*) [group G] : Prop :=
(seven : ∀ (g : G), g ^ 7 = 1)
example (G : Type*) [group G] [h : sevenish G] (g : G) : g ^ 14 = 1 :=
begin
have h1 := h.seven g,
-- error
end
example (G : Type*) [group G] [h : sevenish G] (g : G) : g ^ 14 = 1 :=
begin
have h1 := h.seven,
have h2 := h1 g,
-- works, can continue with the hypothesis `g ^ 7 = 1`
end
Here is the real example, btw.
Adam Topaz (Jul 18 2020 at 23:51):
I think sevenish.seven g
should work if you don't name the instance with h.
Adam Topaz (Jul 18 2020 at 23:51):
But I'm not near a computer.
Heather Macbeth (Jul 19 2020 at 00:08):
Yes, thank you!
Bryan Gin-ge Chen (Jul 19 2020 at 00:09):
I'm surprised that h.seven
doesn't work.
Adam Topaz (Jul 19 2020 at 00:15):
There's some protection around fields of instances right? For example, you can see what happens when you try to do cases h
. I wonder if this is why it doesn't work.
Adam Topaz (Jul 19 2020 at 00:36):
Presumably h.seven
would work if you use (h : sevenish G)
instead of [...]
Adam Topaz (Jul 19 2020 at 01:30):
scratch that. h.seven
doesn't work even if you use (h : ...)
.
Notification Bot (Jul 19 2020 at 05:03):
This topic was moved by Scott Morrison to #general > defining a class
Last updated: Dec 20 2023 at 11:08 UTC