(* Inversion lrmmas on static type assignment for terms *********************) lemma da_inv_sta: ∀h,g,G,L,T,l. ⦃G, L⦄ ⊢ T ▪[h, g] l → ∃U. ⦃G, L⦄ ⊢ T •[h] U. #h #g #G #L #T #l #H elim H -G -L -T -l [ /2 width=2/ | #G #L #K #V #i #l #HLK #_ * #W #HVW elim (lift_total W 0 (i+1)) /3 width=7/ | #G #L #K #W #i #l #HLK #_ * #V #HWV elim (lift_total W 0 (i+1)) /3 width=7/ | #a #I #G #L #V #T #l #_ * /3 width=2/ | * #G #L #V #T #l #_ * /3 width=2/ ] qed-. (* Properties on static type assignment for terms ***************************) lemma sta_da: ∀h,g,G,L,T,U. ⦃G, L⦄ ⊢ T •[h] U → ∃l. ⦃G, L⦄ ⊢ T ▪[h, g] l. #h #g #G #L #T #U #H elim H -G -L -T -U [ #G #L #k elim (deg_total h g k) /3 width=2/ | #G #L #K #V #W #W0 #i #HLK #_ #_ * /3 width=5/ | #G #L #K #W #V #W0 #i #HLK #_ #_ * /3 width=5/ | #a #I #G #L #V #T #U #_ * /3 width=2/ | #G #L #V #T #U #_ * /3 width=2/ | #G #L #W #T #U #_ * /3 width=2/ ] qed-.