(**************************************************************************) (* ___ *) (* ||M|| *) (* ||A|| A project by Andrea Asperti *) (* ||T|| *) (* ||I|| Developers: *) (* ||T|| The HELM team. *) (* ||A|| http://helm.cs.unibo.it *) (* \ / *) (* \ / This file is distributed under the terms of the *) (* v GNU General Public License Version 2 *) (* *) (**************************************************************************) include "basic_2/multiple/frees.ma". include "basic_2/multiple/llpx_sn_alt_rec.ma". (* LAZY SN POINTWISE EXTENSION OF A CONTEXT-SENSITIVE REALTION FOR TERMS ****) (* alternative definition of llpx_sn (not recursive) *) definition llpx_sn_alt: relation3 lenv term term → relation4 ynat term lenv lenv ≝ λR,l,T,L1,L2. |L1| = |L2| ∧ (∀I1,I2,K1,K2,V1,V2,i. l ≤ yinj i → L1 ⊢ i ϵ 𝐅*[l]⦃T⦄ → ⬇[i] L1 ≡ K1.ⓑ{I1}V1 → ⬇[i] L2 ≡ K2.ⓑ{I2}V2 → I1 = I2 ∧ R K1 V1 V2 ). (* Main properties **********************************************************) theorem llpx_sn_llpx_sn_alt: ∀R,T,L1,L2,l. llpx_sn R l T L1 L2 → llpx_sn_alt R l T L1 L2. #R #U #L1 @(f2_ind … rfw … L1 U) -L1 -U #x #IHx #L1 #U #Hx #L2 #l #H elim (llpx_sn_inv_alt_r … H) -H #HL12 #IHU @conj // #I1 #I2 #K1 #K2 #V1 #V2 #i #Hli #H #HLK1 #HLK2 elim (frees_inv … H) -H [ -x #HnU elim (IHU … HnU HLK1 HLK2) -IHU -HnU -HLK1 -HLK2 /2 width=1 by conj/ | * #J1 #K10 #W10 #j #Hlj #Hji #HnU #HLK10 yminus_inj >yminus_inj #HnW10 destruct lapply (drop_fwd_drop2 … HLK10) #H lapply (drop_conf_ge … H … HLK1 ?) -H /2 width=1 by ylt_fwd_le_succ1/ (minus_plus_k_k j (i+1)) in ⊢ (%→?); >commutative_plus yminus_SO2 #HnV1 #HKY1 #HKY2 (**) (* full auto too slow *) lapply (drop_trans_ge … H1 … HKY1 ?) -H1 -HKY1 // #HLY1 lapply (drop_trans_ge … H2 … HKY2 ?) -H2 -HKY2 // #HLY2 /4 width=9 by frees_be, yle_plus_dx2_trans, yle_succ_dx, ylt_inj/ qed-.