Filling an empty cell with an absent symbol
ProvedProofsInTheBook.Chapter33.isPartialLatin_setCellauxiliary-lemmabook-chapter-36combinatoricslatin-squareslean4proofs-from-the-book
Write for , with . A partial array of order is a map , with denoting an empty cell. Write and . It is partial Latin when no symbol repeats within a row or column. A completion is a map injective in each row and column, with whenever . Let , let be partial Latin, and let . Assume , that occurs nowhere in row , and that occurs nowhere in column . Then
is partial Latin.
Preamble
import Init import Mathlib import Definitions.Def_P2MAssembly_Chapter33 set_option autoImplicit true open Finset open Classical open ProofsInTheBook.Chapter33
Formal statement
lemma ProofsInTheBook.Chapter33.isPartialLatin_setCell {n : ℕ} {P : Fin n → Fin n → Option (Fin n)}
{i₀ j₀ a : Fin n} (hP : IsPartialLatin P) (_hempty : P i₀ j₀ = none)
(haRow : a ∉ rowSymbols P i₀) (haCol : a ∉ colSymbols P j₀) :
IsPartialLatin (setCell P i₀ j₀ a) := by sorrySource
Original formalization: https://github.com/xiangyazi24/proof_in_the_book/blob/88d88d141768cded75e782c525ef1bf04b8fe220/ProofsInTheBook/Chapter33.lean#L663. Topic: Aigner and Ziegler, Proofs from THE BOOK, 6th edition, Chapter 36, “Completing Latin squares”, pp. 253–258 (https://doi.org/10.1007/978-3-662-57265-8_36).