]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/basic_1/sn3/nf2.ma
components: nf2, sn3, ex2
[helm.git] / matita / matita / contribs / lambdadelta / basic_1 / sn3 / nf2.ma
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 (* This file was automatically generated: do not edit *********************)
16
17 include "basic_1/sn3/fwd.ma".
18
19 include "basic_1/nf2/dec.ma".
20
21 include "basic_1/nf2/pr3.ma".
22
23 theorem sn3_nf2:
24  \forall (c: C).(\forall (t: T).((nf2 c t) \to (sn3 c t)))
25 \def
26  \lambda (c: C).(\lambda (t: T).(\lambda (H: (nf2 c t)).(let TMP_7 \def 
27 (\lambda (t2: T).(\lambda (H0: (((eq T t t2) \to (\forall (P: 
28 Prop).P)))).(\lambda (H1: (pr3 c t t2)).(let H_y \def (nf2_pr3_unfold c t t2 
29 H1 H) in (let TMP_1 \def (\lambda (t0: T).(pr3 c t t0)) in (let H2 \def 
30 (eq_ind_r T t2 TMP_1 H1 t H_y) in (let TMP_2 \def (\lambda (t0: T).((eq T t 
31 t0) \to (\forall (P: Prop).P))) in (let H3 \def (eq_ind_r T t2 TMP_2 H0 t 
32 H_y) in (let TMP_3 \def (\lambda (t0: T).(sn3 c t0)) in (let TMP_4 \def 
33 (refl_equal T t) in (let TMP_5 \def (sn3 c t) in (let TMP_6 \def (H3 TMP_4 
34 TMP_5) in (eq_ind T t TMP_3 TMP_6 t2 H_y))))))))))))) in (sn3_sing c t 
35 TMP_7)))).
36
37 theorem nf2_sn3:
38  \forall (c: C).(\forall (t: T).((sn3 c t) \to (ex2 T (\lambda (u: T).(pr3 c 
39 t u)) (\lambda (u: T).(nf2 c u)))))
40 \def
41  \lambda (c: C).(\lambda (t: T).(\lambda (H: (sn3 c t)).(let TMP_3 \def 
42 (\lambda (t0: T).(let TMP_1 \def (\lambda (u: T).(pr3 c t0 u)) in (let TMP_2 
43 \def (\lambda (u: T).(nf2 c u)) in (ex2 T TMP_1 TMP_2)))) in (let TMP_32 \def 
44 (\lambda (t1: T).(\lambda (_: ((\forall (t2: T).((((eq T t1 t2) \to (\forall 
45 (P: Prop).P))) \to ((pr3 c t1 t2) \to (sn3 c t2)))))).(\lambda (H1: ((\forall 
46 (t2: T).((((eq T t1 t2) \to (\forall (P: Prop).P))) \to ((pr3 c t1 t2) \to 
47 (ex2 T (\lambda (u: T).(pr3 c t2 u)) (\lambda (u: T).(nf2 c u)))))))).(let 
48 H_x \def (nf2_dec c t1) in (let H2 \def H_x in (let TMP_4 \def (nf2 c t1) in 
49 (let TMP_5 \def (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) in 
50 (let TMP_6 \def (\lambda (t2: T).(pr2 c t1 t2)) in (let TMP_7 \def (ex2 T 
51 TMP_5 TMP_6) in (let TMP_8 \def (\lambda (u: T).(pr3 c t1 u)) in (let TMP_9 
52 \def (\lambda (u: T).(nf2 c u)) in (let TMP_10 \def (ex2 T TMP_8 TMP_9) in 
53 (let TMP_14 \def (\lambda (H3: (nf2 c t1)).(let TMP_11 \def (\lambda (u: 
54 T).(pr3 c t1 u)) in (let TMP_12 \def (\lambda (u: T).(nf2 c u)) in (let 
55 TMP_13 \def (pr3_refl c t1) in (ex_intro2 T TMP_11 TMP_12 t1 TMP_13 H3))))) 
56 in (let TMP_31 \def (\lambda (H3: (ex2 T (\lambda (t2: T).((eq T t1 t2) \to 
57 (\forall (P: Prop).P))) (\lambda (t2: T).(pr2 c t1 t2)))).(let TMP_15 \def 
58 (\lambda (t2: T).((eq T t1 t2) \to (\forall (P: Prop).P))) in (let TMP_16 
59 \def (\lambda (t2: T).(pr2 c t1 t2)) in (let TMP_17 \def (\lambda (u: T).(pr3 
60 c t1 u)) in (let TMP_18 \def (\lambda (u: T).(nf2 c u)) in (let TMP_19 \def 
61 (ex2 T TMP_17 TMP_18) in (let TMP_30 \def (\lambda (x: T).(\lambda (H4: (((eq 
62 T t1 x) \to (\forall (P: Prop).P)))).(\lambda (H5: (pr2 c t1 x)).(let H_y 
63 \def (H1 x H4) in (let TMP_20 \def (pr3_pr2 c t1 x H5) in (let H6 \def (H_y 
64 TMP_20) in (let TMP_21 \def (\lambda (u: T).(pr3 c x u)) in (let TMP_22 \def 
65 (\lambda (u: T).(nf2 c u)) in (let TMP_23 \def (\lambda (u: T).(pr3 c t1 u)) 
66 in (let TMP_24 \def (\lambda (u: T).(nf2 c u)) in (let TMP_25 \def (ex2 T 
67 TMP_23 TMP_24) in (let TMP_29 \def (\lambda (x0: T).(\lambda (H7: (pr3 c x 
68 x0)).(\lambda (H8: (nf2 c x0)).(let TMP_26 \def (\lambda (u: T).(pr3 c t1 u)) 
69 in (let TMP_27 \def (\lambda (u: T).(nf2 c u)) in (let TMP_28 \def (pr3_sing 
70 c x t1 H5 x0 H7) in (ex_intro2 T TMP_26 TMP_27 x0 TMP_28 H8))))))) in 
71 (ex2_ind T TMP_21 TMP_22 TMP_25 TMP_29 H6))))))))))))) in (ex2_ind T TMP_15 
72 TMP_16 TMP_19 TMP_30 H3)))))))) in (or_ind TMP_4 TMP_7 TMP_10 TMP_14 TMP_31 
73 H2))))))))))))))) in (sn3_ind c TMP_3 TMP_32 t H))))).
74