Zulip Chat Archive
Stream: maths
Topic: algebra on subtypes
Patrick Massot (Jul 19 2018 at 09:57):
@Johan Commelin Simon has been working for us, and Mario promptly merged. You can update mathlib to at least c2f54ad03 and try to understand how to use the magic in https://gist.github.com/PatrickMassot/8afef3917a917300cf31c1396a895705
Johan Commelin (Jul 19 2018 at 11:04):
Looks interesting! I'm updating (-;
Johan Commelin (Jul 19 2018 at 11:11):
I really like where this is going! You give it the data (zero, addition, ...) and for the properties (assoc, comm, ...) you just tell Lean: look, follow your nose and you'll get there.
Patrick Massot (Jul 19 2018 at 11:18):
Indeed. This now really looks like what you would wrote on paper: explain why operations make sense and then write either nothing or "algebraic axioms follow from the parent structure axiom"
Patrick Massot (Jul 19 2018 at 11:18):
And this will be reused a lot. Each algebraic structure need subtype instances
Patrick Massot (Jul 19 2018 at 11:20):
Note that refine_struct
is an ongoing long-term collaboration effort using all available strengths: I do the whining and Simon does the coding. It started with the pi_instance
tactic back in February I think
Johan Commelin (Jul 19 2018 at 11:24):
Ok, so here are some explicit kudos to @Simon Hudon :thumbs_up: :tada: :octopus: :cake: :hammer_and_wrench: :muscle:
Johan Commelin (Jul 19 2018 at 11:27):
I do wonder, in how far is this overlapping with Scott's tactics? I don't fully understand what his obviously
does, but it is also related to deriving obvious results from fields in structures and such, right?
Mario Carneiro (Jul 19 2018 at 11:29):
obviously
is one of several "hammer" style tactics by scott
Mario Carneiro (Jul 19 2018 at 11:29):
i.e. "throw every automation we have at the problem until it buckles"
Mario Carneiro (Jul 19 2018 at 11:30):
I don't think refine_struct
does anything like this
Johan Commelin (Jul 19 2018 at 11:31):
Agreed, but vice versa? Would most of these goals buckle under Thor's Scott's hammer?
Patrick Massot (Jul 19 2018 at 11:33):
No, refine_struct
by itself carefully understand and name what Lean wants to be proved. Then specialized automation like https://github.com/leanprover/mathlib/blob/master/algebra/pi_instances.lean#L16 or https://gist.github.com/PatrickMassot/8afef3917a917300cf31c1396a895705#file-subtypes-lean-L9 take over.
Johan Commelin (Jul 19 2018 at 11:34):
Since Lean supports unicode, I think we really should have a tactic called Mjölnir.
Kevin Buzzard (Jul 19 2018 at 11:38):
You should propose a unicode character for that thing
Patrick Massot (Jul 19 2018 at 11:39):
Let's ask google how to spell that in runes
Patrick Massot (Jul 19 2018 at 11:39):
And then we can email Jasmin and give him one more incentive to bring us that hammer thing
Patrick Massot (Jul 19 2018 at 11:40):
Looks like this could be our winner: https://static1.fjcdn.com/comments/Spelled+the+right+way+_47df3c7a85289a0912599c30d252cf08.jpg
Kenny Lau (Jul 19 2018 at 11:42):
Let's ask google how to spell that in runes
ᛗᛃᛟᛚᚾᛁᚱ
Mario Carneiro (Jul 19 2018 at 11:42):
def ᛗᛃᛟᛚᚾᛁᚱ := by ᛗᛃᛟᛚᚾᛁᚱ
Patrick Massot (Jul 19 2018 at 11:43):
Too bad: I tried meta def ᛗᛃᛟᛚᚾᛁᚱ : tactic unit := sorry
but Lean complains invalid declaration, identifier expected
Patrick Massot (Jul 19 2018 at 11:44):
It seems we'll need some help from @Sebastian Ullrich
Mario Carneiro (Jul 19 2018 at 11:44):
meta def «ᛗᛃᛟᛚᚾᛁᚱ» : tactic unit := sorry
Sean Leather (Jul 19 2018 at 11:45):
Guillemets: how appropriate.
Mario Carneiro (Jul 19 2018 at 11:45):
problem solved:
meta def «ᛗᛃᛟᛚᚾᛁᚱ» : tactic unit := sorry notation `ᛗᛃᛟᛚᚾᛁᚱ` := «ᛗᛃᛟᛚᚾᛁᚱ» example : true := by ᛗᛃᛟᛚᚾᛁᚱ
Patrick Massot (Jul 19 2018 at 11:46):
This works! We're almost set. It only remains to whine long enough for someone to unsorry this
Mario Carneiro (Jul 19 2018 at 11:47):
obviously meta def «ᛗᛃᛟᛚᚾᛁᚱ» : tactic unit := by ᛗᛃᛟᛚᚾᛁᚱ
Johan Commelin (Jul 19 2018 at 11:47):
I like your use of "obviously"
Patrick Massot (Jul 19 2018 at 11:48):
We shouldn't forget the PR to https://github.com/leanprover/vscode-lean/blob/master/translations.json
Last updated: Dec 20 2023 at 11:08 UTC