Re: mode definition/"the" question

Artur Kornilowicz <[email protected]>
Newsgroups gmane.comp.mathematics.mizar
Message-ID <Pine.SOL.4.64.1108261536390.23344@math>
On Thu, 25 Aug 2011, Jesse Alama wrote:

> Consider the vocabulary file
>
> ===== [ witness.voc ] =====
> MFOO1
> MFOO2
> ===========================
>
> and the article
>
> ===== [ witness.miz ] ===============================================
> environ
>
> vocabularies TARSKI, XBOOLE_0, WITNESS;
> notations TARSKI, XBOOLE_0;
> constructors TARSKI, XBOOLE_0;
> registrations XBOOLE_0;
> theorems TARSKI, XBOOLE_0;
>
> begin
>
> definition
> mode FOO1
> means :DefFOO1:
> ex y being set st it is empty & y is non empty;
> existence
> proof
>   A: the non empty set is non empty;
>   take the empty set;
>   thus thesis by A;
> end;
> end;
>
> definition
> mode FOO2
> means :DefFOO2:
> the FOO1 is empty & it is non empty;
> existence by DefFOO1;
> end;
>
> Lm1: the FOO1 is empty by DefFOO1;
> Lm2: the FOO1 is empty by DefFOO2;
> Lm3: ex x being set st the FOO1 is empty by DefFOO2;
> Lm4: ex x being set st the FOO1 is empty & x is non empty by DefFOO2;
> =====================================================================
>
> My puzzle is that the four theorems at the end are all flagged as *4.  I put 
> these statements in increasing level of surprisingness.  Any explanation for 
> why all of these are rejected by the checker?  (FWIW, I'm testing this on 
> mizar 7.12.01-4.166.1132, on darwin.)  I'm actually most interesed in why Lm2 
> is rejected, but all of these are a puzzle to me.
>
> Thanks,
>
> Jesse


Hi Jesse,

For every definition Mizar generates so called 'definitional theorem',
which in the case of FOO2 is

for IT being set holds IT is FOO2 iff
the FOO1 is empty & IT is non empty;

So, every reference to DefFOO2 is the reference to the above theorem.

Hence, having

Lm2: the FOO1 is empty by DefFOO2;

Mizar does not know how IT could be substituted - there is no term of type 
FOO2 around.

The solution is to add a reference to a statement with a variable of type 
FOO2, for example:

the FOO2 = the FOO2; then
Lm2: the FOO1 is empty by DefFOO2;

Other cases are similar.

Best regards
Artur
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.