EDIT: Okay, now I read your article, and I see that what I wrote here is irrelevant. Leaving it here anyway, maybe someone else will like it.
I admit I didn’t read your linked article thoroughly, but I will try to explain the basic theory and terminology.
In computer science, when we are talking about a computation that for any input always ends in a finite time and provides an answer, we call such computation algorithm, and the mathematical function computed by this algorithm is called “total recursive function” (or “computable function”).
When we are talking about a computation that could potentially run forever, and such case of running forever is treated as an implied special value, we call such computation program, and the mathematical function computed by this algorithm is called “partial recursive function”—a mathematical function with an undefined value for inputs where the program runs forever. (Algorithms are a subset of programs, and total recursive functions are a subset of partial recursive functions.)
Specifically, if we care about computations returning “yes” or “no”, an algorithm corresponds to a total recursive function from X to { “yes”, “no” }, where “X” is the input domain: strings, numbers, whatever your computation accepts as a valid input. If we care about computations that potentially run forever, such program corresponds to a partial recursive function from X to { “yes” }, where not returning value is an implied “no”. (You could have other, equivalent definitions, but that would only make things less elegant mathematically.)
When debating things such as Halting Problem we have to pay extra big attention to the proper distinction between algorithms and programs, or respectively between total and partial recursive functions. When speaking about programs / partial recursive functions we have to pay attention to which answer is the implied one in case of the infinite computation (is “yes” explicit and “no” implied, or is “no” explicit and “yes” implied?). A simple mistake can change everything dramatically. For example:
Q1: “Can we make an algorithm which, given an arbitrary program and an arbitrary input for that program, determines whether the program will stop in finite time?”
A1: “No. See the standard debate about Halting Problem.”
Q2: “Can we make a program which, given an arbitrary program and an arbitrary input for that program, determines whether the program will stop in finite time?”
A2: “Yes, trivially. Just simulate the given program, and print “yes” if the simulation stops.”
Q3: “Can we make a program which, given an arbitrary program and an arbitrary input for that program, determines whether the program will run forever?”
A3: “No. If such program would be possible, then together (running in parallel) with the previous program they would make an algorithm solving the Halting Problem, which we already know is mathematically impossible.”
I believe that if you will be very careful about which of these words you use, the confusion will be solved. In my opinion, most likely at some place you proved that a program exists for something, but then you started treating it as an algorithm.
EDIT: Okay, now I read your article, and I see that what I wrote here is irrelevant. Leaving it here anyway, maybe someone else will like it.
I admit I didn’t read your linked article thoroughly, but I will try to explain the basic theory and terminology.
In computer science, when we are talking about a computation that for any input always ends in a finite time and provides an answer, we call such computation algorithm, and the mathematical function computed by this algorithm is called “total recursive function” (or “computable function”).
When we are talking about a computation that could potentially run forever, and such case of running forever is treated as an implied special value, we call such computation program, and the mathematical function computed by this algorithm is called “partial recursive function”—a mathematical function with an undefined value for inputs where the program runs forever. (Algorithms are a subset of programs, and total recursive functions are a subset of partial recursive functions.)
Specifically, if we care about computations returning “yes” or “no”, an algorithm corresponds to a total recursive function from X to { “yes”, “no” }, where “X” is the input domain: strings, numbers, whatever your computation accepts as a valid input. If we care about computations that potentially run forever, such program corresponds to a partial recursive function from X to { “yes” }, where not returning value is an implied “no”. (You could have other, equivalent definitions, but that would only make things less elegant mathematically.)
When debating things such as Halting Problem we have to pay extra big attention to the proper distinction between algorithms and programs, or respectively between total and partial recursive functions. When speaking about programs / partial recursive functions we have to pay attention to which answer is the implied one in case of the infinite computation (is “yes” explicit and “no” implied, or is “no” explicit and “yes” implied?). A simple mistake can change everything dramatically. For example:
Q1: “Can we make an algorithm which, given an arbitrary program and an arbitrary input for that program, determines whether the program will stop in finite time?”
A1: “No. See the standard debate about Halting Problem.”
Q2: “Can we make a program which, given an arbitrary program and an arbitrary input for that program, determines whether the program will stop in finite time?”
A2: “Yes, trivially. Just simulate the given program, and print “yes” if the simulation stops.”
Q3: “Can we make a program which, given an arbitrary program and an arbitrary input for that program, determines whether the program will run forever?”
A3: “No. If such program would be possible, then together (running in parallel) with the previous program they would make an algorithm solving the Halting Problem, which we already know is mathematically impossible.”
I believe that if you will be very careful about which of these words you use, the confusion will be solved. In my opinion, most likely at some place you proved that a program exists for something, but then you started treating it as an algorithm.