Ltac inv_tac :=
apply: esym (etrans _ (mul1g _)); apply: canRL (mulgK _) _;
let a := fresh "a" in apply/permP => a;
apply/eqP; rewrite permM !permE; case: a; do 4?case.

Lemma card_n3 : forall x y : square, x != y ->
#|[set k : col_squares | k x == k y]| = (n ^ 3)%N.