Section products_limit_def.
Variables (C : Category) (I : Type) (a : I -> C).
Definition FunDiscr_ob (i : Discr I) := a i.
Definition FunDiscr_arrow (i j : Discr I) (f : i --> j) :=
match f in (Discr_mor d d0) return (Carrier (a d --> a d0)) with
| Build_Discr_mor k => Id (a k)
end.

Lemma FunDiscr_map_law :
forall i j : I, Map_law (FunDiscr_arrow (i:=i) (j:=j)).