-(* ACZEL CATEGORIES: *)
-(* We use typoids with a compatible membership relation *)
-(* The category is intended to be the domain of the membership relation *)
-(* The membership relation is necessary because we need to regard the *)
-(* domain of a propositional function (ie a subset in the predicative *)
-(* setting) as a quantification domain and therefore as a category, but *)
-(* there is no type in CIC representing the domain of a propositional *)
-(* function *)
+(* ACZEL CATEGORIES:
+ - We use typoids with a compatible membership relation
+ - The category is intended to be the domain of the membership relation
+ - The membership relation is necessary because we need to regard the
+ domain of a propositional function (ie a predicative subset) as a
+ quantification domain and therefore as a category, but there is no
+ type in CIC representing the domain of a propositional function
+ - We set up a single equality predicate, parametric on the category,
+ defined as the reflexive, symmetic, transitive and compatible closure
+ of the aceq predicate given inside the category. Then we prove the
+ properties of the equality that usually are axiomatized inside the
+ category structure. This makes categories easier to use
+*)
record AC: Type \def {
ac: Type;
aceq: ac \to ac \to Prop
}.
-definition a \def \lambda A. ac A.
+coercion ac.
-coercion a.
-
-inductive eq (A:AC) : ac A \to ac A \to Prop \def
+inductive eq (A:AC) : A \to A \to Prop \def
| eq_refl: \forall a. acin ? a \to eq A a a.