Executable Knowledge: Cases Episode 02

Castling through an unchecked square

One castling move, three states of knowledge about a single square. The FIDE Laws of Chess give a yes in one case and refuse to say no in the other two, for two different reasons.

6 min3 cases

Jump to an Arxo answer

AI-generated podcast with synthetic hosts and AI-generated music. Every verdict and its stated grounds come from a recorded Arxo run; the facts, full answers and hashes are below.

Transcript

Plain text

SarahRoger, quick scenario. Tournament hall. You're playing White, your hand is on the king, you're about to castle. And your opponent leans in and asks: has anyone actually checked that square?

RogerAnd nobody has. Which is exactly today's episode: one move, and three different things we might know about one square.

RogerQuick housekeeping first. We're both synthetic voices, the music is generated too, and so is this show. The answers aren't invented, though. Every result you'll hear comes from a recorded Arxo run, and the facts and hashes for each one are in the show notes.

RogerThis is Executable Knowledge: Cases.

RogerChess players learn it early: you don't castle through check. FIDE Laws of Chess, Article 3.8.2: the square the king stands on, the square it crosses, and the square it lands on can't be attacked.

SarahThat part everybody knows.

RogerRight. The tricky part is that little word, not. Not under attack. What does that mean when nobody has looked at the square?

SarahIt means... nobody has looked at the square.

RogerExactly. And that's not the same as nothing there. So we loaded the FIDE rule into Arxo, set up one position, White castling on the king's side, king and rook never moved, and asked the same question three times. Only one thing changes: what the record says about those squares.

SarahCase one.

RogerThe squares were checked, and the record says the square the king has to cross is under attack.

Arxo answerResult: not established.

SarahNot established. So that's a no?

RogerNot quite, and that difference will matter in a minute. It isn't a yes. The rule doesn't grant castling here, and it tells you exactly which condition broke.

Arxo answerBlocker. Required: not — the king's square, the square it must cross, or the square it is to occupy is attacked. Status: refuted.

RogerRefuted. That condition was supposed to hold, and the record says it doesn't: the path is attacked. So the rule won't sign off.

SarahThe path is attacked, so the rule won't sign off. Beginner's book.

RogerBeginner's book. But remember that word: refuted.

SarahCase two.

RogerSame position. The squares were checked, and nothing was found. No attack recorded, no piece in the way.

Arxo answerResult: true. Rule applied: Castling Legal.

SarahThere we go. A yes.

RogerA yes, with eight reasons. Four are plain facts somebody wrote down: White's king, White's rook, White has the move, and White wants to castle with that rook.

RogerThe other four are the interesting ones. The path isn't attacked. There's no piece between the king and the rook. The rook hasn't moved. And the king hasn't moved.

SarahAren't those just facts too?

RogerNobody typed them in. There's no fact saying the path isn't attacked. There's a line saying these squares were checked, and these pieces were checked. The answer marks all four the same way: checked, nothing recorded.

RogerThat's how a not gets earned here. Somebody looked, so an empty record is a clean record.

SarahSo, case three.

RogerCase three is case two with one line deleted. Same board, same pieces, nothing on record about an attack. But nothing says the squares were checked, either.

RogerThat's the tournament hall: hand on the king, and nobody has looked.

Arxo answerResult: not established.

SarahHang on. No attack on record, nothing in the way. Same board as case two. Why isn't it a yes?

RogerSame board, different record. Case two was checked. Case three never was. Listen to the answer this time.

Arxo answerNo blocker. Not refuted — simply no derivation.

RogerNo blocker. Case one had a refuted condition. Here nothing is refuted. Two conditions are simply unknown.

Arxo answerRequired: not — there is a piece between the king and the rook with which castling is to be effected. Status: unknown. Required: not — the king's square, the square it must cross, or the square it is to occupy is attacked. Status: unknown.

SarahSo it's not saying the squares are attacked. And it's not saying they're safe.

RogerRight. It's saying: I don't have that.

RogerThat's the point. A system that reads no attack on file as no attack would wave White straight through. Arxo doesn't. Unknown is not no, and it isn't yes, either.

SarahSo two of the three cases say not established.

RogerFor completely different reasons. In case one, we looked and found a problem. In case three, nobody looked.

SarahWhere else does this bite?

RogerAnywhere a missing record gets read as a clean one. An inspection with no defects recorded: inspected and fine, or never inspected? An audit with no exceptions noted: same question.

RogerArxo keeps those three apart: looked and found a problem, looked and found nothing, never looked.

RogerThree cases, one rule, one square. The facts, the full answers and the hashes are in the show notes. Run them again and you'll get the same three answers.

SarahNext time: another rule, and a few more cases that don't go the way you'd expect.

RogerBoth voices synthetic, every answer from a real run. This was Executable Knowledge: Cases, from Arxo.

The cases behind the answers

Each answer was produced by a recorded Arxo run. Open a case to see the facts it was given, the full answer and the hashes that pin the run.

attacked: f1 is under attackNEITHER

Result: not established. Required: not — the king's square, the square it must cross, or the square it is to occupy is attacked. Status: refuted. Blocker. Required: not — the king's square, the square it must cross, or the square it is to occupy is attacked. Status: refuted.

Facts given

  • player_has_the_move(urn:fide:game:demo-game, urn:fide:player:white)
  • king_of(urn:fide:player:white, urn:fide:piece:white-king)
  • rook_of(urn:fide:player:white, urn:fide:piece:h1-rook)
  • castling_side_of(urn:fide:game:demo-game, urn:fide:player:white, urn:fide:side:kingside, urn:fide:piece:h1-rook)
  • checked_piece(urn:fide:piece:white-king)
  • checked_piece(urn:fide:piece:h1-rook)
  • checked_castling_side(urn:fide:side:kingside)
  • castling_path_attacked(urn:fide:side:kingside)

Hashes

resultHash
sha256:3b651960edec8bcf39194f9d919390f5feb4d37921284684760f1365b33c32a0
proofHash
sha256:e015b3cde04d1e1cfec74f4acb6be4ca7638b3cf968bb39865ef4008fd684db2
caseHash
sha256:3d36732827f8bb7fb764d4dd8f61dcdff3f25e2f46624cd063d83e44a9f66d7d
programHash
sha256:7f5bfa3ff02f735b18da7eaf7df6a7b617a4362cd292670037efd5e3a088e0e1
semanticHash
sha256:734437283db05e74d5f1d17809a0a59e7a3143b0eb4f0b06e900a2ecd52e8cde
clear: the path is known to be safeTRUE_ONLY

Result: true. Rule applied: Castling Legal.

Facts given

  • player_has_the_move(urn:fide:game:demo-game, urn:fide:player:white)
  • king_of(urn:fide:player:white, urn:fide:piece:white-king)
  • rook_of(urn:fide:player:white, urn:fide:piece:h1-rook)
  • castling_side_of(urn:fide:game:demo-game, urn:fide:player:white, urn:fide:side:kingside, urn:fide:piece:h1-rook)
  • checked_piece(urn:fide:piece:white-king)
  • checked_piece(urn:fide:piece:h1-rook)
  • checked_castling_side(urn:fide:side:kingside)

Hashes

resultHash
sha256:0966e937e1a7529cde55560bd09334de2671b00255b5f65b2a5272584305bcf4
proofHash
sha256:9a81e387835b626772c217e18e805ed1c324f67ee2bcef4d7d1f7cb9b2cde341
caseHash
sha256:2fb84d7afe0016484ff2e847f84779175dd440ca2c29288c5225351423f02f72
programHash
sha256:7f5bfa3ff02f735b18da7eaf7df6a7b617a4362cd292670037efd5e3a088e0e1
semanticHash
sha256:9db799184013131ba76e6596b99158d8a59f2b0c605b3b3809bb4dd615421916
unknown: nobody has checked the pathNEITHER

Result: not established. Required: not — there is a piece between the king and the rook with which castling is to be effected. Status: unknown. Required: not — the king's square, the square it must cross, or the square it is to occupy is attacked. Status: unknown. No blocker. Not refuted — simply no derivation.

Facts given

  • player_has_the_move(urn:fide:game:demo-game, urn:fide:player:white)
  • king_of(urn:fide:player:white, urn:fide:piece:white-king)
  • rook_of(urn:fide:player:white, urn:fide:piece:h1-rook)
  • castling_side_of(urn:fide:game:demo-game, urn:fide:player:white, urn:fide:side:kingside, urn:fide:piece:h1-rook)
  • checked_piece(urn:fide:piece:white-king)
  • checked_piece(urn:fide:piece:h1-rook)

Hashes

resultHash
sha256:afc0eaa043e59eaa151fe4293722b859c4a8a0cf4f425083d51d56ad674b1b03
proofHash
sha256:bc96d7d426f3631dce0620c9001d5001aff2307f198f4237d778dfa88d8f6d79
caseHash
sha256:0a4aa6fa46ea6351705946fab5815e53957ac0c152bae71017739e3e9df13a73
programHash
sha256:7f5bfa3ff02f735b18da7eaf7df6a7b617a4362cd292670037efd5e3a088e0e1
semanticHash
sha256:3768800eb1b2a1e9c9baa1ae4acb093f03e6a9ddb4c9938d20fd1885e39bf1d8

Run it again

Engine semantics law.core/0.2.7. Source: FIDE Laws of Chess (in force from 1 January 2023), Article 3.8.2.

./law engine lower corpus/laws/org/fide/laws-chess > program.lawir.json
./law engine evaluate-test marketing/channels/podcast/episodes/02-castling/case.lawtest --test <N> --program program.lawir.json --out run/