Sujet : Re: QUIT and ABORT
De : ruvim.pinka (at) *nospam* gmail.com (Ruvim)
Groupes : comp.lang.forthDate : 24. May 2025, 13:59:08
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <100sfqt$lm0v$1@dont-email.me>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
User-Agent : Mozilla Thunderbird
On 2025-05-24 14:23, mhx wrote:
On Sat, 24 May 2025 9:20:57 +0000, Ruvim wrote:
[..]
In a standard system, any behavior that is not explicitly allowed by the
standard (and can be detected by a standard program) is prohibited.
This can't be falsified - there is no list which enumerates all possible
behavior.
The standard contains the list of standard words, and the behavior of each standard word is well specified (as far as a standard program concerns). (by design; of course, the standard may contain mistakes)
Therefore, the behavior of a standard system can be falsified using standard program examples. That is, if and only if the system deviates from the specified behavior, this can be demonstrated by some standard program.
See also: <
https://en.wikipedia.org/wiki/Falsifiability>
Also, the effect of e.g. a random memory (hardware) error is
not something that can be prohibited.
If you mean that the program cannot read from an allocated memory region due to a hardware error, then this should be an ambiguous condition.
OTOH, access to a random (not allocated) memory region is *explicitly* specified as an ambiguous condition.
In a standard program, any behavior that is not explicitly prohibited by the standard is allowed.
This can easily be falsified with a extensive test suite.
Typically, by a test suite you check whether a program conforms to the program's documentation (in the cases that are covered by the test suite).
Conceptually, a program can be falsified by checking that it enters to some ambiguous condition. That is, if a program triggers an ambiguous condition, then the program is not a standard program.
I count implicit ambiguous conditions as well as explicit. For example, somewhere in the standard it says: "A program shall not alter the returned string". Hence, if a program alters this string — it's an implicit ambiguous condition.
So a test suit for programs is a Forth system that stops with a specific message on *any* ambiguous condition.
NB: any test suite for programs proofs nonconformity only in some cases, it cannot proof conformity in all cases.
Should the first clause be dropped?
I don't think so.
-- Ruvim