aboutsummaryrefslogtreecommitdiffhomepage
path: root/test-suite/bugs/closed/3446.v
diff options
context:
space:
mode:
authorGravatar Matthieu Sozeau <matthieu.sozeau@inria.fr>2015-06-11 16:09:19 +0200
committerGravatar Matthieu Sozeau <matthieu.sozeau@inria.fr>2015-06-11 16:09:19 +0200
commit791ea717a0ac2150f1ce0d74c9794463abe0a01c (patch)
tree0e8938b3d4ae52d1b539e1c40117d3b8d9c3ae62 /test-suite/bugs/closed/3446.v
parent528447277f7247312425888194bbf97017319cde (diff)
Add test-suite file for bug #3446.
Diffstat (limited to 'test-suite/bugs/closed/3446.v')
-rw-r--r--test-suite/bugs/closed/3446.v47
1 files changed, 47 insertions, 0 deletions
diff --git a/test-suite/bugs/closed/3446.v b/test-suite/bugs/closed/3446.v
new file mode 100644
index 000000000..4f29b76c6
--- /dev/null
+++ b/test-suite/bugs/closed/3446.v
@@ -0,0 +1,47 @@
+(* File reduced by coq-bug-finder from original input, then from 7372 lines to 539 lines, then from 531 lines to 107 lines, then from 76 lines to 46 lines *)
+(* Set Asymmetric Patterns. *)
+(* Reserved Notation "x -> y" (at level 99, right associativity, y at level 200). *)
+(* Notation "A -> B" := (forall (_ : A), B). *)
+
+(* Notation "x → y" := (x -> y) *)
+(* (at level 99, y at level 200, right associativity): type_scope. *)
+(* Record sigT A (P : A -> Type) := *)
+(* { projT1 : A ; projT2 : P projT1 }. *)
+(* Arguments projT1 {A P} s. *)
+(* Arguments projT2 {A P} s. *)
+(* Set Universe Polymorphism. *)
+(* Definition compose {A B C : Type} (g : B -> C) (f : A -> B) := fun x => g (f x). *)
+(* Reserved Notation "x = y" (at level 70, no associativity). *)
+(* Inductive paths {A : Type} (a : A) : A -> Type := idpath : paths a a where "x = y" := (@paths _ x y). *)
+(* Definition transport {A : Type} (P : A -> Type) {x y : A} (p : x = y) (u : P x) : P y := match p with idpath => u end. *)
+(* Reserved Notation "{ x : A & P }" (at level 0, x at level 99). *)
+(* Notation "{ x : A & P }" := (sigT A (fun x => P)) : type_scope. *)
+
+
+(* Axiom path_sigma_uncurried : forall {A : Type} (P : A -> Type) (u v : sigT A P) (pq : {p : projT1 u = projT1 v & transport _ p (projT2 u) = projT2 v}), u = v. *)
+(* Axiom isequiv_pr1_contr : forall {A} {P : A -> Type}, (A -> {x : A & P x}). *)
+
+(* Definition path_sigma_hprop {A : Type} {P : A -> Type} (u v : sigT _ P) := *)
+(* @compose _ _ _ (path_sigma_uncurried P u v) (@isequiv_pr1_contr _ _). *)
+
+Set Asymmetric Patterns.
+Set Universe Polymorphism.
+Arguments projT1 {_ _} _.
+Notation "( x ; y )" := (existT _ x y).
+Notation pr1 := projT1.
+Notation "x .1" := (projT1 x) (at level 3).
+Notation "x .2" := (projT2 x) (at level 3).
+Definition compose {A B C : Type} (g : B -> C) (f : A -> B) := fun x => g (f x).
+Notation "g 'o' f" := (compose g f) (at level 40, left associativity).
+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 transport {A : Type} (P : A -> Type) {x y : A} (p : x = y) (u : P x) : P y := match p with idpath => u end.
+Notation "p # x" := (transport _ p x) (right associativity, at level 65, only parsing).
+Class IsEquiv {A B : Type} (f : A -> B) := { equiv_inv : B -> A }.
+Notation "f ^-1" := (@equiv_inv _ _ f _) (at level 3).
+Axiom path_sigma_uncurried : forall {A : Type} (P : A -> Type) (u v : sigT P) (pq : {p : u.1 = v.1 & p # u.2 = v.2}), u = v.
+Instance isequiv_pr1_contr {A} {P : A -> Type} : IsEquiv (@pr1 A P) | 100.
+Admitted.
+
+Definition path_sigma_hprop {A : Type} {P : A -> Type} (u v : sigT P) : u.1 = v.1 -> u = v :=
+ path_sigma_uncurried P u v o pr1^-1. \ No newline at end of file