[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: [mizar] Why do Mizar types have to be non-empty?
Freek Wiedijk wrote:
> >BTW. Are you sure that your 'normal form' is a type, not an attribute?
>
> I guess "normal" is an attribute, while "normal form" is a
> type. It's like "natural number": "natural" is an attribute,
> but "natural number" is a type.
>
Right, I was sloppy. But what you really define is an attribute and the
"Normal_form" is expandable mode. Am I right?
>
> I want to be able to say "reserve n for Normal_form of R;"
> (where "R" is some kind of reduction relation") and then
> later "consider n such that ..."
>
You may use a permissive definition, say
definition let R be redunction-relation such that
Z: R has_normal_forms;
mode Normal_form of R means
it is_normal_form;
existence by Z;
end;
> See <http://www.cs.kun.nl/~freek/notes/newman.ps.gz> for a
> proof where this seemed the most natural way to do things.
> (In that particular example I gave "R" the attribute
> "nf_inhabited", just to get around this.)
That's OK. But then you cannot use it for an arbitrary reduction relation.I
it hard to decide, in many cases, which solution is better. I used the
similar approach, that I proposed above, then I got something like
NATTRA_1:def 3, def 8:
reserve A,B for Category, F1,F2 for Functor of A,B;
let A,B,F1,F2;
assume F1 is_transformable_to F2;
mode transformation of F1,F2 -> Function of the Objects of A, the
Morphisms of B means
for a being Object of A holds it.a is Morphism of F1.a,F2.a;
and
let A,B,F1,F2;
assume F1 is_naturally_transformable_to F2;
mode natural_transformation of F1,F2 -> transformation of F1,F2 means
for a,b being Object of A st Hom(a,b) <> {}
for f being Morphism of a,b holds it.b*F1.f = F2.f*it.a;
A bit boring, introducing and working with these predicates, but I got a
quite flexible language.
Regards,
Andrzej