+(**************************************************************************)
+(* ___ *)
+(* ||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/CLE/defs".
(* ORDER RELATION BETWEEN POSITIONS AND CONTEXTS
--- /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/PEq/defs".
+
+(* EQUALITY PREDICATE FOR PROOFS IN CONTEXT
+*)
+
+include "datatypes/Context.ma".
+
+inductive PEq (Q1:Context) (p1:Proof) (Q2:Context) (p2:Proof): Prop \def
+ | peq_intro: Q1 = Q2 \land p1 = p2 \to PEq Q1 p1 Q2 p2
+.
+
+(*CSC: the URI must disappear: there is a bug now *)
+interpretation
+ "leibniz equality between proofs in context"
+ 'eq2 x1 y1 x2 y2 =
+ (cic:/matita/LOGIC/PEq/defs/PEq.ind#xpointer(1/1) x1 y1 x2 y2)
+.
+
+notation "hvbox([a1,b1] break = [a2,b2])"
+ non associative with precedence 45
+for @{ 'eq2 $a1 $b1 $a2 $b2 }.
set "baseuri" "cic:/matita/LOGIC/PNF/defs".
-(* NORMAL FORM PREDICATE FOR PARALLEL REDUCTION
+(* NORMAL FORM PREDICATE FOR PROOFS IN CONTEXT
+ For cut elimination
*)
+include "PEq/defs.ma".
include "PRed/defs.ma".
-(*
-inductive PNF: Proof \to Prop \def
- | pnf: \forall p. (\forall q. p => q \to p = q) \to PNF p
+
+inductive PNF (P:Context) (p:Proof): Prop \def
+ | pnf: (\forall q,Q,S. [P, p, S] => [Q, q, S] \to [P, p] = [Q, q]) \to
+ PNF P p
.
-*)
'parred3 x1 y1 z1 x2 y2 z2 =
(cic:/matita/LOGIC/PRed/defs/PRed.ind#xpointer(1/1) x1 y1 z1 x2 y2 z2)
.
+
+notation "hvbox([a1,b1,c1] break => [a2,b2,c2])"
+ non associative with precedence 45
+for @{ 'parred3 $a1 $b1 $c1 $a2 $b2 $c2 }.
--- /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/PRed/wlt".
+
+(**)
+
+include "PEq/defs.ma".
+include "PRed/defs.ma".
+include "WLT/defs.ma".
+(*
+theorem pred_wlt: \forall p1,p2,Q1,Q2,S.
+ [Q1, p1, S] => [Q2, p2, S] \to \lnot [Q1, p1] = [Q2, p2] \to
+ [Q2, p2] < [Q1, p1].
+ intros 6; elim H; clear H;
+ [ unfold Not in H1; lapply linear depth = 1 H1;
+ [ decompose | autobatch ]
+*)
include "Track/inv.ma".
include "PRed/defs.ma".
-theorem track_pred: \forall Q1,Q2,p1,p2,S1,S2. PRed Q1 p1 S1 Q2 p2 S2 \to
+theorem track_pred: \forall Q1,Q2,p1,p2,S1,S2. [Q1, p1, S1] => [Q2, p2, S2] \to
Track Q1 p1 S1 \to Track Q2 p2 S2.
intros 7; elim H; clear H Q1 Q2 p1 p2 S1 S2;
[ autobatch
--- /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/WLT/defs".
+
+(* ORDER RELATION BETWEEN PROOFS IN CONTEXT
+*)
+
+include "Weight/defs.ma".
+
+inductive WLT (Q1:Context) (p1:Proof) (Q2:Context) (p2:Proof): Prop \def
+ | wlt_intro: \forall m,m1. Weight m Q1 p1 m1 \to
+ \forall m2. Weight m Q2 p2 m2 \to
+ m1 < m2 \to WLT Q1 p1 Q2 p2
+.
+
+interpretation "order relation between proofs in context"
+ 'lt2 x1 y1 x2 y2 =
+ (cic:/matita/LOGIC/WLT/defs/WLT.ind#xpointer(1/1) x1 y1 x2 y2).
+
+notation "hvbox([a1, b1] break \lt [a2, b2])"
+ non associative with precedence 45
+for @{ 'lt2 $a1 $b1 $a2 $b2 }.