From: Rupert on

Charlie-Boo wrote:
> Rupert wrote:
> > Charlie-Boo wrote:
> > > Do we all agree that Computer Science definitely should be formalized?
> > >
> >
> > What's the merit in being completely formal, for any branch of
> > mathematics? Surely it's enough to convince ourselves that we could
> > formalize it.
>
> Why develop mathematics?
>

Because it's interesting.

> Why have people axiomatized branches of mathematics?
>

To clarify the foundations of the reasoning.

> Is it better to have a single representation for a theorem rather than
> many equivalent representations?
>

Not clear to me why one should be better than the other.

> C-B

From: Snis Pilbor on

Charlie-Boo wrote:
> Snis Pilbor wrote:
> > Charlie-Boo wrote:
> > > Do we all agree that Computer Science definitely should be formalized?
>
> > I'm not certain what you think is still in need of formalizing.
>
> All of Computer Science - Program Synthesis, Theory of Computation,
> Recursion Theory, Incompleteness in Logic. None of the theorems are
> generated by an axiomatic system - despite the best efforts of
> Mathematicians (e.g. Hilbert) and Logicians (e.g. Godel.)
>
> The development of mathematics towards greater exactness has, as is
> well-known, lead to formalization of large areas of it. But this is
> not so of Computer Science.
>

The fields you've quoted have been studied using ZF and/or ZFC. To go
deeper than that would strictly weaken the results: the results are
true (if anything is true) in any set theory which satisfies ZF[C],
whereas a derivation from nothing but basic logic would only show the
results to be true in that specific logic.

Here's an analogy. Suppose we want to make elementary calculus more
rigorous. So instead of talking about "real numbers", we talk strictly
about Dedekind cuts. The work becomes vastly more difficult, but we
manage to pull it off. What have we gained? Nothing. The original
work was true for any ordered field, and what we've now bought at such
a steep price, is only true of Dedekind cuts, and we'll have to start
all over again for equivalence classes of Cauchy sequences.

The recursive function theory I have studied is true whether I define
0=emptyset, 1={0}, 2={1}, etc., or whether I define 0=the moon, 1={0},
2={1}, etc., or even if I define 0=emptyset, 1={{0}}, 2={{1}}, etc.
This phenomenon is called "abstraction" and it, far more than pedantic
formalism, is the real virtue of mathematics.

From: Charlie-Boo on

Alec McKenzie wrote:
> "Charlie-Boo" <shymathguy(a)gmail.com> wrote:
>
> > Alec McKenzie wrote:
> > >
> > > I see you are back to the existence of "*a* self-outputting
> > > program", the proof of which is trivial (i.e. a single example
> > > will do it).
> >
> > No, you have to prove the program exists for every programming
> > language, not just one.
>
> Which cannot be done, since the program does *not* exist for
> every programming language, as can be very easily shown.

How do you define "Programming Language"? That's why we differ (I
assume i.e. that you would agree using the same definition as I.)

C-B

> --
> Alec McKenzie
> usenet@<surname>.me.uk

From: abo on

Charlie-Boo wrote:
> Alec McKenzie wrote:
> > "Charlie-Boo" <shymathguy(a)gmail.com> wrote:
> >
> > > Alec McKenzie wrote:
> > > >
> > > > I see you are back to the existence of "*a* self-outputting
> > > > program", the proof of which is trivial (i.e. a single example
> > > > will do it).
> > >
> > > No, you have to prove the program exists for every programming
> > > language, not just one.
> >
> > Which cannot be done, since the program does *not* exist for
> > every programming language, as can be very easily shown.
>
> How do you define "Programming Language"? That's why we differ (I
> assume i.e. that you would agree using the same definition as I.)

Yes well one could define 'programming language' to mean "tooth fairy".
But in fact 'programming language' has a good standard meaning which
people use all the time. If you're going to insist on using a
non-standard meaning, maybe you should make up words instead - instead
of using 'programming language' use 'gobble'. This will prevent
confusion.

From: Charlie-Boo on
Steven Zenith wrote:
> Charlie-Boo wrote:
>
> > I am very interested in any examples of this. Can you give one,
> > including:
> >
> > A. A formal statement of the theorem or result.
> > B. The meaning of any such statement.
> > C. How A corresponds to the statement of the theorem.
> > D. An algorithm for generating formal statements such as A.
> > E. A demonstration that D generates A.
> > F. A demonstration that D generates only true statements.
>
> I encourage you to review the sources I mentioned - these questions of
> yours are meaningless without context.

Not sure what you mean. I would say that the "context" is any
system that purports to formalize any branch of Computer Science, in
particular, Program Synthesis, Theory of Computation, Recursion Theory
or Incompleteness in Logic (Proof Theory.) I am saying that within any
such system there should be a formal statement of each theorem or
result that it formalizes (A) etc. Is this not a meaningful assertion?
Is it true (for A-F)?

> The Oxford Programming Research
> Group - now under Bill Roscoe - has done extensive work in this area. I
> am most familiar with their work but this type of effort is expanded
> elsewhere. At least look at Bill's book on the subject.
>
> What are the important properties of computer programs that you wish to
> develop theorems and proofs for? Do you know?

Expressions concerning the relation "Program X computes mathematical
object Y." For example, X => Y is Program Analysis. Y => X is
Program Synthesis. X,Y => {true, false} is Program Debugging. X => X
is Recursion Theory. [I am sparing you the toil of seeing this
formally expressed in CBL.]

It is not just properties, but rather algorithms in general. As I
formalize above, we need algorithms to determine the mathematical
object computed by a given program, or the programs that compute a
given mathematical object, or whether a given program computes a given
mathematical object etc.

Computer Science is actually even more general than that, as we
consider systems other than Turing Machine equivalents. The complete
relation is P=Q(M) for relations P,Q and individual M. What you
describe is Q being "Program X halts yes on input Y" and M is a
computer program. Then P is the set of inputs on which M halts yes.
We also consider Q being "Wff X with Y substituted for its free
variables is provable." and "Wff X with Y substituted for its free
variables is true." etc.

> At INMOS in the 1980s the
> team I was a part proved that the implementation of the IEEE floating
> point standard on the Transputer microprocessor met the formal
> specification of that standard. For such standards, proofs of such
> transformations would appear to be "meaningful", would they not?

My OP refers to a general method of formally producing Computer Science
results, not a single instance that is manually created.

> Today, however, it is hard to find a standard with an adequately formal
> specification - so start right there perhaps. I've tried, you won't get
> much sympathy from me.

I use Predicate Calculus extended by interpreting unquantified
variables I, J, K as being input and X, Y, Z as being output. For
example, if FAC(a,b) means "a is a factor of b", then we have:

FAC(X,I) : List the factors of a given number.
FAC(I,X) : List the multiples of a given number.
FAC(I,J) : Is one given number a factor of another?
(eA)FAC(A,I,) : Does a given number have any factors?
(eA)FAC(A,X) : List all numbers that have a factor.
~(eA)FAC(A,X) : List all numbers that have no factors.

This also succinctly formally represents Database Queries e.g. "List
all employees whose salary is greater than their manager's."

Did INMOS consider this approach?

> Roscoe and others dealt with desirable properties of programs in
> general, such as proofs that programs terminate or are deadlock free.
> The result are in the literature.

That is a subset of Program Synthesis. For example, if a program
computes the sum of two inputs, then it must terminate. Any program
that always terminates computes some total function, of course.

> Roscoe, Goldsmith and others in a company called Formal Methods Inc.
> built tools of program transformation so that programs could be mapped
> to implementation architectures.
>
> I simply think that you are poorly informed - and need to review the
> literature to identify which properties of computer programs are
> interesting - and I've pointed to only a few.

I have asked to be informed of A-F for purported formal derivations of
results of Computer Science. Could you please inform me of what A-F
has been developed? (I listed several efforts in the OP that I
described as not being authentic. I am aware of the claims. I am
looking for an authentic one.)

The difference here is not whether one is aware or unaware of what
people are writing. It is whether one believes that they have solved
the problem as advertised. This begins with ones criteria for a
solution.

I give A-F as criteria. What were their criteria? What are yours? Do
you believe that A-F are reasonable criteria for what constitutes a
formalization of a branch of Computer Science? And did they consider
Theory of Computation? Recursion Theory? Proof Theory? All of these
use the same principles. (In CBL they use the same Rules of
Inference.)

Again, for any result to be formalized we should have:

A. A formal statement of the theorem or result.
B. The meaning of any such statement.
C. How A corresponds to the statement of the theorem.
D. An algorithm for generating formal statements such as A.
E. A demonstration that D generates A.
F. A demonstration that D generates only true statements.

> It is not that these projects did not produce compelling results - we
> did, and to international acclaim

What is the significance of "acclaim"?

> - it is that it demands a level of
> engineering discipline today that - for one reason or another -
> software engineering has not been prepared to accept and is now simply
> absent.

Can you show an example of a specific useful technique that they
developed that would help software engineers? In my ARXIV paper I show
how my methodology creates useful programs (e.g. determine if one
number is a factor of another, and list all employees who earn more
than their manager) as well as Theory of Computation th
First  |  Prev  |  Next  |  Last
Pages: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Prev: Simple yet Profound Metatheorem
Next: Modal Logic