I really appreciate others' willingness to summarize the videos by Hotz, e.g.:
https://www.youtube.com/watch?v=hKi9Q3S1Nsg
Below are my comments on those summaries, in the hope that we can learn
about potential improvements:
On Sat, 21 Dec 2019 21:16:08 -0800 (PST), "'ookami' via Metamath" <
meta...@googlegroups.com> wrote:
> I followed this video up to 2:00:00, and had an editor open to scribble
> down some notes while I was watching. Here are the results. Please note,
> these are impressions made on the fly, and perhaps not well thought over.
>
> 1. Metamath hype: Why on earth is someone like George Hotz interested in
> Metamath at all? There seems to be a hype around, judging from his first
> words.
Well, that's cool. I obviously think Metamath is interesting as well :-).
And while he has complaints, it's hard to think of anything you can't complain
about, and his GitHub repo ends up saying some positive things about Metamath.
Specifically,
https://github.com/geohot/twitchcoq
says in its README:
"Reimplementing a subset of Coq in Python.
Just kidding, Coq is too complex.
We implemented metamath instead.
It (slowly) verifies
set.mm as of 11/3/2019
Ideally, Coq and friends should be rewritten in metamath. It's really the future, just wish it looked better. But omg, this is the proper stack for formal math, "formalism" is alive and well and is the truth in philosophy."
> 2. Cryptic labels: He is ranting while faced with theorem names on the HTML
> page of sqr2irr. No clue whatsoever what they mean. Compares this to more
> explicit names found in competing products, and in program code in
> general. I think there is indeed headroom for improvement here. Maybe a
> pop up showing an explanation while hovering over a name alleviates the
> situation.
Huh? There *is* a pop up showing an explanation when hovering over a name,
in both the GIF and Unicode versions. Try it out! Just go here:
http://us.metamath.org/mpegif/sqr2irr.html
and hover over any of the theorem names; you'll see the first sentence of the theorem
comment displayed. For example, step 5 uses breq2 ; just put your
mouse over that and it displays "Equality theorem for a binary relation..."
I do agree that the pop-ups are not very discoverable (if you don't know they
are there, it's not obvious to try it out). Also, hover doesn't work on most
mobile devices (touch screens generally can't hover), and mobile devices are
the most common way to view HTML pages (though they CAN detect a click-down).
POTENTIAL IMPROVEMENT:
Maybe there'd be a way to the hover information more discoverable
AND modify things so it's invokable in mobile devices (say by onclick).
The underlying Metamath language doesn't require short names, it's simply a
convention in
set.mm,
iset.mm, and many others.
We do have naming conventions, but it's fair to say that the names aren't too obvious.
I'd be fine with longer names, though I don't know if others would be.
In a few cases we have short names that perhaps could be a little longer, e.g.,
"sqr" is currently short for "square root" in
set.mm, but that is arguably
ambiguous with "squre"; we could use "sqrt" instead.
If we want names to be much easier to read for newcomers, though, I think
the obvious way would be to insert separators between the named parts.
The obvious separator is "_", so we could rename "sqr2irr" into "sqrt_2_irr".
We could even spell things out more fully, e.g., "squareroot_2_irrational".
Metamath tools won't have any problem with that, and compression tool
like zip will compress that to a similar size, though of course the
expanded file would be a lot bigger.
I don't know if we *should* have longer names in
set.mm and friends,
but I think it's worth exploring.
> 3. No directories, just a global scope. Yes, this is a drawback in my
> eyes, too. But this is not an easy task as it seems at first sight. If
> you take this idea seriously, i.e. topics are finally independent, you end
> up with a need for a linker infrastructure. Compare to compiler.
I'm sympathetic to this complaint. Indeed, when we discussed the
"usage is discouraged" I recommended more information to provide
information hiding. I don't think it's complicated to do, and I think it'd
could be a good idea, though of course the devil's in the details.
> 4. Not conforming to standards. At various occasions he struggles with
> details just because they do not meet his expectations. Syntax for example
Can you be more specific? "Not what I expect" doesn't mean it's bad.
> 5. He somehow got lost in the gory technical details of strict proof syntax
> and verification. But the core idea of a Metamath proof is applying
> patterns to symbol strings. He seems not always be aware of this 'road
> map'. I remember when I first looked into Metamath I was not in the least
> interested in details like how variables are defined. In fact, I was not
> concerned with program details at all. I was satisfied to know how to
> replay a proof by hand. Once I learned the top level formalism, I easily
> could imagine a stack like structure for some automatic verification.
Not sure what we can do to help there.
> 6 Human interface of the Metamath program. Tries out common commands at
> random, does not use the help feature. No GUI.
I prefer mmj2's GUI over Metamath.exe for proofs, so no argument there :-).
But of course, you can use one of several tools for writing proofs.
> 7. He feels at ease when he detects the formal syntax description of the
> Metamath language,and elaborates on implementing it in a Python parser.
> Here he is on firm grounds and starts exploring Metamath. Unfortunately,
> this distracts him from the core idea, in my eyes, see 5.
That's cool. Though there's already a parser and verifier in Python, I wonder
why he didn't start there:
https://github.com/david-a-wheeler/mmverify.py
--- David A. Wheeler