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

Re: [mizar] Once more: empty types



Jesse Alama wrote:
I would love MIZAR even more if types were allowed to be empty because
it would make some formalizations more natural.

What, though, are the costs?  I suppose that the developers would have
to edit a good deal of code.  But, putting that issue aside, what would
be the logical costs (if any) of allowing non-empty types?  Would there
be some familiar logical steps that wouldn't "go through" if types were
allowed to be empty?


The main cost when you allow possibly empty types is that you have no types :-)

I am serious. The only reasonable treatment of p.e. types is to eliminate them. That is the idea of soft types. They became syntactic sugar. A bit more. You still can use them to reconstruct hidden arguments and maybe to mimic other processing like widening.


To be more specific: no existential tautology. Particularly the inference rule

                   for x holds P[x]
                   _________________     (1)

                    ex x st P[x]

does not hold. (I assume that x is reserved for a p.e. type T).
With soft type it means

                    for x holds x is_T implies P[x]
                  ___________________________________

                      ex x st x is_T & P[x]

so obviously we need

                ex x st x is_T
to apply it.

The inference rule (1) is a consequence of two rules

                     for x holds P[x]
                    ___________________     (2)
                         P[tau]

and

                         P[tau]
                     __________________     (3)

                       ex x st P[x]


so one of (2) or (3) must be invalid.

In Mizar it is the same rule:

                  for x holds P[x], for x holds not P[x]
               ___________________________________________

                       contradiction.

So both cannot be used. Not a big deal, you probably have no term tau
with type T, so the only possible application is when x does not occur
in P[x] and it is the case that Josef wrote about.

Let take typical example 'function from A to B', empty if B is empty but A is not. You can prove funny theorem

        for A, B being set, f being Function of A,B
             holds B = {} implies A = {}

but it cannot be used to prove

                B = {} implies A = {}

I do not know if one can find more weird examples.

The logic we do in a non empty domain. I would like to have the same
logic for restricted quantifiers.

Regards,
Andrzej