In the context of a problem that we are trying to solve, let's consider the following safety property: "The values of all numbers in a program run are positive" -- noted as XP
The definitions of X safe operation and X safe language allows one to operate with our property XP.
The phrase:
A safe language (such as Java or Haskell) has only safe operations, so all possible programs in the language are safe.
sounds like a definition, but I assume it's just a variant of the above X safe language definition.
If we interpret "safe operation" as an operation that is an "X safe operation" for any X, then we can conclude that a "safe language" needs to also satisfy XP.
But languages like Java and Haskell allow expressing negative numbers, thus they don't uphold XP by default. Thus, we can't say that these languages are "safe languages", meaning that they only have "safe operations".
Similarly, the phrase
Since undefined behavior invalidates all guarantees (including memory safety), a memory-safe language can have no undefined behavior and is therefore a safe language
reads as if one doesn't have undefined behavior, all safety properties are uphold.
This issue is somehow similar to #48
In the context of a problem that we are trying to solve, let's consider the following safety property: "The values of all numbers in a program run are positive" -- noted as XP
The definitions of X safe operation and X safe language allows one to operate with our property XP.
The phrase:
If we interpret "safe operation" as an operation that is an "X safe operation" for any X, then we can conclude that a "safe language" needs to also satisfy XP.
But languages like Java and Haskell allow expressing negative numbers, thus they don't uphold XP by default. Thus, we can't say that these languages are "safe languages", meaning that they only have "safe operations".
Similarly, the phrase
This issue is somehow similar to #48