Re: Question about environments

Artur Kornilowicz <[email protected]>
Newsgroups gmane.comp.mathematics.mizar
Message-ID <Pine.GSO.4.61.1001080806560.16663@math>
Hello,

thank you very much for your email.


On Thu, 7 Jan 2010, James Smith wrote:

> Good evening,
>
> I've been working on Mizar on and off for a couple of weeks now and I've
> made some progress with getting environments right, and learned a little
> about the MML library along the way. I've been trying to get the environment
> right for the PYTHTRIP article (I'm following Freek Wiedijk's tutorial) and
> I have a problem which boils down to the following:
>
> +++
>
> environ
>
> vocabularies ARYTM, ORDINAL2;
> notations SUBSET_1, ORDINAL1;
> constructors SUBSET_1, ORDINAL1;
> registrations ORDINAL1;
> theorems ORDINAL1;
> requirements SUBSET, BOOLE;
>
> begin
>
> reserve n for Element of omega;
> n is natural number;            :: This works because of the cluster...
>                                 ::
>                                 ::  -> natural Element of omega
>                                 ::
>                                 ::  ...in ORDINAL1, the coherence of which
> is
>                                 ::  proved by ORDINAL1:def 13 (which
> defines
>                                 ::  'natural' as meaning 'in omega',
> essentially
>                                 ::  equivalent to 'Element of omega' with
> the
>                                 ::  requirements SUBSET, BOOLE).
>
> n in omega;                     :: Again this works because of the
> requirements.
>
> reserve k for natural number;
>
> k in omega by ORDINAL1:def 13;  :: This works
> k in omega;                     :: But this doesn't. Adding ORDINAL1 to the
>                                 ::  definitions directive makes no
> difference.
> ::>       *4
>
> +++
>
> I would like the assertion 'k in omega' to work without explicit reference
> to the relevant definition. Is this possible?



There is no way to have it working without explicit reference, but it's 
possible to introduce, so called, casting functor

definition
   let k be natural number;
   func Down(k) -> Element of omega equals
   k;
   coherence by ORDINAL1:def 13;
end;

and to use 'Down(k)' instead of 'k' whenever it is required.

Statements

Down(k) in omega;
Down(k) = k;

are obvious.

One more remark: in such cases I would rather use symbol 'NAT' instead of 
'omega'. 'NAT' is introduced in numbers.miz.


Best regards
Artur





> Previously when I've come across what appear to be insurmountable problems
> I've copied the offending lines to the end of existing MML articles and then
> wittled down the environments, but when I copy and paste this assertion into
> PYTHTRIP, for example, and try to verify it, I get the same *4 error. This
> makes me suspect that the assertion can never be accepted without explicit
> reference to the definition. Is this true?
>
> Many thanks in advance for any help on this.
>
> Kind regards,
>
> James
>
> http://www.mygarble.com/


==========================================================================

Artur Kornilowicz                          e-mail: [email protected]

Dept. of Programming and Formal Methods    http://math.uwb.edu.pl/~arturk/
Institute of Informatics                   tel. +48 (85) 745-7662
University of Bialystok                    fax. +48 (85) 745-7662
Sosnowa 64, 15-887 Bialystok, Poland
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.