Hi Igor and all,

This looks very promising!

What I implemented is comparing two arrays of integers with some
performance improvements (counting parentheses is one of them). And
there is no guarantee that this algorithm will work fast for any
expressions.
I think this is exactly the way the Metamath C program is working,
including using parentheses for performance improvement
<https://github.com/metamath/metamath-exe/blob/f9a35b3155d6c1447a20f0e1717121341ff54eed/src/mmunif.c#L770>.


The resulting speed seems to be good enough!


Overall I was not active in Metamath during the second half of 2022, for
personal reasons. I hope I can be a more active member of the community
in the coming months!

Anyway I've been reading what's going on and I see many initiatives
going on around tooling; I think this is exactly what we need!

Best Regards, and all my wishes for 2023 to all Metamath enthusiasts!
_
Thierry


On 06/01/2023 19:17, Igor Ieskov wrote:
I fixed few bugs and moved my proof assistant to a new URL -
https://igorocky.github.io/mm-proof-assistant/demo/latest/index.html

This URL will always redirect to the latest version of the proof
assistant ( to
https://igorocky.github.io/mm-proof-assistant/demo/v*N*/index.html )

Best regards,

Igor


On Friday, January 6, 2023 at 1:14:14 AM UTC+1 Igor Ieskov wrote:

    Thanks Glauco!

    Best regards,

    Igor


    On Friday, January 6, 2023 at 1:07:57 AM UTC+1 Igor Ieskov wrote:

        Thanks Antony and David for your feedback!


        "Who's it targeted at?"

        At the moment I don’t have any particular long term plans for
        this project. I started it just out of curiosity, Metamath
        seemed very simple and I wanted to try to automate proofs.
        When I realized that I cannot achieve desired level of
        automation, I started watching what existing solutions can do.
        I liked how mmj2 works because it is also seemed simple but
        very practical. So I decided to check if I can do something
        similar. When I was able to repeat the proof from the mmj2
        tutorial I wrote this post. Now I am planning to work on two
        more major features - proving in bottom-up direction and proof
        explorer, some small UI improvements and writing more tests
        (the code is tough, I already found few bugs). When I complete
        these goals, probably, I will use this assistant to learn to
        create Metamath proofs myself. Editing code in a dedicated
        code editor is much more comfortable but it is difficult to
        implement, so I didn’t even choose between what kind of UI to
        implement. Simple HTML UI was the only option for me.


        "it might be good to provide a README.md (and a repository
        with a sensible name)"

        I moved the code to a new repository and provided a README
        file with instructions. Please let me know if there are any
        issues with running the project locally.

        The new repo -
        https://github.com/expln/metamath-proof-assistant
        <https://github.com/expln/metamath-proof-assistant>

        This project depends on @expln/utils npm module. This is my
        project too ( https://github.com/expln/rescript-utils
        <https://github.com/expln/rescript-utils> ) But this is not a
        usual library. This is just a set of useful functions which I
        collected in one place to reuse across my other projects. And
        version N+1 may be absolutely not compatible with version N :)


        "I'd like to see some reusable packages make their way into
        the npm repository so that this isn't such a huge mountain to
        climb."

        That’s a good idea. As for now I think it makes sense for me
        to implement remaining features and when the code (underlying
        data structures) become more stable, I will be able to create
        some API and publish it as an npm package. I also feel like I
        need to warn regarding the algorithm I use for unification. I
        read in the mmj2 documentation that mmj2 first creates syntax
        trees of expressions and then compares them to find possible
        substitutions (please correct me if I am wrong). As I
        understand this approach guaranties quick response for any
        expressions. But what I implemented is comparing two arrays of
        integers with some performance improvements (counting
        parentheses is one of them). And there is no guarantee that
        this algorithm will work fast for any expressions. So it may
        turn out that using my future library is not such a good
        decision :)


        "I notice that you don't have a license included - please add
        one!"

        I added MIT license. Thanks for pointing out to this!


        Best regards,

        Igor



        On Thursday, January 5, 2023 at 5:14:42 PM UTC+1 David A.
        Wheeler wrote:


            > On Jan 3, 2023, at 4:51 PM, Igor Ieskov
            <[email protected]> wrote:
            >
            > Hi all,
            >
            > I am developing a web-based proof assistant and would
            like to share current results. The proof assistant is
            written in ReScript programming language and React UI
            library. It runs completely in the browser. It uses the
            same approach for building proofs as mmj2 (but at the
            moment it doesn’t have all the features mmj2 has). I
            recorded a video (without verbal explanations) similar to
            one of the mmj2 tutorial videos in order to demonstrate
            its features. Any feedback is appreciated.
            >
            >
            >
            > The demo video (if it is not opening, try to download;
            and sorry for low quality of the video):
            >
            >
            
https://drive.google.com/file/d/1JCDffUXkb_J-TiA07aNwK9SBKyaukaA3/view?usp=share_link

            >
            >
            > The proof assistant:
            >
            >
            https://igorocky.github.io/mm-proof-assistant/demo/v1/index.html

            >
            >
            > The source code is stored in two repositories. And there
            is mess with it. I started writing it inside of another
            project, put some logic into a second repo. Because of
            that it is not easy to run it locally. But I am going to
            improve this soon.
            >
            >
            > The source code:
            >
            >
            
https://github.com/Igorocky/learn-js-react-app/tree/master/src/metamath

            >
            >
            https://github.com/Igorocky/js-common-functions/tree/master/src/main


            That's awesome!

            I notice that you don't have a license included - please
            add one!
            If you're going to release as open source software, then
            you need an OSS license.
            MIT is especially common:
            https://github.com/IQAndreas/markdown-licenses/blob/master/mit.md

            The Apache-2.0 and GPL-2.0+ licenses are also widely used.

            A way to "get started" with proofs without any
            installation steps at all has its appeal!

            Sadly, the mmj2 tool has become harder to install and
            maintain.
            One problem: it's in Java, but it calls out to JavaScript
            code, and the
            mechanism it uses for calling JavaScript has been dropped
            from more-recent versions of Java.
            Specifically, mmj2 uses Nashorn. My understanding is that
            Nashorn's intended replacement is GraalVM.
            I don't think this is *unsurmountable*.
            Mario looked into this briefly & expected that it wouldn't
            be hard to switch to GraalVM
            <https://github.com/digama0/mmj2/issues/7#issuecomment-428404641>,

            but no one has (as of yet) picked up this work.

            --- David A. Wheeler

--
You received this message because you are subscribed to the Google
Groups "Metamath" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/metamath/9aac3fc2-ea01-4bce-afab-7f08aa99be8en%40googlegroups.com
<https://groups.google.com/d/msgid/metamath/9aac3fc2-ea01-4bce-afab-7f08aa99be8en%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
You received this message because you are subscribed to the Google Groups 
"Metamath" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/metamath/97b6e515-9011-2985-7f12-5bcf04be507c%40gmx.net.

Reply via email to