Zulip Chat Archive
Stream: maths
Topic: make an explicit group
Kevin Buzzard (Jul 14 2020 at 21:28):
import tactic
inductive mu2
| p1 : mu2
| m1 : mu2
namespace mu2
def mul : mu2 → mu2 → mu2
| p1 p1 := p1
| p1 m1 := m1
| m1 p1 := m1
| m1 m1 := p1
def one : mu2 := p1
def inv : mu2 → mu2 := id
instance : group mu2 := dec_trivial -- doesn't work yet
end mu2
Is it easy to get this working automatically somehow?
Reid Barton (Jul 14 2020 at 21:48):
import tactic
@[derive decidable_eq] inductive mu2
| p1 : mu2
| m1 : mu2
instance : fintype mu2 := ⟨⟨[mu2.p1, mu2.m1], by simp⟩, λ x, by cases x; simp⟩
namespace mu2
def mul : mu2 → mu2 → mu2
| p1 p1 := p1
| p1 m1 := m1
| m1 p1 := m1
| m1 m1 := p1
def one : mu2 := p1
def inv : mu2 → mu2 := id
instance : group mu2 :=
by refine_struct { one := one, mul := mul, inv := inv }; exact dec_trivial
end mu2
Kevin Buzzard (Jul 14 2020 at 22:06):
Thanks!
Kevin Buzzard (Jul 14 2020 at 22:07):
I did all of that myself apart from the fintype, which I also tried to derive
. I don't understand why we have to derive
decidable equality, whereas if we want an extensionality lemma we just [ext]
Kevin Buzzard (Jul 14 2020 at 22:08):
Isn't there a way to derive the fintype instance?
Kyle Miller (Jul 14 2020 at 22:11):
Adding to that question, is there a list of all the derivable instances somewhere?
Reid Barton (Jul 14 2020 at 22:15):
Kevin Buzzard said:
Isn't there a way to derive the fintype instance?
You'd think so but afaik it isn't implemented.
Last updated: Dec 20 2023 at 11:08 UTC