+ Instance jud_second (a:Judgments_Category) : Functor Judgments_Category Judgments_Category (fun x => a,,x) :=
+ { fmor := fun b c (f:b /⋯⋯/ c) => (nd_id a) ** f }.
+ intros; unfold eqv; simpl; apply ndr_prod_respects; auto.
+ intros; unfold eqv in *; simpl in *; reflexivity.
+ intros; unfold eqv in *; simpl in *; apply (ndr_builtfrom_structural (nd_id a)); auto.
+ intros; unfold eqv in *; simpl in *.
+ setoid_rewrite <- ndr_prod_preserves_comp.
+ apply (ndr_builtfrom_structural (f;;g)); auto.
+ Defined.
+ Instance Judgments_Category_binoidal : BinoidalCat Judgments_Category (@T_Branch (??Judgment)) :=
+ { bin_first := jud_first
+ ; bin_second := jud_second }.
+
+ (* and that category is commutative (all morphisms central) *)
+ Instance Judgments_Category_Commutative : CommutativeCat Judgments_Category_binoidal.
+ apply Build_CommutativeCat.
+ intros; apply Build_CentralMorphism; intros; unfold eqv; simpl in *.
+ setoid_rewrite <- (ndr_prod_preserves_comp (nd_id a) g f (nd_id d)).
+ setoid_rewrite <- (ndr_prod_preserves_comp f (nd_id _) (nd_id _) g).
+ setoid_rewrite ndr_comp_left_identity.
+ setoid_rewrite ndr_comp_right_identity.
+ reflexivity.
+ setoid_rewrite <- (ndr_prod_preserves_comp (nd_id _) f g (nd_id _)).
+ setoid_rewrite <- (ndr_prod_preserves_comp g (nd_id _) (nd_id _) f).
+ setoid_rewrite ndr_comp_left_identity.
+ setoid_rewrite ndr_comp_right_identity.
+ reflexivity.
+ Defined.
+
+ (* Judgments form a premonoidal category *)