[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: [mizar] Re: Urelements?
2012/3/13 <trybulec@math.uwb.edu.pl>:
> Just for the record, we know that strict structures are equal, if they
> fields
> are equal.
>
> The question set/element arose a couple of months ago in completely
> different context. The sentence
>
> 1 in 1-sorted(#A#);
>
> is grammatically correct, but as you wrote we know nothing about its logical
> value. Actually, if somebody writes
>
> 1 in 1-sorted(#A#)
>
> then he probably uses the overloaded definition
>
> let S be 1-sorted;
> let x be set;
> pred x in S means
> :: STRUCT_0:def 5
> x in the carrier of S;
>
> That is a general phenomenon. It is simple for expandable type because they
> are expanded, so we freely use such overloading. In the case of predicates,
> attributes and functors situation is different, because such definition as
>
> let S be 1-sorted;
> func id S -> Function of S,S equals
> :: STRUCT_0:def 4
> id the carrier of S;
>
> or the "membership" defined above, will cause necessity to refer to them.
>
> The general rule is: if a locus in a definition is really a set (it is
> treated as set), the when we substitute 1-sorted structure for it we get
> something undefined, so it is reasonable to overload it taking substituting
> not a structure but its carrier instead. Intuitively we know what it means
> that
> 'a locus is "really" a set'. In the membership
>
> let x,X be set;
> pred x in X;
>
> X is "really" a set, not so x. So a coercion was proposed:
>
> if locus is 'really' a set, and somebody attempted to substitute a 1-sorted
> S for it, then let Mizar coerce it to 'the carrier of S'.
>
> We either need a definition of "real" set, or allow to specify it by hand.
> If we distinguish 'set' and 'element', Mizar will know when to use the
> coercion.
Why not use the type info that you already have? If a
functor/predicate takes a structural argument, use it. If not, use the
structure's carrier.
It might be better to have a general syntactic mechanism ("use t(X)
instead of X if X has some type/shape in context c") for this than an
ad-hoc implementation for structures. One advantage would be that you
could choose to use them or not in particular articles.
Best,
Josef
>
>
>
> Regards,
> Andrzej
>
>
>
>
>
>
> Cytowanie Jesse Alama <jesse.alama@gmail.com>:
>
>
>> As for structures, the status quo seems to be that structures are in
>> fact sets, but we don't know any of their elements (or, at least no
>> membership statement is obvious for the Mizar checker) and thus
>> (accepting extensionality as globally valid) we don't know their
>> identities:
>>
>> {} in 1-sorted (# {} #)
>> ::> *4
>> ::> 4: This inference is not accepted
>>
>> not {} in 1-sorted (# {} #)
>> ::> *4
>> ::> 4: This inference is not accepted
>>
>> 1-sorted (# 1 #) = 1-sorted (# 2 #);
>> ::> *4
>>
>> This seems fine to me as an approximation of the idea that they are
>> urelements. A stricter approach would be to say reject as malformed
>> a membership statement whose right-hand side is a structure:
>>
>> {} in 1-sorted (# {} #)
>> ::> *143,321
>> ::> 143: No implicit qualification
>> ::> 321: Predicate symbol or "is" expected
>>
>