Unknown until agreed

When checkers disagree, U says u and names who said what. It does not vote or guess. One claim, three checkers:

0.1 + 0.2 = 0.3

One checker: Python0Floats get 0.30000000000000004.
Majority of three02 of 3 said so; the exact one was outvoted.
U: all agree, or uuiDoMath says 1, Python says 0, JavaScript says 0

True: exact arithmetic says 1, floats say 0. Get U 1.4.0 · Run U · About U

Try it

Set what each checker says: 1 (it holds), 0 (it does not) or u (it cannot tell). The answers come from U's own why.js, loaded by this page.

UuLoading U's code. Without it, this panel stays u.
What it costs, and what it saves

Suppose each checker is wrong once in 100 tries, independently of the others. Out of a million claims:

The answer comes fromWrong, silentlySays u
One checker10,0000
Majority of three2980
U: all agree, or u129,700
Bars on a log scale of silent wrong answers per million: one checker 10,000, a majority of three 298, U 1.

Exact figures from iDoMath; the once-in-100 rate is an example, not a measurement of any real checker. U pays in answers that say not yet, and almost never gives a wrong answer silently. Turned around: to be silently wrong only once in 1,000 claims, a majority vote needs each checker wrong at most about 1.84% of the time. U gets there with checkers wrong up to 10% of the time.

What U is, and what it is not

Three faces, 1, 0 and u. Its not, and and or are Kleene's strong three-valued tables, all 21 entries. A u must name what would settle it; a bare unknown is refused. Reasons travel: every step keeps the questions that could still change the answer, and who answered. Many checkers become one answer only when all of them agree.

Not a new logic. Not denser than binary: packed four bits at a time it holds about 0.896 of what those bits could. Not a guarantee: checkers that share a mistake agree on it, as Python and JavaScript did here.

Justichuu