(* The reducibility candidate (r.c.) ******************************************)
-(* We use saturated subsets of strongly normalizing terms
- * (see for instance [Cescutti 2001], but a better citation is required)
- * rather than standard reducibility candidates.
+(* We use saturated subsets of strongly normalizing terms [1]
+ * rather than standard reducibility candidates [2].
* The benefit is that reduction is not needed to define such subsets.
- * Also, this approach was never tried on a system with dependent types.
+ * [1] Geuvers, H. 1994. A Short and Flexible Proof of Strong Normalization for the Calculus of Constructions.
+ * [2] Barras, B. 1996. Coq en Coq. Rapport de Recherche 3026, INRIA.
*)
record RC : Type[0] ≝ {
mem : T → Prop;
definition snRC: RC ≝ mk_RC SN ….
/2/ qed.
+(*
(* a generalization of mem on lists *)
let rec memc E l on l : Prop ≝ match l with
[ nil ⇒ True
interpretation
"componentwise membership (context of reducibility candidates)"
'mem l H = (memc H l).
-
+*)
(* extensional equality of r.c.'s *********************************************)
definition rceq: RC → RC → Prop ≝
theorem transitive_rceq: transitive … rceq.
#x #y #z #Hxy #Hyz #M (elim (Hxy M)) -Hxy (elim (Hyz M)) -Hyz /4/
qed.
-
+(*
theorem reflexive_rceql: reflexive … rceql.
#l (elim l) /2/
qed.
-
+*)
(* HIDDEN BUG:
* Without the type specification, this statement has two interpretations
* but matita does not complain
#B1 #B2 #C1 #C2 #QB #QC #M @conj #H1 #N #H2
[ lapply (symmetric_rceq … QB) -QB | lapply (symmetric_rceq … QC) -QC ] /4/
qed.
+
+