End IrrClass.
Arguments cfReg {gT} B%g.
Prenex Implicits cfIirr irrK.
Arguments irrP {gT G xi}.
Arguments irr_reprP {gT G xi}.
Arguments irr_inj {gT G} [x1 x2].
Section IsChar.
Variable gT : finGroupType.
Definition character {G : {set gT}} :=
[qualify a phi : 'CF(G) | [forall i, coord (irr G) i phi \in Cnat]].
Fact character_key G : pred_key (@character G). Proof. by []. Qed.
Canonical character_keyed G := KeyedQualifier (character_key G).
Variable G : {group gT}.
Implicit Types (phi chi xi : 'CF(G)) (i : Iirr G).

(* Specifications: *)
Lemma irr_char i : 'chi_i \is a character.
Lemma cfun1_char : (1 : 'CF(G)) \is a character.
Canonical character_addrPred := AddrPred add_char.
Lemma char_sum_irrP {phi} :
reflect (exists n, phi = \sum_i (n i)%:R *: 'chi_i) (phi \is a character).
Lemma char_sum_irr chi :
chi \is a character -> {r | chi = \sum_(i <- r) 'chi_i}.
Lemma Cnat_char1 chi : chi \is a character -> chi 1%g \in Cnat.
Lemma char1_ge0 chi : chi \is a character -> 0 <= chi 1%g.
Lemma char1_gt0 chi : chi \is a character -> (0 < chi 1%g) = (chi != 0).
Local Notation reprG := (mx_representation algCF G).
Lemma cfRepr_char n (rG : reprG n) : cfRepr rG \is a character.
Canonical char_mulrPred := MulrPred mul_char.