]> matita.cs.unibo.it Git - helm.git/blob - matita/matita/contribs/lambdadelta/basic_2/etc_new/drops/drops_drops.etc
- degree-based equivalene for terms
[helm.git] / matita / matita / contribs / lambdadelta / basic_2 / etc_new / drops / drops_drops.etc
1 (* Inversion lemmas on equivalence ******************************************)
2
3 lemma drop_O1_inj: ∀i,L1,L2,K. ⬇[i] L1 ≡ K → ⬇[i] L2 ≡ K → L1 ⩬[i, ∞] L2.
4 #i @(ynat_ind … i) -i
5 [ #L1 #L2 #K #H <(drop_inv_O2 … H) -K #H <(drop_inv_O2 … H) -L1 //
6 | #i #IHi * [2: #L1 #I1 #V1 ] * [2,4: #L2 #I2 #V2 ] #K #HLK1 #HLK2 //
7   lapply (drop_fwd_length … HLK1)
8   <(drop_fwd_length … HLK2) [ /4 width=5 by drop_inv_drop1, lreq_succ/ ]
9   #H [ elim (ysucc_inv_O_sn … H) | elim (ysucc_inv_O_dx … H) ]
10 | #L1 #L2 #K #H1 lapply (drop_fwd_Y2 … H1) -H1
11   #H elim (ylt_yle_false … H) //
12 ]
13 qed-.