Skip to main content
added 196 characters in body
Source Link
Sridhar Ramesh
  • 5.8k
  • 1
  • 34
  • 45

You could have discovered the fixed point theorem yourself! You'd just need the problem to be motivated the right way. For example, let's look at it as a kind of programming challenge...

Suppose you wanted to write a program that referred to its own source code at some point.

You could try to write it in BASIC (or Java or Haskell or English or Peano Arithmetic or whatever your favorite programming language is). But, you might find that to be too tricky at first. So nevermind BASIC; you decide to instead simply invent a hypothetical new programming language BASIC++, which is just like BASIC, but augmented with built-in support for programs to be able to access their own source code: this language has a basic keyword "myOwnSourceCode" within it, which is to be interpreted as just what you'd think from the name.

How does one actually run a BASIC++ program? Well, one thing you might do with a BASIC++ program (let's call it P) is compile it into an ordinary BASIC program, by going through its source code and replacing every instance of the keyword "myOwnSourceCode" with, of course, the expression of the actual source code for P.

So now we know how to write BASIC++ programs which refer to their own source code (it's trivial by the design of the BASIC++ language), and we also know how to compile BASIC++ programs into ordinary BASIC programs.

Of course, by combining those two, this means you can write BASIC++ programs which refer to the compilation of their own source code into BASIC.

And then, by actually compiling such a program into BASIC, you're left with, in fact, an ordinary BASIC program which refers to (which is to say, does whatever the programmer wants it to do with) its own source code.

This is precisely the structure of the fixed point theorem: $F$ is some BASIC-definable function, the free variable $v$ (in a BASIC++ program) is the "myOwnSourceCode" keyword, $sub(P, num(P))$ compiles a BASIC++ program $P$ into ordinary BASIC, $H$ is the BASIC++ program which applies $F$ to the compilation of its own source code into BASIC, and $A$ is the compilation of $H$ into BASIC; thus, as an instance of the pattern above, $A$ is an ordinary BASIC program which applies $F$ to its own source code.

  [The fact that the free variable of $F$ was also chosen to be named $v$ in the presentation given in the question is, incidentally, an unnecessary and irrelevant distraction]

(Of course, in the arithmetic fixed point theorem, "BASIC" is instead "Peano Arithmetic", but it's the same fundamental construction, whatever the particular context it is to be interpreted in)

You could have discovered the fixed point theorem yourself! You'd just need the problem to be motivated the right way. For example, let's look at it as a kind of programming challenge...

Suppose you wanted to write a program that referred to its own source code at some point.

You could try to write it in BASIC (or Java or Haskell or English or Peano Arithmetic or whatever your favorite programming language is). But, you might find that to be too tricky at first. So nevermind BASIC; you decide to instead simply invent a hypothetical new programming language BASIC++, which is just like BASIC, but augmented with built-in support for programs to be able to access their own source code: this language has a basic keyword "myOwnSourceCode" within it, which is to be interpreted as just what you'd think from the name.

How does one actually run a BASIC++ program? Well, one thing you might do with a BASIC++ program (let's call it P) is compile it into an ordinary BASIC program, by going through its source code and replacing every instance of the keyword "myOwnSourceCode" with, of course, the expression of the actual source code for P.

So now we know how to write BASIC++ programs which refer to their own source code (it's trivial by the design of the BASIC++ language), and we also know how to compile BASIC++ programs into ordinary BASIC programs.

Of course, by combining those two, this means you can write BASIC++ programs which refer to the compilation of their own source code into BASIC.

And then, by actually compiling such a program into BASIC, you're left with, in fact, an ordinary BASIC program which refers to (which is to say, does whatever the programmer wants it to do with) its own source code.

This is precisely the structure of the fixed point theorem: $F$ is some BASIC-definable function, the free variable $v$ (in a BASIC++ program) is the "myOwnSourceCode" keyword, $sub(P, num(P))$ compiles a BASIC++ program $P$ into ordinary BASIC, $H$ is the BASIC++ program which applies $F$ to the compilation of its own source code into BASIC, and $A$ is the compilation of $H$ into BASIC; thus, as an instance of the pattern above, $A$ is an ordinary BASIC program which applies $F$ to its own source code.

  [The fact that the free variable of $F$ was also chosen to be named $v$ in the presentation given in the question is, incidentally, an unnecessary and irrelevant distraction]

You could have discovered the fixed point theorem yourself! You'd just need the problem to be motivated the right way. For example, let's look at it as a kind of programming challenge...

Suppose you wanted to write a program that referred to its own source code at some point.

You could try to write it in BASIC (or Java or Haskell or English or Peano Arithmetic or whatever your favorite programming language is). But, you might find that to be too tricky at first. So nevermind BASIC; you decide to instead simply invent a hypothetical new programming language BASIC++, which is just like BASIC, but augmented with built-in support for programs to be able to access their own source code: this language has a basic keyword "myOwnSourceCode" within it, which is to be interpreted as just what you'd think from the name.

How does one actually run a BASIC++ program? Well, one thing you might do with a BASIC++ program (let's call it P) is compile it into an ordinary BASIC program, by going through its source code and replacing every instance of the keyword "myOwnSourceCode" with, of course, the expression of the actual source code for P.

So now we know how to write BASIC++ programs which refer to their own source code (it's trivial by the design of the BASIC++ language), and we also know how to compile BASIC++ programs into ordinary BASIC programs.

Of course, by combining those two, this means you can write BASIC++ programs which refer to the compilation of their own source code into BASIC.

And then, by actually compiling such a program into BASIC, you're left with, in fact, an ordinary BASIC program which refers to (which is to say, does whatever the programmer wants it to do with) its own source code.

This is precisely the structure of the fixed point theorem: $F$ is some BASIC-definable function, the free variable $v$ (in a BASIC++ program) is the "myOwnSourceCode" keyword, $sub(P, num(P))$ compiles a BASIC++ program $P$ into ordinary BASIC, $H$ is the BASIC++ program which applies $F$ to the compilation of its own source code into BASIC, and $A$ is the compilation of $H$ into BASIC; thus, as an instance of the pattern above, $A$ is an ordinary BASIC program which applies $F$ to its own source code. [The fact that the free variable of $F$ was also chosen to be named $v$ in the presentation given in the question is, incidentally, an unnecessary and irrelevant distraction]

(Of course, in the arithmetic fixed point theorem, "BASIC" is instead "Peano Arithmetic", but it's the same fundamental construction, whatever the particular context it is to be interpreted in)

I suppose I keep feeling the need for minor rearrangements of the wording...
Source Link
Sridhar Ramesh
  • 5.8k
  • 1
  • 34
  • 45

You could have discovered the fixed point theorem yourself! You'd just need the problem to be motivated the right way. For example, let's look at it as a kind of programming challenge...

Suppose you wanted to write a program that referred to its own source code at some point.

You could try to write it in BASIC (or Java or Haskell or English or Peano Arithmetic or whatever your favorite programming language is) that referred to its own source code at some point.

Well But, you might find itthat to be too tricky at first. So nevermind BASIC; you decide to instead simply invent a hypothetical new programming language BASIC++, which is just like BASIC, but augmented with built-in support for programs to be able to access their own source code: this language has a basic keyword "myOwnSourceCode" within it, which is to be interpreted as just what you'd think from the name.

How does one actually run a BASIC++ program? Well, one thing you might do with a BASIC++ program (let's call it P) is compile it into an ordinary BASIC program, by going through its source code and replacing every instance of the keyword "myOwnSourceCode" with, of course, the expression of the actual source code for P.

So now we know how to write BASIC++ programs which refer to their own source code (it's trivial by the design of the BASIC++ language), and we also know how to compile BASIC++ programs into ordinary BASIC programs.

Of course, by combining those two, this means you can write BASIC++ programs which refer to the compilation of their own source code into BASIC.

And then, by actually compiling such a program into BASIC, you're left with, in fact, an ordinary BASIC program which refers to (which is to say, does whatever the programmer wants it to do with) its own source code.

This is precisely the structure of the fixed point theorem: $F$ is some BASIC-definable function, the free variable $v$ (in a BASIC++ program) is the "myOwnSourceCode" keyword, $sub(P, num(P))$ compiles a BASIC++ program $P$ into ordinary BASIC, $H$ is the BASIC++ program which applies $F$ to the compilation of its own source code into BASIC, and $A$ is the compilation of $H$ into BASIC; thus, as an instance of the pattern above, $A$ is an ordinary BASIC program which applies $F$ to its own source code.

[The fact that the free variable of $F$ was also chosen to be named $v$ in the presentation given in the question is, incidentally, an unnecessary and irrelevant distraction]

You could have discovered the fixed point theorem yourself! You'd just need the problem to be motivated the right way. For example, let's look at it as a kind of programming challenge...

Suppose you wanted to write a program in BASIC (or Java or Haskell or English or Peano Arithmetic or whatever your favorite programming language is) that referred to its own source code at some point.

Well, you might find it to be too tricky at first. So nevermind BASIC; you decide to instead invent a hypothetical new programming language BASIC++, which is just like BASIC, but augmented with built-in support for programs to be able to access their own source code: this language has a basic keyword "myOwnSourceCode" within it, which is to be interpreted as just what you'd think from the name.

How does one actually run a BASIC++ program? Well, one thing you might do with a BASIC++ program (let's call it P) is compile it into an ordinary BASIC program, by going through its source code and replacing every instance of the keyword "myOwnSourceCode" with, of course, the expression of the actual source code for P.

So now we know how to write BASIC++ programs which refer to their own source code (it's trivial by the design of the BASIC++ language), and we also know how to compile BASIC++ programs into ordinary BASIC programs.

Of course, by combining those two, this means you can write BASIC++ programs which refer to the compilation of their own source code into BASIC.

And then, by actually compiling such a program into BASIC, you're left with, in fact, an ordinary BASIC program which refers to (which is to say, does whatever the programmer wants it to do with) its own source code.

This is precisely the structure of the fixed point theorem: $F$ is some BASIC-definable function, the free variable $v$ (in a BASIC++ program) is the "myOwnSourceCode" keyword, $sub(P, num(P))$ compiles a BASIC++ program $P$ into ordinary BASIC, $H$ is the BASIC++ program which applies $F$ to the compilation of its own source code into BASIC, and $A$ is the compilation of $H$ into BASIC; thus, as an instance of the pattern above, $A$ is an ordinary BASIC program which applies $F$ to its own source code.

[The fact that the free variable of $F$ was also chosen to be named $v$ in the presentation given in the question is, incidentally, an unnecessary and irrelevant distraction]

You could have discovered the fixed point theorem yourself! You'd just need the problem to be motivated the right way. For example, let's look at it as a kind of programming challenge...

Suppose you wanted to write a program that referred to its own source code at some point.

You could try to write it in BASIC (or Java or Haskell or English or Peano Arithmetic or whatever your favorite programming language is). But, you might find that to be too tricky at first. So nevermind BASIC; you decide to instead simply invent a hypothetical new programming language BASIC++, which is just like BASIC, but augmented with built-in support for programs to be able to access their own source code: this language has a basic keyword "myOwnSourceCode" within it, which is to be interpreted as just what you'd think from the name.

How does one actually run a BASIC++ program? Well, one thing you might do with a BASIC++ program (let's call it P) is compile it into an ordinary BASIC program, by going through its source code and replacing every instance of the keyword "myOwnSourceCode" with, of course, the expression of the actual source code for P.

So now we know how to write BASIC++ programs which refer to their own source code (it's trivial by the design of the BASIC++ language), and we also know how to compile BASIC++ programs into ordinary BASIC programs.

Of course, by combining those two, this means you can write BASIC++ programs which refer to the compilation of their own source code into BASIC.

And then, by actually compiling such a program into BASIC, you're left with, in fact, an ordinary BASIC program which refers to (which is to say, does whatever the programmer wants it to do with) its own source code.

This is precisely the structure of the fixed point theorem: $F$ is some BASIC-definable function, the free variable $v$ (in a BASIC++ program) is the "myOwnSourceCode" keyword, $sub(P, num(P))$ compiles a BASIC++ program $P$ into ordinary BASIC, $H$ is the BASIC++ program which applies $F$ to the compilation of its own source code into BASIC, and $A$ is the compilation of $H$ into BASIC; thus, as an instance of the pattern above, $A$ is an ordinary BASIC program which applies $F$ to its own source code.

[The fact that the free variable of $F$ was also chosen to be named $v$ in the presentation given in the question is, incidentally, an unnecessary and irrelevant distraction]

deleted 7 characters in body
Source Link
Sridhar Ramesh
  • 5.8k
  • 1
  • 34
  • 45

You could have discovered the fixed point theorem yourself! You'd just need the problem to be presented to youmotivated the right way. For example, let's look at it as a kind of programming challenge...

Suppose you wanted to write a program in BASIC (or Java or Haskell or English or Peano Arithmetic or whatever your favorite programming language is) that referred to its own source code at some point.

Well, you might find it to be too tricky at first. So nevermind BASIC; you decide to instead invent a hypothetical new programming language BASIC++, which is just like BASIC, but augmented with built-in support for programs to be able to access their own source code: this language has a basic keyword "myOwnSourceCode" within it, which is to be interpreted as just what you'd think from the name.

How does one actually run a BASIC++ program? Well, one thing you might do with a BASIC++ program (let's call it P) is compile it into an ordinary BASIC program, by going through its source code and replacing every instance of the keyword "myOwnSourceCode" with, of course, the expression of the actual source code for P.

So now we know how to write BASIC++ programs which refer to their own source code (it's trivial by the design of the BASIC++ language), and we also know how to compile BASIC++ programs into ordinary BASIC programs.

Of course, by combining those two, this means you can write BASIC++ programs which refer to the compilation of their own source code into BASIC.

And then, by actually compiling such a program into BASIC, you're left with, in fact, an ordinary BASIC program which refers to (which is to say, does whatever the programmer wants it to do with) its own source code.

This is precisely the structure of the fixed point theorem: $F$ is some BASIC-definable function, the free variable $v$ (in a BASIC++ program) is the "myOwnSourceCode" keyword, $sub(P, num(P))$ compiles a BASIC++ program $P$ into ordinary BASIC, $H$ is the BASIC++ program which applies $F$ to the compilation of its own source code into BASIC, and $A$ is the compilation of $H$ into BASIC; thus, as an instance of the pattern above, $A$ is an ordinary BASIC program which applies $F$ to its own source code.

[The fact that the free variable of $F$ was also chosen to be named $v$ in the presentation given in the question is, incidentally, an unnecessary and irrelevant distraction]

You could have discovered the fixed point theorem yourself! You'd just need the problem to be presented to you the right way. For example, let's look at it as a kind of programming challenge...

Suppose you wanted to write a program in BASIC (or Java or Haskell or English or Peano Arithmetic or whatever your favorite programming language is) that referred to its own source code at some point.

Well, you might find it to be too tricky at first. So nevermind BASIC; you decide to instead invent a hypothetical new programming language BASIC++, which is just like BASIC, but augmented with built-in support for programs to be able to access their own source code: this language has a basic keyword "myOwnSourceCode" within it, which is to be interpreted as just what you'd think from the name.

How does one actually run a BASIC++ program? Well, one thing you might do with a BASIC++ program (let's call it P) is compile it into an ordinary BASIC program, by going through its source code and replacing every instance of the keyword "myOwnSourceCode" with, of course, the expression of the actual source code for P.

So now we know how to write BASIC++ programs which refer to their own source code (it's trivial by the design of the BASIC++ language), and we also know how to compile BASIC++ programs into ordinary BASIC programs.

Of course, by combining those two, this means you can write BASIC++ programs which refer to the compilation of their own source code into BASIC.

And then, by actually compiling such a program into BASIC, you're left with, in fact, an ordinary BASIC program which refers to (which is to say, does whatever the programmer wants it to do with) its own source code.

This is precisely the structure of the fixed point theorem: $F$ is some BASIC-definable function, the free variable $v$ (in a BASIC++ program) is the "myOwnSourceCode" keyword, $sub(P, num(P))$ compiles a BASIC++ program $P$ into ordinary BASIC, $H$ is the BASIC++ program which applies $F$ to the compilation of its own source code into BASIC, and $A$ is the compilation of $H$ into BASIC; thus, as an instance of the pattern above, $A$ is an ordinary BASIC program which applies $F$ to its own source code.

[The fact that the free variable of $F$ was also chosen to be named $v$ in the presentation given in the question is, incidentally, an unnecessary and irrelevant distraction]

You could have discovered the fixed point theorem yourself! You'd just need the problem to be motivated the right way. For example, let's look at it as a kind of programming challenge...

Suppose you wanted to write a program in BASIC (or Java or Haskell or English or Peano Arithmetic or whatever your favorite programming language is) that referred to its own source code at some point.

Well, you might find it to be too tricky at first. So nevermind BASIC; you decide to instead invent a hypothetical new programming language BASIC++, which is just like BASIC, but augmented with built-in support for programs to be able to access their own source code: this language has a basic keyword "myOwnSourceCode" within it, which is to be interpreted as just what you'd think from the name.

How does one actually run a BASIC++ program? Well, one thing you might do with a BASIC++ program (let's call it P) is compile it into an ordinary BASIC program, by going through its source code and replacing every instance of the keyword "myOwnSourceCode" with, of course, the expression of the actual source code for P.

So now we know how to write BASIC++ programs which refer to their own source code (it's trivial by the design of the BASIC++ language), and we also know how to compile BASIC++ programs into ordinary BASIC programs.

Of course, by combining those two, this means you can write BASIC++ programs which refer to the compilation of their own source code into BASIC.

And then, by actually compiling such a program into BASIC, you're left with, in fact, an ordinary BASIC program which refers to (which is to say, does whatever the programmer wants it to do with) its own source code.

This is precisely the structure of the fixed point theorem: $F$ is some BASIC-definable function, the free variable $v$ (in a BASIC++ program) is the "myOwnSourceCode" keyword, $sub(P, num(P))$ compiles a BASIC++ program $P$ into ordinary BASIC, $H$ is the BASIC++ program which applies $F$ to the compilation of its own source code into BASIC, and $A$ is the compilation of $H$ into BASIC; thus, as an instance of the pattern above, $A$ is an ordinary BASIC program which applies $F$ to its own source code.

[The fact that the free variable of $F$ was also chosen to be named $v$ in the presentation given in the question is, incidentally, an unnecessary and irrelevant distraction]

added 197 characters in body
Source Link
Sridhar Ramesh
  • 5.8k
  • 1
  • 34
  • 45
Loading
deleted 158 characters in body
Source Link
Sridhar Ramesh
  • 5.8k
  • 1
  • 34
  • 45
Loading
deleted 23 characters in body; Post Made Community Wiki
Source Link
Sridhar Ramesh
  • 5.8k
  • 1
  • 34
  • 45
Loading
added 13 characters in body
Source Link
Sridhar Ramesh
  • 5.8k
  • 1
  • 34
  • 45
Loading
added 6 characters in body
Source Link
Sridhar Ramesh
  • 5.8k
  • 1
  • 34
  • 45
Loading
added 9 characters in body
Source Link
Sridhar Ramesh
  • 5.8k
  • 1
  • 34
  • 45
Loading
added 13 characters in body; added 134 characters in body; added 25 characters in body
Source Link
Sridhar Ramesh
  • 5.8k
  • 1
  • 34
  • 45
Loading
added 119 characters in body; added 56 characters in body
Source Link
Sridhar Ramesh
  • 5.8k
  • 1
  • 34
  • 45
Loading
added 4 characters in body; added 7 characters in body; deleted 13 characters in body; deleted 2 characters in body
Source Link
Sridhar Ramesh
  • 5.8k
  • 1
  • 34
  • 45
Loading
added 172 characters in body; added 88 characters in body; added 13 characters in body
Source Link
Sridhar Ramesh
  • 5.8k
  • 1
  • 34
  • 45
Loading
Source Link
Sridhar Ramesh
  • 5.8k
  • 1
  • 34
  • 45
Loading