An alert rule reads 'latency of service s exceeds the budget' with s never quantified: what has it actually asserted?
answer
- nothing ranges over that name
- predicate, not a proposition
- truth depends on the assignment
- quantify or instantiate to close it
- every versus some, silently chosen
basics
~20 sNothing with a definite truth value. With s unbound the rule is an open formula - a property of whichever service s stands for - and it becomes a claim only once s is quantified or fixed to one service. Readers supply the missing quantifier silently, and they do not all pick the same one.
solid answer
~40 sA variable is **bound** when a quantifier ranges over it and **free** otherwise. A formula with a free variable is not a proposition: it is a predicate whose truth depends on what you substitute for `s`. So the rule asserts nothing until `s` is bound by 'for every service' or 'for some service', or pinned to a named service. That matters because the two bindings mean opposite things operationally - every service over budget versus at least one - and a reader who fills the gap by habit may pick either. Some writing conventions read an unquantified statement as implicitly universal, which is not a fix: it means the sentence's meaning depends on which convention the reader has, and that is precisely the hazard.
go deeper
Recall the vocabulary: a variable is bound when a quantifier ranges over it and free otherwise, and a sentence with a free variable is not yet true or false.
Explain the mechanics: an open formula is a predicate over assignments, and closing it universally or existentially yields two claims that differ in exactly the way a universal and an existential do.
Show the review judgment: catch the missing binder in written conditions, state the domain with the quantifier, and refuse to argue about a subformula quoted away from what bound it.
The angle you own is how specifications are written at all - a house convention that forces every variable to be bound and every domain named costs a little verbosity and removes a whole class of silent disagreement.
## Bound, free, and what a formula without quantifiers is In a quantified sentence, each variable is either **bound** or **free**: - A variable is **bound** when it falls inside the **scope** of a quantifier that ranges over it - the `j` in *for every job `j`, `acknowledged(j)`*. - A variable is **free** when nothing binds it - the `s` in *`latency(s)` exceeds the budget*. The distinction decides what kind of object you are holding. A formula with no free variables is a **proposition**: it is true or false outright, and you can put it in a specification and argue about it. A formula with a free variable is an **open formula** - a **predicate** - which has a truth value only relative to an assignment of a value to that variable. `latency(s) > budget` is true of some services and false of others; on its own it is neither. So the honest answer about the alert rule is that it has asserted a property, not a claim. To turn it into a claim you must do one of three things, and they are not interchangeable: 1. **Bind it universally** - *for every service `s`, `latency(s) > budget`* - which is true only in the disastrous case where nothing is within budget. 2. **Bind it existentially** - *for some service `s`, `latency(s) > budget`* - which is what an alert almost always means: fire when at least one service breaches. 3. **Instantiate it** - fix `s` to one named service, giving a claim about that service alone. The gap between (1) and (2) is the whole risk. They differ in exactly the way a universal and an existential always differ - one is refuted by a single witness, the other confirmed by one - so a rule that leaves `s` free leaves the reader to guess which system behaviour was meant. ## Why conventions do not rescue it Mathematical writing often reads a standalone formula with free variables as **implicitly universally quantified** - its *universal closure*. That convention is real and useful, but relying on it in a specification has a cost: the sentence now means whatever the reader's convention says, and a reader who expects the existential reading (the natural one for an alert) gets the opposite claim. The fix is not to pick a convention; the fix is to write the quantifier. ## Scope, shadowing, and renaming A few further properties of bound variables come up when specifications get nested: | Property | Statement | Consequence | |---|---|---| | Scope | a quantifier binds its variable only inside its own body | the same name outside that body is a different variable | | Renaming | a bound variable's name carries no meaning | *for every job `j`* and *for every job `k`* say the same thing, provided the new name does not collide with one already in use | | Shadowing | an inner quantifier may reuse an outer name | the inner one wins inside its body, and the outer variable becomes unreachable there - a common source of misreading | | Relativity | freeness is relative to the formula you consider | `j` is free in *there is a worker who handled `j`* and bound in *for every job `j`, there is a worker who handled `j`* | That last row is worth dwelling on, because it explains a frequent confusion: people ask whether a variable "is" free as though it were an intrinsic property of the symbol. It is a property of the symbol **in a given formula**. A subformula quoted out of its enclosing quantifier acquires free variables that the whole sentence did not have - which is exactly what happens when someone copies the inner half of a specification sentence into a review comment and it stops meaning anything definite. ## What to do about it in practice - When a written condition mentions a name, ask **what binds it**. If nothing does, the condition is not yet a claim. - State the **domain** along with the quantifier: *for every service in the current deployment* rather than *for every service*, since an unstated domain is the second half of the same problem. - Be suspicious of a sentence whose meaning changes when you read it aloud with *every* and then with *some*. If both readings are grammatical, the quantifier is missing rather than obvious. - When quoting part of a specification, carry its binder with it or say explicitly what the loose variable ranges over. The practical value of the free/bound distinction is not terminological. It is a fast test for a sentence that looks like a specification, passes review because everyone reads it their own way, and turns out to have committed to nothing at all.
- If a bound variable's name is arbitrary, when does renaming one change meaning?When the new name collides with a variable already in scope, so the renamed occurrences get captured by the wrong quantifier. Renaming the inner variable of 'for every job j, there is a worker w' to 'j' would make the worker clause talk about the job. Rename only to a fresh name, and the sentence is unchanged.
- Is a variable free or bound an intrinsic property of that variable?No - it is relative to the formula under consideration. In 'there is a worker who handled j', the name j is free; inside 'for every job j, there is a worker who handled j', the same occurrence is bound. Quoting a subformula out of its binder therefore creates free variables the full sentence did not have.
saying these in an interview costs you the question
- Says an unbound variable obviously means any service, so the rule is fine
- Treats an open formula as a proposition whose truth is merely unknown
- Believes renaming a bound variable can change what a sentence says
- Misses that an inner quantifier reusing a name hides the outer variable
- Quotes a subformula out of its binder and argues about its truth