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

[mizar] Re: puzzling errors



Adam Naumowicz <adamn@math.uwb.edu.pl> writes:

> On Sun, 11 Mar 2007, Jesse Alama wrote:
>
>> In the article I'm working on, the formula
>>
>>  bounding-0-circuit-space(p) is Subspace of 0-circuit-space(p)
>>
>> is flagged with *101 ("Unknown mode") underneath the use of Subspace.
>> At the stage where this formula occurs in my article, the term
>> bounding-0-circuit-space is just a VectSpStr over F2 (the field {0,1}
>> with the usual operations).  I'm trying to establish that it has type
>> VectSp of F2 by proving and then appealing to
>>
>> for G being Field,
>>    U being VectSp of G,
>>    X being non empty Subset of the carrier of U,
>>    f being BinOp of X,
>>    l being Function of [:the carrier of G,X:],X,
>>    z being Element of X
>>  st f = (the add of U)||X &
>>     l = (the lmult of U)|[:the carrier of G,X:] &
>>     z = the Zero of U
>>  holds VectSpStr (# X, f, z, l #) is Subspace of U;
>>
>> What surprises me is that this formula is flagged only with *4; it is
>> not flagged with *101.  That suggests that the last formula
>>
>>  VectSpStr (# X, f, z, l #) is Subspace of U
>>
>> is well-formed (in the sense that the use of Subspace there isn't
>> flagged with *101).  Why is my theorem about Subspaces not flagged
>> with *101 but my claim about bounding-0-circuit-space(p) is flagged
>> with that error?
>
> I guess the term '0-circuit-space(p)' is the culprit here - it seems its
> type doesn't widen to 'Vectsp of F', where F is some field.

You're right -- it turns out that 0-circuit-space(p) didn't have the
right type.  But there's a little twist in this story.

I proved earlier in my article that the term 0-circuit-space(p) has
type VectSp of F2, and F2 has type Field.  But what's required for
formulas of the form

  X is Subspace of Y

is that Y has type

(*)  non empty Abelian add-associative right_zeroed right_complementable VectSp-like VectSpStr of GF

where GF has type

  non empty Abelian add-associative right_zeroed right_complementable associative distributive left_unital doubleLoopStr.

(This comes from VECTSP_4.)  I have a registration

(**) registration let p be polyhedron;
  cluster 0-circuit-space(p) -> VectSp of F2;
  coherence by <some theorem>;
end;

So 0-circuit-space(p) has type VectSp of F2.  But, to my surprise, it
didn't automatically get the adjectives in (*).  By adding a new
registration

(***) registration let p be polyhedron;
  cluster 0-circuit-space(p) -> non empty Abelian add-associative right_zeroed right_complementable VectSp-like;
  coherence by <some theorem>;
end;

the *101 error I described goes away.  This surprises me because the
mode VectSp of F is expandable; I thought that any term of type VectSp
of F automatically got all the adjectives in (*).  This is reinforced
by the failure of the coherence of registration (***) to go through
when I omit the reference to <some theorem>, even though (**) occurs
before (***).  Is this a feature or a bug?

Jesse

-- 
Jesse Alama (alama@stanford.edu)
*116: Invalid "qua" (http://www.mizar.org)