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

Re: If A=B & (A contains C), why mizar doesn't infer (B contains C)




Josef Urban wrote:

> There is practically no sense in having fictitious variables in loci (I
> can think of a very hypothetical case, when e.g. the type "Element of X"
> is needed, but we don't care at all about X (it is fictitious)).
> But once we have them, why not handle them the same way as superfluous
> variables in redefinitions, or at least warn the user (or both)?

Actually the Result Type (the Mother Ttype in the case of a mode) IS a part of
the definition. When we implemented the "commutativity" condition Grzegorz
almost immediately found the inconsistency, because the Result Type was not
checked. His example:

definition let a,b be set;
  mode First of a,b means
:D: it = a;
   existence;
end;

definition let a,b be set;
 func a ? b -> First of a,b means
  not contradiction;
 correctness;
 commutativity;
end;

then form "obvious "
1 ? 0 = 0 ? 1
one could infer
0=1

Of course now it is checked.

What to do with fictitious loci? I believe we need a revision program that
removes them. But what to do when fictitious loci are visible. Look to the
example:

definition
let C be non empty set;
let h,g be Membership_Func of C;
let A be FuzzySet of C,h;
let B be FuzzySet of C,g;
pred A=B means
:: FUZZY_1:def 3
for c being Element of C holds h.c = g.c;
end;

What you propose to with this?

> I think the real problem is understanding hidden variables. It is a nice
> feature to have them, and not to have to mention all of the "implicit
> context" in the notation, but it may be confusing when one is learning
> Mizar. Maybe adding the possibility to view items in the inner cnstructors
> notation (e.g. as in Grzegorz's Encyclopedia) would help this.
>

I am so accustomed to them ... BTW Lego has them, too. Has not?


Greetings,
Andrzej