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_n2 : forall x y z t : square, uniq [:: x; y; z; t] ->
#|[set p : col_squares | (p x == p y) && (p z == p t)]| = (n ^ 2)%N.