+implied lemma fsubst0_ind:
+ \forall (i: nat).(\forall (v: T).(\forall (c1: C).(\forall (t1: T).(\forall
+(P: ((C \to (T \to Prop)))).(((\forall (t2: T).((subst0 i v t1 t2) \to (P c1
+t2)))) \to (((\forall (c2: C).((csubst0 i v c1 c2) \to (P c2 t1)))) \to
+(((\forall (t2: T).((subst0 i v t1 t2) \to (\forall (c2: C).((csubst0 i v c1
+c2) \to (P c2 t2)))))) \to (\forall (c: C).(\forall (t: T).((fsubst0 i v c1
+t1 c t) \to (P c t)))))))))))
+\def
+ \lambda (i: nat).(\lambda (v: T).(\lambda (c1: C).(\lambda (t1: T).(\lambda
+(P: ((C \to (T \to Prop)))).(\lambda (f: ((\forall (t2: T).((subst0 i v t1
+t2) \to (P c1 t2))))).(\lambda (f0: ((\forall (c2: C).((csubst0 i v c1 c2)
+\to (P c2 t1))))).(\lambda (f1: ((\forall (t2: T).((subst0 i v t1 t2) \to
+(\forall (c2: C).((csubst0 i v c1 c2) \to (P c2 t2))))))).(\lambda (c:
+C).(\lambda (t: T).(\lambda (f2: (fsubst0 i v c1 t1 c t)).(match f2 with
+[(fsubst0_snd x x0) \Rightarrow (f x x0) | (fsubst0_fst x x0) \Rightarrow (f0
+x x0) | (fsubst0_both x x0 x1 x2) \Rightarrow (f1 x x0 x1 x2)]))))))))))).
+
+lemma fsubst0_gen_base: