This is how induction proof work. You prove that something is true for a base (n = 1) case then you prove that if it is true for n it has to be true for n + 1. Therefore it is true for any n.
The flaw is that the second part of the proof requires n >= 2
I understand and agree but read carefully. The assumption _is_ the (entire) hypothesis. It is not existentially quantified or set in the base-case. It is the entire hypothesis.
You should read “n” as “some arbitrary n” in the quote you posted. It’s not an assumption for all n.
edit: sorry, you’re right that the wording is a bit sloppy. The “n” in the first quote is “for all n” and the n in the second quote is “some specific n” or “some arbitrary n”. They’re not meant to be the same statement. I don’t think it’s a very carefully written article.
The assumption that the case holds for n while the goal is to show the case holds for n+1. It is not well worded to make clear the intent of making an assumption about modal possibility. However, to see it as begging the question requires imposing a statement of modal necessity that simply isn't there.
__local is meant to describe memory shared across the whole workgroup meaning each operation is visible to all SIMD lanes. Uniform are variables that have are only visible to one lane but can be proven to have the same value for all SIMD lanes.
In general it is up to the compiler to decide what variables are uniform as it is pretty easy for user to get it wrong. Metal shader language as a uniform marker:
uniform<int> i = …;
The flaw is that the second part of the proof requires n >= 2