[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: [mizar] Private DB



Hi Freek,

On Tue, 26 Sep 2006, Freek Wiedijk wrote:

Hi Adam,

Thanks for the very nice explanation of what happens to MML
when you sort things according to mml.lar!

Apparently, there are more than a hundred files that pose
problems, but it seems that in most cases they can be fixed
rather easily by using a different redefinition for expansion.

Sorry, but I don't understand this.  Can you give an example?

What I ment was that one may try to resolve some conflicts by 'qualifying' expressions to proper redefinitions. E.g. the first article (in mml.lar processing order) with errors is PARTFUN1, where the fix could look like that:

:: definition let X,Y,V,Z;
::   let f be PartFunc of X,Y; let g be PartFunc of V,Z;
::  redefine func g*f -> PartFunc of X,Z;
::   coherence
::    proof
::     dom f c= X & dom(g*f) c= dom f & rng g c= Z & rng(g*f) c= rng g
::       by Lm3,RELAT_1:44,45;
:: ::>    *4,4
::     then dom(g*f) c= X & rng(g*f) c= Z by XBOOLE_1:1;
::     hence g*f is PartFunc of X,Z by Lm3;
:: ::>       *51
::    end;
:: end;

definition let X,Y,V,Z;
  let f be PartFunc of X,Y; let g be PartFunc of V,Z;
 redefine func g*f -> PartFunc of X,Z;
  coherence
   proof
    dom f c= X & dom(g*f) c= dom g & rng g c= Z & rng(g*f) c= rng f
      by Lm3,RELAT_1:44,45;
    then dom(f*g) c= X & rng(f*g) c= Z by XBOOLE_1:1;
    hence f*g is PartFunc of X,Z by Lm3;
   end;
end;

Here, the situation is a bit more cryptic (compare 'redefine func g*f' and 'hence f*g') because of the fact that redefinitins are applied to original constructors (here Relation) while the statement uses the Function notation!

Another thing is that I should have rather put the results of verifying the database with sorted notations _and_ at the same time building the new database, so that the exported articles reflect these changes - what I showed previously was just simple verifier run over all articles without taking care of any resulting consequences.

Still, many errors seem to be the result of NAT_1/INT_1 order change. I guess in these cases, the order should be reversed by 'encapsulating' a prototype of Integers in a way similar to Reals. Otherwise, when we want to use attributes like 'natural' and 'integer' as much as possible, the functors like 'GCD' are very much conflict-prone.

Best,

Adam