From ed89b51673624e80ae63c3086245cd8deb86c110 Mon Sep 17 00:00:00 2001 From: Ferruccio Guidi Date: Wed, 26 Sep 2007 17:35:28 +0000 Subject: [PATCH] started the Proof Weight predicate for cut elimination and confluence --- matita/contribs/LOGIC/PRed/defs.ma | 2 ++ matita/contribs/LOGIC/Track/pred.ma | 3 +++ matita/contribs/LOGIC/Weight/defs.ma | 36 ++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 matita/contribs/LOGIC/Weight/defs.ma diff --git a/matita/contribs/LOGIC/PRed/defs.ma b/matita/contribs/LOGIC/PRed/defs.ma index ef0f86194..51aaa94b2 100644 --- a/matita/contribs/LOGIC/PRed/defs.ma +++ b/matita/contribs/LOGIC/PRed/defs.ma @@ -47,6 +47,8 @@ inductive PRed: Context \to Proof \to Sequent \to \forall h. PRed P1 (scut (prin h) q1) S P2 q2 S | pred_b_dx: \forall p1,p2,Q1,Q2,S. PRed Q1 p1 S Q2 p2 S \to \forall h. PRed Q1 (scut p1 (prin h)) S Q2 p2 S + | pred_c : \forall p1,p2,Q1,Q2,S. PRed Q1 p1 S Q2 p2 S \to + \forall p. PRed Q1 (scut (impr p) (impw p1)) S Q2 p2 S . (*CSC: the URI must disappear: there is a bug now *) diff --git a/matita/contribs/LOGIC/Track/pred.ma b/matita/contribs/LOGIC/Track/pred.ma index 3b640b97c..c7f6198f9 100644 --- a/matita/contribs/LOGIC/Track/pred.ma +++ b/matita/contribs/LOGIC/Track/pred.ma @@ -36,5 +36,8 @@ theorem track_pred: \forall Q1,Q2,p1,p2,S1,S2. PRed Q1 p1 S1 Q2 p2 S2 \to lapply linear track_inv_prin to H5; subst; autobatch | lapply linear track_inv_scut to H3; decompose; subst; lapply linear track_inv_prin to H4; subst; autobatch + | lapply linear track_inv_scut to H3; decompose; subst; + lapply linear track_inv_impw to H4; decompose; subst; + lapply linear track_inv_impr to H5; decompose; subst; autobatch ]. qed. diff --git a/matita/contribs/LOGIC/Weight/defs.ma b/matita/contribs/LOGIC/Weight/defs.ma new file mode 100644 index 000000000..73c935913 --- /dev/null +++ b/matita/contribs/LOGIC/Weight/defs.ma @@ -0,0 +1,36 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +set "baseuri" "cic:/matita/LOGIC/Weight/defs". + +(* PROOF WEIGHT + For cut elimination and confluence +*) + +include "datatypes/Context.ma". + + +inductive Weight: Nat \to Context \to Proof \to Nat \to Prop \def + | weight_prin: \forall Q,n,m. Weight m Q (prin n) m + | weight_impw: \forall p,Q,m0,m1. Weight m0 Q p m1 \to + \forall m. (m1 + m0 == m) \to + Weight m0 Q (impw p) m + | weight_impr: \forall p,Q,m0,m1. Weight m0 Q p m1 \to + \forall m. (m1 + m0 == m) \to + Weight m0 Q (impr p) m + | weight_scut: \forall p1,Q,m0,m1. Weight (succ m0) Q p1 m1 \to + \forall p2,m2. Weight (succ m0) Q p2 m2 \to + \forall m. (m1 + m2 == m) \to + Weight m0 Q (scut p1 p2) m +. -- 2.39.2