(* File reduced by coq-bug-finder from original input, then from 2809 lines to 39 lines *)
Set Primitive Projections.
Set Implicit Arguments.
Module Export foo.
  Record prod (A B : Type) := pair { fst : A ; snd : B }.
End foo.
Inductive paths {A : Type} (a : A) : A -> Type := idpath : paths a a where "x = y" := (@paths _ x y) : type_scope.
Arguments idpath {A a} , [A] a.
Definition ap {A B:Type} (f:A -> B) {x y:A} (p:x = y) : f x = f y := match p with idpath => idpath end.
Axiom path_prod : forall {A B : Type} (z z' : prod A B), (fst z = fst z') -> (snd z = snd z') -> (z = z').
Notation fst := (@fst _ _).
Notation snd := (@snd _ _).
Definition ap_fst_path_prod {A B : Type} {z z' : prod A B} (p : @paths A (fst z) (fst z')) (q : snd z = snd z')
: ap fst (path_prod z z' p q) = p.
Abort.

Notation fstp x := (x.(foo.fst)).
Notation fstap x := (foo.fst x).

Definition ap_fst_path_prod' {A B : Type} {z z' : prod A B} (p : @paths A (fst z) (fst z')) (q : snd z = snd z')
: ap (fun x => fstap x) (path_prod z z' p q) = p.

Abort.

(* Toplevel input, characters 137-138:
Error:
In environment
A : Type
B : Type
z : prod A B
z' : prod A B
p : @paths A (foo.fst ?11 ?14 z) (foo.fst ?26 ?29 z')
q : @paths ?54 (foo.snd ?42 ?45 z) (foo.snd ?57 ?60 z')
The term "p" has type "@paths A (foo.fst ?11 ?14 z) (foo.fst ?26 ?29 z')"
while it is expected to have type "@paths A (foo.fst z) (foo.fst z')". *)
