To fix the bug it is necessary to propagate the substitution computed
during the type-checking of the constructors to the types of the inductive
types. This is quite complex to do. One possibility is simply to add the
substitution to the proof status.
pippo : paolo \to paolo;
piero : True
}.
+
+(* the following test used to show the following bug: the left
+ parameter A in the type of t was not unified with the left
+ parameter A in the type of the constructor of the record *)
+record t A : Type := { f : t A }.