fact: Fixpoint refineConstructor {dom : list Type} : constructorType oldRep dom -> constructorType newRep dom -> Prop := match dom return constructorType oldRep dom -> constructorType newRep dom -> Prop with | nil => fun oldConstructor newConstructor => refine (r_o' <- oldConstructor; {r_n | r_o' ≃ r_n}) (newConstructor) | cons D dom' => fun oldConstructor newConstructor => forall d : D, @refineConstructor dom' (oldConstructor d) (newConstructor d) end.
imports: Fiat.Common Fiat.Computation Fiat.ADT Coq.Sets.Ensembles