X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Flib%2FlambdaN%2Finversion.ma;h=511fa03090cb2aa56a37d8c7f10df8c32759306b;hb=84713c9446ff13dd26533590985a0df67cb5ec7e;hp=0c2c2a98b39bc6c37e35181dc87b3913c1f2107e;hpb=15190ed1fb47989f2d50261db7991186ec3d5e47;p=helm.git diff --git a/matita/matita/lib/lambdaN/inversion.ma b/matita/matita/lib/lambdaN/inversion.ma index 0c2c2a98b..511fa0309 100644 --- a/matita/matita/lib/lambdaN/inversion.ma +++ b/matita/matita/lib/lambdaN/inversion.ma @@ -9,7 +9,7 @@ \ / V_______________________________________________________________ *) -include "lambda/types.ma". +include "lambdaN/thinning.ma". (* inductive TJ (p: pts): list T → T → T → Prop ≝ @@ -34,18 +34,6 @@ inductive TJ (p: pts): list T → T → T → Prop ≝ TJ p G A B → TJ p G B (Sort i) → TJ p G (D A) B. *) -axiom lambda_lift : ∀A,B,C. lift A 0 1 = Lambda B C → -∃P,Q. A = Lambda P Q ∧ lift P 0 1 = B ∧ lift Q 1 1 = C. - -axiom prod_lift : ∀A,B,C. lift A 0 1 = Prod B C → -∃P,Q. A = Prod P Q ∧ lift P 0 1 = B ∧ lift Q 1 1 = C. - -axiom conv_lift: ∀P,M,N. Co P M N → Co P (lift M 0 1) (lift N 0 1). - -axiom weak_in: ∀P,G,A,B,M,N, i. - A::G ⊢_{P} M : N → G ⊢_{P} B : Sort i → - (lift A 0 1)::B::G ⊢_{P} lift M 1 1 : lift N 1 1. - axiom refl_conv: ∀P,A. Co P A A. axiom sym_conv: ∀P,A,B. Co P A B → Co P B A. axiom trans_conv: ∀P,A,B,C. Co P A B → Co P B C → Co P A C. @@ -97,4 +85,22 @@ theorem abs_inv: ∀P,G,M,N. G ⊢ _{P} M : N → ∀A,b.M = Lambda A b → |#G1 #A #B #i #t1 #t2 #_ #_ #A1 #b #eqA destruct ] qed. + +theorem dummy_inv: ∀P,G,M,N. G ⊢ _{P} M: N → ∀A,B.M = D A B → + Co P N B ∧ G ⊢_{P} A : B. +#Pts #G #M #N #t (elim t); + [#i #j #Aij #A #b #H destruct + |#G1 #P #i #t #_ #A #b #H destruct + |#G1 #P #Q #R #i #t1 #t2 #H1 #_ #A #b #Hl + cases (dummy_lift … Hl) #A1 * #b1 * * #eqP #eqA #eqb + cases (H1 … eqP) #c1 #t3