(* bisogna dimostrare "defined_envList (S ...)"
impossibile anche cercando di usare l'emulazione di inversion
*)
+naxiom defined_envList_S : ∀d.∀l:env_list (S d).defined_envList (S d) l.
+
ndefinition cut_first_envList_aux : Πd.env_list (S d) → env_list d ≝
λd.λl:env_list (S d).
match l
with
[ env_nil h ⇒ λp:defined_envList O (env_nil h).False_rect_Type0 ? p
| env_cons n h t ⇒ λp:defined_envList (S n) (env_cons n h t).t
- ] ?.
- napply (inv_envList ? l …);
- (* se apro l, a ritroso modifica il suo parametro destro d e non dimostro piu' nulla *)
- (* io pensavo di ottenere per env_nil l'assurdo S d = O ... *)
- ncases l;
+ ] (defined_envList_S d l).