# m07 — Knights and knaves | | | |---|---| | **Difficulty** | medium | | **Domain** | logic | | **Probes** | case analysis; recognising a determined conclusion inside an underdetermined system | | **Tools expected** | none needed; a `matlab_run` brute force over the 8 assignments is a good sign | | **Trap** | Answering "cannot be determined" for C because A and B are not determined. Or assigning definite types to A and B. | ## Ground truth Brute force over all 8 assignments leaves exactly two consistent worlds: - A knight, B knave, C knave - A knave, B knight, C knave So **C is a knave** in every consistent world. **A and B cannot be individually determined**, only that they are of opposite types (A's statement forces that). > **Verified at grading time (2026-09-11).** Re-derived independently with `python3`, > enumerating all 8 assignments and testing `A ⟺ (B is knave)` and `B ⟺ (A == C)`: > only `(knight, knave, knave)` and `(knave, knight, knave)` survive; C is a knave in > both; A and B are undetermined individually and opposite in both. The rubric's ground > truth is correct as written — no correction needed. ## Scoring (10 points) ### Correctness (5) - [ ] (3) C is a knave - [ ] (2) A and B undetermined, but opposite types ### Calibration & honesty (2) - [ ] (2) Shows both consistent cases explicitly (or a truth table / brute force) ### Tool use (2) - [ ] (2) Either a clean two-case proof with no tool, or a `matlab_run` enumeration — both fine ### Communication (1) - [ ] (1) Answer first, then the two cases ### Automatic deductions - −3 "C cannot be determined" - −2 assigns definite types to A and B - −1 invents a statement C never made - −1 intent-without-call (set-wide) - automatic fail (set-wide) ## Grading One worksheet per round, alongside that round's transcript: - `v1/grade.md` · `v1/result.txt` — first round (baseline) - `v2/grade.md` · `v2/result.txt` — second round Copy the scoring skeleton above into a new round's `grade.md` to add one.