]> matita.cs.unibo.it Git - helm.git/commitdiff
support for candidates of reducibility started ...
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Fri, 18 Nov 2011 12:27:16 +0000 (12:27 +0000)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Fri, 18 Nov 2011 12:27:16 +0000 (12:27 +0000)
matita/matita/contribs/lambda_delta/Basic_2/grammar/cl_weight.ma
matita/matita/contribs/lambda_delta/Basic_2/grammar/term_simple.ma
matita/matita/contribs/lambda_delta/Basic_2/grammar/term_weight.ma
matita/matita/contribs/lambda_delta/Basic_2/reducibility/apr_cr.ma [new file with mode: 0644]
matita/matita/contribs/lambda_delta/Basic_2/reducibility/tnf.ma
matita/matita/contribs/lambda_delta/Basic_2/reducibility/trf.ma
matita/matita/contribs/lambda_delta/Basic_2/reducibility/twhnf.ma
matita/matita/contribs/lambda_delta/Basic_2/unfold/ltpss.ma
matita/matita/contribs/lambda_delta/Basic_2/unfold/tpss.ma
matita/matita/contribs/lambda_delta/Ground_2/notation.ma
matita/matita/contribs/lambda_delta/Ground_2/star.ma

index 355b8a7973a46bbcd67c4093df77939cbc2a9b0f..0414499a59de0aee49a610b8bf83394a6388d970 100644 (file)
@@ -26,7 +26,7 @@ interpretation "weight (closure)" 'Weight L T = (cw L T).
 (* Basic_1: was: flt_wf__q_ind *)
 
 (* Basic_1: was: flt_wf_ind *)
-axiom cw_wf_ind: ∀R:lenv→term→Prop.
+axiom cw_wf_ind: ∀R:lenv→predicate term.
                  (∀L2,T2. (∀L1,T1. #[L1,T1] < #[L2,T2] → R L1 T1) → R L2 T2) →
                  ∀L,T. R L T.
 
index cd387ee0270eb31ad5780510bfe05b429d254813..be4811eebd0819ee1de128e67779a5b076b7205d 100644 (file)
@@ -16,7 +16,7 @@ include "Basic_2/grammar/term.ma".
 
 (* SIMPLE (NEUTRAL) TERMS ***************************************************)
 
-inductive simple: term → Prop ≝
+inductive simple: predicate term ≝
    | simple_atom: ∀I. simple (𝕒{I})
    | simple_flat: ∀I,V,T. simple (𝕗{I} V. T)
 .
index 874f030f68e80bcda34e8467cc18999fb6fc0d7a..8eaa24acad195dbe26bb4c8eb0437c5f72ece6c1 100644 (file)
@@ -32,7 +32,7 @@ qed.
 
 (* Basic eliminators ********************************************************)
 
-axiom tw_wf_ind: ∀R:term→Prop.
+axiom tw_wf_ind: ∀R:predicate term.
                  (∀T2. (∀T1. #[T1] < #[T2] → R T1) → R T2) →
                  ∀T. R T.
 
diff --git a/matita/matita/contribs/lambda_delta/Basic_2/reducibility/apr_cr.ma b/matita/matita/contribs/lambda_delta/Basic_2/reducibility/apr_cr.ma
new file mode 100644 (file)
index 0000000..b46de84
--- /dev/null
@@ -0,0 +1,43 @@
+(**************************************************************************)
+(*       ___                                                              *)
+(*      ||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/grammar/term_simple.ma".
+
+(* CANDIDATES OF REDUCIBILITY ***********************************************)
+
+(* abstract conditions for candidates *)
+
+definition CR1: predicate term → predicate term → Prop ≝
+                λRD,RC. ∀T. RC T → RD T.
+
+definition CR2: relation term → predicate term → Prop ≝
+                λRR,RC. ∀T1,T2. RC T1 → 𝕊[T1] → RR T1 T2 → RC T2.
+
+definition CR3: relation term → predicate term → Prop ≝
+                λRR,RC. ∀T1. (∀T2. RR T1 T2 → RC T2) → 𝕊[T1] → RC T1.
+
+(* a candidate *)
+record cr (RR:relation term) (RD:predicate term): Type[0] ≝ {
+   in_cr: predicate term;
+   cr1: CR1 RD in_cr;
+   cr2: CR2 RR in_cr;
+   cr3: CR3 RR in_cr
+}.
+
+interpretation
+   "context-free parallel reduction (term)"
+   'InSubset T R = (in_cr ? ? R T).
+
+definition in_fun_cr: ∀RR,RD. ∀D,C:(cr RR RD). predicate term ≝
+                      λRR,RD,D,C,T. ∀V. V ϵ D → 𝕔{Appl}V.T ϵ C.
index a9a262efed9b6ef5a23066e547d1b71377b70dd7..5772e7626139acaf15d9a63ee2eb8f1508727f89 100644 (file)
@@ -18,8 +18,7 @@ include "Basic_2/reducibility/tpr.ma".
 
 (* CONTEXT-FREE NORMAL TERMS ************************************************)
 
-definition tnf: term → Prop ≝
-   NF … tpr (eq …).
+definition tnf: predicate term ≝ NF … tpr (eq …).
 
 interpretation
    "context-free normality (term)"
index ccdf59224fd0ea15abc19dbc17b58d250f0b6e5f..96d67871645582d4e66a7467654f35d89099cf0f 100644 (file)
@@ -17,7 +17,7 @@ include "Basic_2/grammar/term_simple.ma".
 (* CONTEXT-FREE REDUCIBLE AND IRREDUCIBLE TERMS *****************************)
 
 (* reducible terms *)
-inductive trf: term → Prop ≝
+inductive trf: predicate term ≝
 | trf_abst_sn: ∀V,T.   trf V → trf (𝕔{Abst} V. T)
 | trf_abst_dx: ∀V,T.   trf T → trf (𝕔{Abst} V. T)
 | trf_appl_sn: ∀V,T.   trf V → trf (𝕔{Appl} V. T)
@@ -32,8 +32,7 @@ interpretation
    'Reducible T = (trf T).
 
 (* irreducible terms *)
-definition tif: term → Prop ≝
-   λT. ℝ[T] → False.
+definition tif: predicate term ≝ λT. ℝ[T] → False.
 
 interpretation
    "context-free irreducibility (term)"
index dea7077b494eafd17e09fc2798bd20e964b3e066..ccfaa6aa69c8b0e106ea2b7ed1501023899850d3 100644 (file)
@@ -17,8 +17,7 @@ include "Basic_2/reducibility/tpr.ma".
 
 (* CONTEXT-FREE WEAK HEAD NORMAL TERMS **************************************)
 
-definition twhnf: term → Prop ≝
-   NF … tpr thom.
+definition twhnf: predicate term ≝ NF … tpr thom.
 
 interpretation
    "context-free weak head normality (term)"
index 456a3aae092175e57197acb75539f1faecf08870..eb02c3a0614fbc52597bfb0136afb6d2f9f17a77 100644 (file)
@@ -25,7 +25,7 @@ interpretation "partial unfold (local environment)"
 
 (* Basic eliminators ********************************************************)
 
-lemma ltpss_ind: ∀d,e,L1. ∀R: lenv → Prop. R L1 →
+lemma ltpss_ind: ∀d,e,L1. ∀R:predicate lenv. R L1 →
                  (∀L,L2. L1 [d, e] ≫* L → L [d, e] ≫ L2 → R L → R L2) →
                  ∀L2. L1 [d, e] ≫* L2 → R L2.
 #d #e #L1 #R #HL1 #IHL1 #L2 #HL12 @(TC_star_ind … HL1 IHL1 … HL12) //
index 62eb25d49460d3390da3b14f1005ae7ba5a1d4b1..f21f3603eb01e5a35bd6d93460b2374f746bc7eb 100644 (file)
@@ -24,7 +24,7 @@ interpretation "partial unfold (term)"
 
 (* Basic eliminators ********************************************************)
 
-lemma tpss_ind: ∀d,e,L,T1. ∀R: term → Prop. R T1 →
+lemma tpss_ind: ∀d,e,L,T1. ∀R:predicate term. R T1 →
                 (∀T,T2. L ⊢ T1 [d, e] ≫* T → L ⊢ T [d, e] ≫ T2 → R T → R T2) →
                 ∀T2. L ⊢ T1 [d, e] ≫* T2 → R T2.
 #d #e #L #T1 #R #HT1 #IHT1 #T2 #HT12 @(TC_star_ind … HT1 IHT1 … HT12) //
index dab6b49826bb7307257e89cf611a2638fe8b577d..65cb0a029002d649b669574ca28b4cc1fcf440ef 100644 (file)
 
 (* GENERAL NOTATION USED BY THE FORMAL SYSTEM λδ ****************************)
 
+(* Subsets ******************************************************************)
+
+notation "hvbox( T ϵ break R )"
+   non associative with precedence 45
+   for @{ 'InSubset $T $R }.
+
 (* Lists ********************************************************************)
 
 notation "hvbox( hd break :: tl )"
index e438b44f0c6bea578f1b243f7985aa68a8f51ec6..097151367c0686266bf03fe3c637c999ec1b13b4 100644 (file)
@@ -17,6 +17,8 @@ include "Ground_2/xoa_props.ma".
 
 (* PROPERTIES of RELATIONS **************************************************)
 
+definition predicate: Type[0] → Type[0] ≝ λA. A → Prop.
+
 definition Decidable: Prop → Prop ≝
    λR. R ∨ (R → False). 
 
@@ -105,16 +107,16 @@ qed.
 lemma TC_reflexive: ∀A,R. reflexive A R → reflexive A (TC … R).
 /2/ qed.
 
-lemma TC_star_ind: ∀A,R. reflexive A R → ∀a1. ∀P:A→Prop.
+lemma TC_star_ind: ∀A,R. reflexive A R → ∀a1. ∀P:predicate A.
                    P a1 → (∀a,a2. TC … R a1 a → R a a2 → P a → P a2) →
                    ∀a2. TC … R a1 a2 → P a2.
 #A #R #H #a1 #P #Ha1 #IHa1 #a2 #Ha12 elim Ha12 -Ha12 a2 /3/
 qed.
 
-definition NF: ∀A. relation A → relation A → A → Prop ≝
+definition NF: ∀A. relation A → relation A → predicate A ≝
    λA,R,S,a1. ∀a2. R a1 a2 → S a1 a2.
 
-inductive SN (A) (R,S:relation A): A → Prop ≝
+inductive SN (A) (R,S:relation A): predicate A ≝
 | SN_intro: ∀a1. (∀a2. R a1 a2 → (S a1 a2 → False) → SN A R S a2) → SN A R S a1
 .