How can I get Coq to recognise that two types, which are each imported from a module which is created from a module functor using the same argument, but appear in different modules, are actually the same type?
Minimal example
Module Type S.
End S.
Module F (s : S).
Inductive foo : Type := a.
End F.
Module G (s : S).
Include F s.
End G.
Module H (s : S).
Include F.
End H.
Module I (s : S).
Module G := G s.
Module H := H s.
(* This is a type error - but the foos are the same! *)
Axiom bar : forall g : G.foo, forall h : H.foo, g = h.
End I.
In the above Coq file, I want to declare an axiom that requires that the type foo in G s be the same as the type foo in H s. Clearly, this is actually the case. But can I get Coq to recognise it?