Recorded description
Rat.det A n is the general-n determinant (a function Nat -> Nat -> Rat plus an explicit bound, by cofactor expansion along the first row). This fact is the ALTERNATING property: for any m, any matrix A, and any two DISTINCT row indices i, j both within bound m, if row i and row j of A agree pointwise (A i c = A j c for every column c), then det A (succ m) = 0. Distinctness is stated as Nat.beq i j = Bool.false, the Bool form this development uses throughout, and the bounds are Nat.ble i m = true / Nat.ble j m = true (matching det_row_expansion's own bound convention). This is the second of the three theorems ADR-1310 named as remaining toward determinant multiplicativity, after Rat.det_row_expansion (general-row cofactor expansion, already landed) and before sign-under-a-row-swap. The proof is a single induction on the dimension m. The base case (m = 0) is vacuous: the two bound hypotheses force i = j = 0, contradicting distinctness. The step case-splits the row indices i and j against 0 (not against each other), giving four shapes: (1) both rows nonzero -- expand along row 0, where Rat.matSkip's unconditional matSkip 0 x = succ x branch means the minor's shifted rows are exactly the original i, j by pure computation, and the outer hypotheses transfer to the induction hypothesis by defeq with no rebuilding; (2) one row is 0 and the other is at least 2 -- expand along row 1, which is always a valid expansion row regardless of the matrix's remaining size; (3) the rows are exactly {0, 1} and the matrix has no third row (dimension 2) -- closes directly from Rat.det_eq_det2 and ordinary Rat algebra (A00 = A10, A01 = A11 give A00*A11 = A01*A10 by commutativity), with no cofactor expansion; (4) the rows are exactly {0, 1} but a third row DOES exist -- expand along row 2, whose validity as an expansion row is derived from the matrix having at least 3 rows. Contrary to ADR-1310's expectation that this step would need Rat.det_congr (to relate a minor to a separately-named matrix), no branch of this proof uses det_congr: every branch applies the induction hypothesis directly to the literal minor term, because every row-index shift needed resolves by pure iota reduction once the case split has fixed the relevant index to a concrete shape (0, 1, or a successor of a bound variable).