Fact cfun_zero_subproof : is_class_fun G (0 : {ffun _}).Definition cfun_zero := Cfun 0 cfun_zero_subproof.Definition cfun_comp f f0 phi := Cfun 0 (@cfun_comp_subproof f phi f0).Definition cfun_opp := cfun_comp (oppr0 _).Definition cfun_add phi psi := Cfun 0 (cfun_add_subproof phi psi).Definition cfun_indicator A := Cfun 1 (cfun_indicator_subproof A).Notation "''[' u ]" := '[u, u] : ring_scope.Definition cfun_mul phi psi := Cfun 0 (cfun_mul_subproof phi psi).Definition cfun_scale a := cfun_comp (mulr0 a).Fact cfun_addA : associative cfun_add.Fact cfun_addC : commutative cfun_add.Fact cfun_add0 : left_id cfun_zero cfun_add.Fact cfun_addN : left_inverse cfun_zero cfun_opp cfun_add.Definition cfun_zmodMixin := ZmodMixin cfun_addA cfun_addC cfun_add0 cfun_addN.Canonical cfun_zmodType := ZmodType classfun cfun_zmodMixin.Fact cfun_mulA : associative cfun_mul.Fact cfun_mulC : commutative cfun_mul.Fact cfun_mul1 : left_id '1_G cfun_mul.Fact cfun_mulD : left_distributive cfun_mul cfun_add.Definition cfun_ringMixin :=
  ComRingMixin cfun_mulA cfun_mulC cfun_mul1 cfun_mulD cfun_nz1.Canonical cfun_ringType := RingType classfun cfun_ringMixin.Canonical cfun_comRingType := ComRingType classfun cfun_mulC.Definition cfun_unitMixin := ComUnitRingMixin cfun_mulV cfun_unitP cfun_inv0id.Canonical cfun_unitRingType := UnitRingType classfun cfun_unitMixin.Fact cfun_scaleA a b phi :
  cfun_scale a (cfun_scale b phi) = cfun_scale (a * b) phi.Fact cfun_scale1 : left_id 1 cfun_scale.Fact cfun_scaleDl phi : {morph cfun_scale^~ phi : a b / a + b}.Definition cfun_lmodMixin :=
  LmodMixin cfun_scaleA cfun_scale1 cfun_scaleDr cfun_scaleDl.Canonical cfun_lmodType := LmodType algC classfun cfun_lmodMixin.Canonical cfun_lalgType := LalgType algC classfun cfun_scaleAl.Canonical cfun_algType := AlgType algC classfun cfun_scaleAr.Definition cfAut := cfun_comp (rmorph0 u).

Lemma cfAut_cfun1i A : cfAut '1_A = '1_A.