\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 *)
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.
--- /dev/null
+(**************************************************************************)
+(* ___ *)
+(* ||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
+.