Saturday, April 22, 2023

Proposal: Zero As A Limit [Appendix]

Timed out 5 votes to 4. Failed by Kevan as needing quorum to amend the Appendix.

Adminned at 24 Apr 2023 20:46:41 UTC

In “Numbers and Variables, replace “If a set of valid values is not specified in their definition, game variables defined to hold numeric values can hold only non-negative integers.” with:-

If a game variable is defined as holding a numeric value with no specified set of values, or an integer value without explicitly stating that this value may be negative, then that variable can only hold non-negative integers.

Reflecting on the recurring gotcha (as recently tripped?) that the term “integer” explicitly defaults to allowing negative values, and the appendix backs this up with no room to argue other language interpretations.

When players write the word “integer” in a rule, I get the impression they usually mean - and that it’s usually read as - “a round number, zero or higher”. Dynastic rules typically describe physical objects, or degrees of a quality, where a negative amount wouldn’t make sense and isn’t considered. In the rare cases when we actually want a variable to also allow negative values, that tends to get spelled out.

So maybe we should say that the term “integer” by itself defaults to being interpreted as non-negative unless otherwise specified.

Comments

JonathanDark: Publisher he/him

22-04-2023 20:29:17 UTC

To be fair, when I first proposed the idea of Expertise, I did in fact call out that it could go negative. What happened lately is that Brendan revived the idea by copying my earlier wording and either overlooked the fact that it could still go negative, or was aware of it and let it lay as a potential trap for the unwary.

That said, I have no opposition to redefining the meaning of integer if we want less “trap-laden” language.

Lulu: she/her

23-04-2023 01:28:49 UTC

against I think that if we’re using the word ‘integer’ specifically, we already know that it could go negative.  Otherwise, we would’ve just said something more generic like ‘number’ or ‘amount’.

Taiga: he/him

23-04-2023 05:32:28 UTC

I cannot agree to this rule as a mathematics student. against

Josh: he/they

23-04-2023 05:51:23 UTC

for

Kevan: he/him

23-04-2023 10:10:37 UTC

[Misty] Not all players realise or remember that “integer” includes negative values, though, and scams have been able to successfully exploit this.

I think the rule we want is something like “variables can only go negative if the ruleset explicitly allows them to”. The problem is that simply saying “X is an integer” is technically explicit enough to meet that requirement, if the reader is alert and mathematically minded.

Perhaps there’s a way to phrase this which causes less pain to the mathematicians among us, but I think it needs to be said in some form.

Brendan: he/him

23-04-2023 11:37:38 UTC

for

redtara: they/them

23-04-2023 18:46:36 UTC

for I think being negative is exceptional and potentially game-breaking enough that it should be made explicit.

summai:

23-04-2023 19:17:03 UTC

against I agree with Misty and Taiga on this one. I would happily mention negative numbers explicitly if it is confusing for people. Still, when I see that something has an integer value, it is very unnatural for me to exclude negative values by default and will only end up confusing me. So I’m voting against.

JonathanDark: Publisher he/him

23-04-2023 20:03:38 UTC

for

jjm3x3: he/him

24-04-2023 07:00:40 UTC

Even being the most recent person to trip over this I also am against I don’t love how this is worded, the mathematician I’m me just cringes too much. And while I get there is a bit of an economics problem in having to define rules accordingly, I think if we want to address that there are better ways to word it.

Kevan: he/him

24-04-2023 09:36:02 UTC

[summai] Sure, we can encourage benevolent players to helpfully clarify that a value in their rule can be negative. It’s the cases where (as in the scam linked above) players tactically and legally decline to make that clarification, or when a less mathematically-minded player innocently writes a rule about an “integer number of trees” thinking that that means “zero or more but not fractions”.

[jjm3x3] What would you suggest as a better wording, out of interest? I don’t know if there’s a wall here where any kind of requirement for number variables to “explicitly” allow negative values will always be shrugged off by mathematicians as redundant because “integer” is already explicit.

Taiga: he/him

24-04-2023 10:27:13 UTC

Hey Kevan, I’ve got an idea (also mentioned in Merriam-Webster is not helpful here). Instead of changing the definition of an integer, we could emphasis the definition of an integer to include negative values. This comes hand-in-hand with a proper definition of what counts as a variable. The idea is to specify different data types for variables in BN, and a variable cannot be defined without specifying a type. Specifying types might encourage Engineers to think twice about what valid values they need. But this requires a big change, and might bring complications.

But in essence, no matter what we’re going to try, I think emphasising the real definition of an integer in some ways would help the current situation.

SingularByte: he/him

24-04-2023 10:46:25 UTC

Just to weigh in here, there is already a set of numbers representing both 0 and the positive integers: the natural numbers.

It’s debatable whether natural numbers include 0 or not, but I imagine it’s a lot more tolerable for the mathematically minded here to have 0 included in the natural numbers via an entry in the appendix rather than forcing integers to be non-negative, and it likely wouldn’t be too hard to swap over to using natural number in proposals from now on instead of integer.

(For the record, I’d be voting against this proposal, but it would likely be a tad impolite to unidle, vote against it officially, then re-idle again.)

Kevan: he/him

24-04-2023 10:56:48 UTC

Data types would be useful, but I think you’d still get scams and loopholes a few dynasties down the road, when it wasn’t in the forefront of everyone’s minds any more.

Really, though, this proposal isn’t trying to say “in BlogNomic, the word integer means something else”, it’s aiming for “you can’t put a negative number into any number variable, even if that variable is an integer, unless the rule defining that variable makes an explicit verbal reference to negative numbers”. If the proposed wording above makes mathematicians wince, we should be able to find a different way of phrasing that.

summai:

24-04-2023 15:05:48 UTC

[Kevan] I understand the intent behind this proposal, and agree that it can lead to scams and something needs to be fixed. However, I would argue that saying something is an integer is indeed an explicit verbal reference that includes negative numbers (yeah, I know I’m being too pedantic). So even if you don’t intend to say “in BlogNomic, the word integer means something else”, that’s exactly what the proposal says, albeit in a very roundabout way.

Kevan: he/him

24-04-2023 15:36:37 UTC

I’d hope there was some way of phrasing it that didn’t upset some mathematicians.

It would, I think, be entirely uncontroversial to have a rule that said “a player’s speed is an integer, but it is illegal to set it to a value above 100 or below -100”.

And it would be okay to have a rule of “a player’s speed is an integer, but it is illegal to set it to a value below zero”. There might be some grumbling about other terms to use instead of “integer”, but nobody’s head would explode.

“By default no integer in the game can be set to a negative value, unless the rule defining it says (whatever magic word)” seems like just another step from there.

jjm3x3: he/him

24-04-2023 15:52:48 UTC

@Kevan not sure exactly what the wording would be, but I do think things like what SingularByte suggested and Summai argued capture my sentiment. Firstly we do already a mathematically rigourous definition for non-negaative numbers (which may include 0) as “natural numbers”. If we mean to default numerical values in BN to be that way we should declare them as such. What I don’t like is effectively rewriting the definition of integer. Heck even if we leave out the word integer and suggest that any number variable without clear definition of values can be 0 or a non negative integer is better then calling out variables defined as integers and forcing them to be defined as not integers.

JonathanDark: Publisher he/him

24-04-2023 15:55:51 UTC

Maybe we’re just looking at this the wrong way. The stated goal is to reduce confusion, correct?

Rather than setting limits on what “integer” means, set a limit on the use of “integer” itself, such that it cannot be used without being explicit about its valid range. This idea is different that your proposal in that we don’t get into the situation of integers defaulting to non-negative, which is the upsetting part. Instead, we force the situation of integers being required to have explicit ranges in the rules.

In “Numbers and Variables”, add the following bullet:

If a game variable is defined as being an integer, the valid range of values must be explicitly stated for that variable, otherwise the variable is an illegal definition.

That might not be entirely satisfactory, but hopefully you see the direction I’m intending.

Taiga: he/him

24-04-2023 16:02:16 UTC

Or we can force a filter into the Ruleset: whenever applying the effects of an enacted votable matter, if it contains the word “integer(s)” without explicitly stating any restrictions on it, change it to “non-negative integer(s)”

Or we can rule is as a type: the word “integer(s)” without restrictions are considered to be a typo and can be corrected by any Engineer into “non-negative integer(s)” as ruled by “Spelling and formatting”

Just some ideas

summai:

24-04-2023 16:09:05 UTC

I can get behind JonathanDark’s idea. Although it might confuse everyone at first, I don’t think it will pose much of a problem once the trend is set and people are used to it.

Kevan: he/him

24-04-2023 16:25:12 UTC

We can aim for a golden and mathematically rigorous ruleset, but the issue is how to handle the flaws and the gaps as we play the game, when somebody proposes “the Forest contains an integer number of Trees” and we vote it through without reading it carefully, and someone proceeds to fell a billion Trees to win the game.

Correcting typos is too slow to stop that. An automatic filter (one that applies even before anyone has updated the ruleset to reflect it?) could work, but feels a little unusual for the ruleset not being what it says it is. The “otherwise the variable is an illegal definition” route feels a bit rough for being able to torpedo even a completely benign DoV if you can find a variable that we forgot to declare a range for.

Jonathan’s “limit on the use” makes me think that focusing on the action might be the way to go: if mathematicians are flinching at “X is an integer, but one that cannot hold negative numbers”, we can focus more on outlawing the act of setting it - “X is an integer, a player may not set X to a negative number”.

JonathanDark: Publisher he/him

24-04-2023 16:37:09 UTC

That feels like it might be more acceptable. We set valid ranges on variables all of the time, so variables that are integers don’t have to have the entire set of integers as their valid range.

So, to modify what you just said a little:

Whenever a variable is defined as an integer, it may not be set to a negative number unless explicitly allowed in the rules for this variable

JonathanDark: Publisher he/him

24-04-2023 16:38:57 UTC

Though I still prefer the idea of requiring integers to have explicit ranges.

Taiga: he/him

24-04-2023 16:54:04 UTC

It has the same vibe as the image of a non-surjective function, which doesn’t cover the whole codomain.

I like this.