Class CCCviaNatDed (A: Type) (prod expo: A -> A -> A) {ND: NatDed A}: Prop :=
  isCCC: CartesianClosedCat.CCC A derives eq prod expo.Class CCCviaNatDed (A: Type) (prod expo: A -> A -> A) {ND: NatDed A}: Prop :=
  isCCC: CartesianClosedCat.CCC A derives eq prod expo.

Lemma CCC_distrib_orp_prod: forall A prod expo {ND : NatDed A} {CCC: CCCviaNatDed A prod expo} P Q R, prod (orp P Q) R = orp (prod P R) (prod Q R).