[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
Re: [mizar] Proposal for binders in Mizar
Hi Josef,
Thanks for your comments! To answer some of your points:
>- Why allow only one "lambda" argument? Why not have "binder
> x1,...,xn", when F takes n arguments?
I couldn't think of a good example where this would be
benificial. Also, each xi should go with an "at ..."
parameter, and I thought it would become clumsy.
I tried to keep the proposal simple. For instance, I could
also have allowed for a "P[...]" parameter, for instance for
the sum over primes example. But I thought this would be
good enough, as I could do the example without it, and so I
left it out.
>- It seems to me, that you do not give the full semantics of
> the construct,
Surprisingly I hadn't given this any thought: I had only
thought about the syntactical aspects.
But I think that one way to "model" this is by saying that it
introduces a new function symbol for every different instance
of the binder. So for instance with sum binder, you should
imagine that there is a separate symbol "sum_f" for every f().
It's similar to the schemes: there if a scheme takes a
parameter f() I don't imagine the thing to quantify over
those f()'s, because it wouldn't denote anything in the set
theory. Instead I always think about it as a uniform way to
prove a whole collection of theorems.
So how do you treat schemes in your first order translation?
>- Are binder terms allowed to match scheme-like functor
> specifications? I.e., does "sum i at x of F(i)" match
> "G(natural number) -> complex number"? So "sum i at n of
> (sum k at i*n of F(k,i))" is possible?
Yes, that's the idea.
> if we allow binders for predicates too, e.g.
I thought about this, but I don't see the use of this,
really. Do you have a good example from mathematical
practice?
> Maybe the "lambda" could be just a very simple syntactic
> sugar, like: "lambda x of x^2 + 1 [qua Function of
> REAL,REAL]" which actually just expands to that Fraenkel
> and gives the system the hint for the preferred typing.
>
> Once we have "lambda" working, there is not much need for
> other binders:
> (integral lambda y of y to_power n).x = (x to_power (n + 1))/(n + 1)
> (Partial_Sums lambda y of y).n = n*(n + 1)/2
> lim(lambda y of y^2, a) = a^2
> etc.
I'd much rather write "sum i at 1,n of f(i)" than "(sum
lambda i of f(i)).[1,n]". Especially the "lambda" is ugly.
So if you would implement this approach I'd much prefer to
have a symbol for the lambda (maybe "\" after all? then it
the example would become "(sum \i of f(i)).[1,n]"), instead
of a keyword.
> Obviously, this approach is weaker than your suggestion,
> because it requires the lambda function to be a set, but
> (except from weird individuals writing strange
> set-theoretical stuff :-) this should not hurt much.
No, that wouldn't hurt at all, I think. So this solution
would be much closer to what one finds in other systems. But
to me it feels "less Mizar-like"...
Freek