The specification proves a property about an algorithm/function, namely the equivalence between a more complicated memoizing implementation and a simpler direct recursive implementation.
It is also true that no numerical reasoning is happening: the memoized version of any recursive relation will return the same result as the original function, assuming the function is not stateful and will return the same outputs given the same inputs.
However, it is not true to say that it does this by exhaustion, since there are infinitely many possible outputs and therefore it cannot be exhaustively checked by direct computation. The “n” for which we are “taking the proof” is symbolic, and hence symbolic justification and abstract invariants are used to provide the proof. It is the symbolic/abstract steps that are verified by the type checker, which involves only finite reasoning.
Of course, the symbolic steps somewhat mirror the concrete computations that would happen if you build the table, especially for a simpler proof like this. But it also shouldn’t be surprising that a program correctness proof would look at the steps that a program takes and reason about them in an abstract way to see that they are correct in all cases.
How could you say that your views are aligned with those of Descartes and Kant if you have not seriously engaged with their works and what others have written about them?
All serious works in philosophy (Kant especially) are subject to interpretation. Whole research programmes exist around the works of major philosophers, interpreting and building on their works.
One cannot really do justice to e.g. the Critique of Pure Reason by discussing it based on a high level summary of the “main ideas” contained in it. These works have had a major impact on the history of Western philosophy and were groundbreaking at the time (and still are).
I think they basically agree with your point here -- they mention Descartes and Kant to say roughly "I hold basically these ideas, but I don't mention the philosophers' names when I talk about them because 1) I came to them independently, and 2) the people I'm talking to are not familiar with the context so situating our conversation there isn't helpful." Their argument is that you can have philosophical conversations without relying on the context of the canon, and that in a first-level discussion they wouldn't bring up Descartes or Kant.
I gave the example of the U.K., a dystopian privacy violator. The U.K. is in Europe.
The entirety of Europe would not come close to making a majority of countries. Even if I grant you the "entirety of Europe", I bet I'm still right that most (i.e., more than half) of countries reserve the right to search your device at the border, and will compel you to give the password.
In the U.S., I believe you are covered by your 5th Amendment self-incrimination protections. I have some recollection that there are situations where authorities will compel you, like if you're not the one being accused of the crime.
I think the issue comes with trying to present a USB mass storage API to the host where you allow the host to write to any arbitrary byte offset of the mass storage device without the structure that is imposed by a file system.
If the host and guest both get presented with the same “array of bytes” mass storage interface, then they will compete and potentially mess up each other’s reads and writes, let’s say if they both treat that array of bytes as an ext4 file system and try to write a file system metadata to the same physical location at the same time.
Of course you have have a “virtual file system” exposed over USB, but isn’t that exactly what MTP is? The point is that USB mass storage is not a virtual file system.
It’s not just about the energy usage, but also purchase cost of the GPUs and opportunity cost of not using those GPUs for something more valuable (after you have bought them). Especially if you’re doing this at large scale and not just on a single desktop machine.
Of course you were already saying it’s not a good idea, but I think the above definitely plays a role at scale as well.
Does that make it any better even if it is true? (And I don’t think that it is as true as you make it out to be, e.g. it’s not true for my medium-sized organization)
Just because it’s good for “career optimization” does not make it less of a strange mindset to view your colleagues as predators. The article also puts all of the blame on the so-called “predators”, when it should be blaming the organization’s culture and leadership if helping others is viewed in this way.
And in tech, unless you work for the relatively few medium side companies that pay in the range of BigTech, you don’t optimize your career by working in medium size companies.
But the author is very explicit about who the predators are - PMs from other teams who use back channels to ask you for help and other non junior developers who ask you to troubleshoot or do work without doing any research themselves.
The data would still be awful, and people would pay less attention to the study because it’s not a priori surprising that ChatGPT would write worse poetry than the most celebrated poets in history.
If I use bad data to conclude that “Java is faster than C++ in most cases” you can be sure it will receive a lot more attention than if I reached the opposite conclusion based on similarly bad data.
> The data would still be awful, and people would pay less attention to the study because it’s not a priori surprising that ChatGPT would write worse poetry than the most celebrated poets in history.
[emphasis mine] You've inadvertently made the poster's point for them. You have written Spivak's "I knew it" reaction, just phrased more glibly.
I don’t fully agree with putting down “fun” movies like the Avengers, but at the same time “serious” art is not primarily for plain entertainment.
People might find “serious” art meaningful and it might spark feelings in them, but that’s not the same as getting an adrenaline rush from exploding cars in an action scene.
Of course there are also cases where the boundary between “fun” and “serious art” is not so clear, there are always exceptions to any attempt to define what makes something “serious art”. Art can also be subversive and run counter to traditional expectations of what art “should” be. But I don’t think the Avengers is an example of that.
It is also true that no numerical reasoning is happening: the memoized version of any recursive relation will return the same result as the original function, assuming the function is not stateful and will return the same outputs given the same inputs.
However, it is not true to say that it does this by exhaustion, since there are infinitely many possible outputs and therefore it cannot be exhaustively checked by direct computation. The “n” for which we are “taking the proof” is symbolic, and hence symbolic justification and abstract invariants are used to provide the proof. It is the symbolic/abstract steps that are verified by the type checker, which involves only finite reasoning.
Of course, the symbolic steps somewhat mirror the concrete computations that would happen if you build the table, especially for a simpler proof like this. But it also shouldn’t be surprising that a program correctness proof would look at the steps that a program takes and reason about them in an abstract way to see that they are correct in all cases.
reply