Local Notation power := (mscal mult 1).Local Notation expo := (mscal mult 1).Notation Π := (msum mult 1).Notation mprod_an := (fun a n => Π n (fun i => i+a)).Fact mprod_factorial n : fact n = mprod_an 1 n.Infix "⊗" := (Zp_mult Hp) (at level 40, left associativity).Notation φ := (fun n r => mprod_an (n*p+1) r).Notation Ψ := (fun n => Π n (fun i => mprod_an (i*p+1) (p-1))).Fact mprod_factorial_mult n : fact (n*p) = expo n p * fact n * Ψ n.

(* Specifications: *)
Lemma mprod_factorial_euclid n r : fact (n*p+r) = expo n p * fact n * φ n r * Ψ n.