X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Flib%2Flambda%2Fsn.ma;h=a9fbff3700afc50ae67e78db40b3e966bf60ebfd;hb=100184e7920cc3c70b50b694a17fa40ecde45e77;hp=26b1f9e77690aafaafed20ad6121de8bb3a7943d;hpb=f5f0e9cd26adc526ee69a693d5e10ccb47cc399e;p=helm.git diff --git a/matita/matita/lib/lambda/sn.ma b/matita/matita/lib/lambda/sn.ma index 26b1f9e77..a9fbff370 100644 --- a/matita/matita/lib/lambda/sn.ma +++ b/matita/matita/lib/lambda/sn.ma @@ -12,41 +12,59 @@ (* *) (**************************************************************************) -include "lambda/ext.ma". +include "lambda/ext_lambda.ma". -(* saturation conditions on an explicit subset ********************************) +(* STRONGLY NORMALIZING TERMS *************************************************) -definition SAT0 ≝ λP. ∀l,n. all P l → P (Appl (Sort n) l). +(* SN(t) holds when t is strongly normalizing *) +(* FG: we axiomatize it for now because we dont have reduction yet *) +axiom SN: T → Prop. -definition SAT1 ≝ λP. ∀l,i. all P l → P (Appl (Rel i) l). +(* lists of strongly normalizing terms *) +definition SNl ≝ all ? SN. -definition SAT2 ≝ λ(P:?→Prop). ∀F,A,B,l. P B → P A → - P (Appl F[0:=A] l) → P (Appl (Lambda B F) (A::l)). +(* saturation conditions ******************************************************) -theorem SAT0_sort: ∀P,n. SAT0 P → P (Sort n). -#P #n #H @(H (nil ?) …) // -qed. +definition CR1 ≝ λ(P:?→Prop). ∀M. P M → SN M. -theorem SAT1_rel: ∀P,i. SAT1 P → P (Rel i). -#P #i #H @(H (nil ?) …) // +definition SAT0 ≝ λ(P:?→Prop). ∀n,l. SNl l → P (Appl (Sort n) l). + +definition SAT1 ≝ λ(P:?->Prop). ∀i,l. SNl l → P (Appl (Rel i) l). + +definition SAT2 ≝ λ(P:?→Prop). ∀N,L,M,l. SN N → SN L → + P (Appl M[0:=L] l) → P (Appl (Lambda N M) (L::l)). + +definition SAT3 ≝ λ(P:?→Prop). ∀M,N,l. P (Appl (D (App M N)) l) → + P (Appl (D M) (N::l)). + +definition SAT4 ≝ λ(P:?→Prop). ∀M. P M → P (D M). + +lemma SAT0_sort: ∀P,n. SAT0 P → P (Sort n). +#P #n #HP @(HP n (nil ?) …) // qed. -(* STRONGLY NORMALIZING TERMS *************************************************) +lemma SAT1_rel: ∀P,i. SAT1 P → P (Rel i). +#P #i #HP @(HP i (nil ?) …) // +qed. -(* SN(t) holds when t is strongly normalizing *) -(* FG: we axiomatize it for now because we dont have reduction yet *) -axiom SN: T → Prop. +lemma SAT3_1: ∀P,M,N. SAT3 P → P (D (App M N)) → P (App (D M) N). +#P #M #N #HP #H @(HP … ([])) @H +qed. -definition CR1 ≝ λ(P:?→Prop). ∀M. P M → SN M. +(* axiomatization *************************************************************) axiom sn_sort: SAT0 SN. axiom sn_rel: SAT1 SN. -axiom sn_lambda: ∀B,F. SN B → SN F → SN (Lambda B F). - axiom sn_beta: SAT2 SN. -(* FG: do we need this? -axiom sn_lift: ∀t,k,p. SN t → SN (lift t p k). -*) +axiom sn_dapp: SAT3 SN. + +axiom sn_dummy: SAT4 SN. + +axiom sn_lambda: ∀N,M. SN N → SN M → SN (Lambda N M). + +axiom sn_prod: ∀N,M. SN N → SN M → SN (Prod N M). + +axiom sn_inv_app_1: ∀M,N. SN (App M N) → SN M.