Permutation-group structure on permutation vectors.
This module develops the operations on permutation vectors that the elementary
row and column operation laws are built from: finTranspose and
transposePermutationValues/swapPermutationValues (position and value swaps),
inversePermutationVector, and composePermutationValues. It shows these
preserve membership in permutationVectors and tracks their effect on inversion
parity, culminating in detSign_swapPermutationValues and the multiplicativity
law detSign_composePermutationValues. The elementary-operation determinant
laws themselves live in HexDeterminant.RowOps.
Swap the values i and j inside a permutation vector, leaving positions
fixed. This models the column permutation induced by exchanging two columns.
Equations
- Hex.Matrix.swapPermutationValues perm i j = Vector.map (Hex.Matrix.finTranspose i j) perm
Instances For
Entrywise characterization of swapPermutationValues: occurrences of
i become j, occurrences of j become i, and all other values stay put.
The inverse permutation vector: at value c, return the position where
c occurs in perm.
Equations
- Hex.Matrix.inversePermutationValues perm hnodup = Vector.ofFn fun (c : Fin n) => ⟨List.idxOf c perm.toList, ⋯⟩
Instances For
Equations
- Hex.Matrix.inversePermutationVector perm = if hnodup : perm.toList.Nodup then Hex.Matrix.inversePermutationValues perm hnodup else perm
Instances For
Equations
- Hex.Matrix.composePermutationValues sigma tau = Vector.ofFn fun (i : Fin n) => sigma[tau[i]]
Instances For
Swapping two distinct values in a duplicate-free permutation vector flips the determinant sign. This is the sign bookkeeping for column swaps.
Multiplicativity of detSign under composition of permutation vectors.
The sign of a composed permutation equals the product of the component signs.
Inverse-orientation form of detSign_composePermutationValues: the sign of
tau is the sign of sigma times the sign of composePermutationValues sigma tau.