X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Flib%2Flambda%2Fdegree.ma;h=1fa4ee7ecc382ffba6cb7abb7712b4f81719341b;hb=e28ee799d0281fb76d484d9b4c01d8bed4716bbe;hp=bfe0fe3e9a53f19a18f04f82e7e6f50a0f82cbf7;hpb=41c4bfe9415b1b40278878dd767b734c61a47a69;p=helm.git diff --git a/matita/matita/lib/lambda/degree.ma b/matita/matita/lib/lambda/degree.ma index bfe0fe3e9..1fa4ee7ec 100644 --- a/matita/matita/lib/lambda/degree.ma +++ b/matita/matita/lib/lambda/degree.ma @@ -119,6 +119,42 @@ interpretation "degree assignment (type context)" 'IInt1 G L = (Deg L G). interpretation "degree assignment (type context)" 'IInt G = (Deg (nil ?) G). -lemma Deg_append: ∀L,G,H. ║H @ G║_[L] = ║H║_[║G║_[L]]. +lemma Deg_cons: ∀L,F,t. let H ≝ Deg L F in + ║t :: F║_[L] = ║t║_[H] - 1 :: H. +// qed. + +lemma ltl_Deg: ∀L,G. ltl … (║G║_[L]) (|G|) = L. +#L #G elim G normalize // +qed. + +lemma Deg_Deg: ∀L,G,H. ║H @ G║_[L] = ║H║_[║G║_[L]]. #L #G #H elim H normalize // qed. + +interpretation "degree assignment (type context)" 'IIntS1 G L = (lhd ? (Deg L G) (length ? G)). + +lemma length_DegHd: ∀L,G. |║G║*_[L]| = |G|. +#L #G elim G normalize // +qed. + +lemma Deg_decomp: ∀L,G. ║G║*_[L] @ L = ║G║_[L]. +// qed. + +lemma append_Deg: ∀L,G,H. ║H @ G║_[L] = ║H║*_[║G║_[L]] @ ║G║_[L]. +// qed. + +lemma DegHd_Lift: ∀L,Lp,p. p = |Lp| → + ∀G. ║Lift G p║*_[Lp @ L] = ║G║*_[L]. +#L #Lp #p #HLp #G elim G // +#t #G #IH normalize >IH Deg_cons >Deg_cons in ⊢ (???%) +>append_Deg >append_Deg DegHd_Lift; [2: //] +>deg_lift; [2,3: >HGk /2/] <(deg_subst … k) // >HGk /2/ +qed.