I finally managed to export and proof-check in metamath the Mephistolus 
proof for 

|- ( ∨1c e. CC -> ( ∨3c e. NN0 -> ( ( 1 - ∨1c ) x. sum_ ∨2s e. ( 0 ... ∨3c ) ( 
∨1c ^ ∨2s ) ) = ( 1 + -u ( ∨1c ^ ( ∨3c + 1 ) ) ) ) )


To achieve that, I had to prove the following Mephistolus theorems in 
metamath : 

val Sum_CDI = tf("sum_ ∨1s e. ( ∨2c ... ∨3c ) ∨4c = sum_ ∨5s e. ( ( ∨2c + ∨6c ) 
... ( ∨3c + ∨6c ) ) ∨7c", "∨2c e. ZZ", "∨3c e. ZZ", "∨6c e. ZZ", "( ∨1s e. ( 
∨2c ... ∨3c ) -> ∨4c e. CC )", "( ∨1s = ( ∨5s - ∨6c ) -> ∨4c = ∨7c )", 
distinctRequirements = setOf("∨1s" to "∨0w", "∨1s" to  "∨5s", "∨2c" to "∨1s", 
"∨2c" to "∨5s", "∨3c" to  "∨1s", "∨3c" to "∨5s", "∨4c" to "∨5s", "∨5s" to 
"∨0w", "∨6c" to "∨1s", "∨6c" to  "∨5s", "∨7c" to "∨1s"))
val ApSumA = tf("sum_ ∨1s e. ( ∨2c ... ∨3c ) ∨4c = ( ∨5c + sum_ ∨1s e. ( ( ∨2c 
+ 1 ) ... ∨3c ) ∨4c )", "∨2c e. ZZ", "∨3c e. ( ZZ>= ` ∨2c )", "( ∨1s e. ( ∨2c 
... ∨3c ) -> ∨4c e. CC )", "( ∨1s = ∨2c -> ∨4c = ∨5c )")
val SumA_pA = tf("sum_ ∨1s e. ( ∨2c ... ∨3c ) ∨4c = ( sum_ ∨1s e. ( ∨2c ... ( 
∨3c - 1 ) ) ∨4c + ∨5c )", "∨2c e. ZZ", "∨3c e. ( ZZ>= ` ∨2c )", "( ∨1s e. ( ∨2c 
... ∨3c ) -> ∨4c e. CC )", "( ∨1s = ∨3c -> ∨4c = ∨5c )")
val Sum_CDV = th("( ∨0w -> sum_ ∨1s e. ∨2c ∨3c = sum_ ∨4s e. ∨2c ∨5c )", "F/_ 
∨4s ∨3c", "F/_ ∨1s ∨5c", "( ∨0w -> ( ∨1s = ∨4s -> ∨3c = ∨5c ) )", 
distinctRequirements = setOf("∨1s" to "∨4s", "∨2c" to "∨1s", "∨2c" to "∨4s"))


I only pulled it off, thanks to the enlighted help of the kind metamath 
experts, who gave many hints (thanks :) )

In the process, I learned a lot and Mephistolus has grown a lot

So, let's say that Milestone 5 has been reached (I previously set too far 
goals for Milestone 5, let's be more realistic)
And let's go onward towards Milestone 6 :)


Le lundi 4 novembre 2019 20:15:44 UTC+1, Olivier Binda a écrit :


I had to downgrade my requirements for reaching Milestone 5 as I am 
> entering harder country.
>
> Today I downloaded metamath, compiled it on linux and tried proof checking 
> Mephistolus proven theorems.
>
> I was successfull with 
>
> ${
>      eqEq.1 $e |- ( ph -> ( ps -> ( ka -> ( la <-> rh ) ) ) ) $.
>      eqEq.2 $e |- ( ph -> ( ps -> ( ka -> ( mu <-> si ) ) ) ) $.
>     $( (Contributed by Mephistolus, 4-Nov-2019.) $)
>     eqEq $p |- ( ph -> ( ps -> ( ka -> ( ( la <-> mu ) <-> ( rh <-> si ) ) 
> ) ) ) 
>      $= wph wps wa wka wla wmu wb wrh wsi wb wb wi wi wph wps wka wla wmu 
> wb wrh 
>       wsi wb wb wi wi wi wph wps wa wka wa wla wmu wb wrh wsi wb wb wi wph 
> wps 
>       wa wka wla wmu wb wrh wsi wb wb wi wi wph wps wa wka wa wla wrh wmu 
> wsi wph 
>       wps wa wka wa wla wrh wb wi wph wps wa wka wla wrh wb wi wi wph wps 
> wa 
>       wka wla wrh wb wi wi wph wps wka wla wrh wb wi wi wi eqEq.1 wph wps 
> wka wla 
>       wrh wb wi impexp mpbir wph wps wa wka wla wrh wb impexp mpbir wph 
> wps wa 
>       wka wa wmu wsi wb wi wph wps wa wka wmu wsi wb wi wi wph wps wa wka 
> wmu 
>       wsi wb wi wi wph wps wka wmu wsi wb wi wi wi eqEq.2 wph wps wka wmu 
> wsi wb 
>       wi impexp mpbir wph wps wa wka wmu wsi wb impexp mpbir bibi12d wph 
> wps wa 
>       wka wla wmu wb wrh wsi wb wb impexp mpbi wph wps wka wla wmu wb wrh 
> wsi 
>       wb wb wi impexp mpbi 
>  $.
>   $}
>
>
> I tried exporting proofs in the compress format, but it is too much a 
> bother (with floating hypotheses that don't appear in the labels + I got it 
> working at 90% before I realized that metamath can read uncompressed proofs 
> and compress them, 
> which is much easier to do. Besides, computing compressed proofs needs 
> quite a lot of computations, and processing uncompressed proofs is a lot 
> easier and faster for mephistolus...So, I gave up on compressed proofs.
>
> Now, I should be able to export Mephistolus proof easily to the set.mm 
> format and get them proofchecked by a battletested proof checker,in 
> addition to my own.
>
>
>
>
> Le vendredi 18 octobre 2019 11:21:25 UTC+2, Olivier Binda a écrit :
>>
>> I do a lot of cow boy coding and nothing is set in stone but : 
>>
>> 1) I would like to start looking into mm0 and building Mephistolus over 
>> mm0
>> (because at one point, I will want user to be able to add definitions of 
>> their own and I will need the added soundness, as well as the simpler 
>> parsing, and maybee other stuff that I don't understand yet)
>>
>> Also, by building mephistolus on mm and mm0, It'll become more generic 
>> and probably better (closer to true maths).
>>
>>
>> 2) I need to extend the capacities of Mephistolus
>> I couldn't export a few mephistolus theorems to metamath because the 
>> Mephistolus 4 features wre lacking (regarding location of expression in 
>> various sets, proving that some stuff is =/= 0 ). 
>> Exporting them to metamath will drive Mephistolus features developement
>>
>> Also, Mephistolus only supports a very limited set of operators as of now 
>> (->, <->, -., +, -, x, /, -u). I need to slowly add more operators (I have 
>> to rework the quickly hacked sum_ support I had, prod_, forall, exists...) 
>> to make Mephistolus more useful
>>
>> 3) Some core Statement api may still be improved
>>
>> a) I just realized today that I had to enable the user to apply a theorem 
>> to an equality like in 
>>
>> |- 2 < 3
>>
>> apply x |-> -u x to get
>>
>> |- -u 3 < -u 2
>>
>> We have all used this process so many times that we would miss it if it 
>> wasn't there... 
>> I just have to figure out a good way to bake it in
>>
>>
>> b) my current api (with .eq, .imp, .a .b .c ...) is quite nice to work 
>> with but I got another idea to make it more generic and simpler, I want to 
>> explore that
>>
>>
>> 4) making metamath theorems available in mephistolus 
>>
>> a) now that I have proved a lot of Mephistolus theorems in metamath, and 
>> that I know what I am doing, I should write a method to enhance most 
>> metamath theorems into mephistolus theorems.
>> I should be able to convert 10000+ metamath theorems into mephistolus to 
>> make them available (Mephistolus can, out of the box, use any metamath 
>> theorem but Mephistolus theorems are a lot better to work with because the 
>> Mephistolus api is designed to work with them)
>>
>> b) I should implement something that makes it easy for a user (not me) to 
>> select a mephistolus theorem
>>
>> For example, I don't want user to have to learn ids like "ltsubrpd" to be 
>> able to call |- ( ph -> ( A - B ) < A )
>>
>> Maybee something like select("a-b<a") where you can select a theorem by 
>> giving a utf8 string (that's right, NOT ASCII), with alternatives so ascii 
>> could still be an option
>> It doesn't have to be perfect as, later, if there are ambiguities, the 
>> api would suggest completions
>>
>> Later on, a database with powerfull full text search/indexing 
>> capabilities would be used (issue, find a library available in Native, JVM, 
>> browser that enable that. I have experience with  Janusgraph and Lucene on 
>> the JVM, but they are not multi platform (yet))
>> to help with that
>>
>>
>>
>> And that is already enough to make Milestone 5 a lot of work, let's end 
>> it here ^^;
>>
>

-- 
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/3bbb9d3c-a7a6-43b4-99dc-ed8b6c8675c8%40googlegroups.com.

Reply via email to