X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fmatita%2Fcontribs%2FLAMBDA-TYPES%2FUnified-Sub%2FLift%2Fdefs.ma;h=32b8a5f678d64085de2d72043b08b5b290e67934;hb=8da8820a77f2104dd1bf17c01fa77f75ee31c8fb;hp=af573d3604f64e685edf1de289d02f756ebcb639;hpb=7ea8b1445c01013b270607d2182d506702646bf2;p=helm.git diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/Unified-Sub/Lift/defs.ma b/helm/software/matita/contribs/LAMBDA-TYPES/Unified-Sub/Lift/defs.ma index af573d360..32b8a5f67 100644 --- a/helm/software/matita/contribs/LAMBDA-TYPES/Unified-Sub/Lift/defs.ma +++ b/helm/software/matita/contribs/LAMBDA-TYPES/Unified-Sub/Lift/defs.ma @@ -12,35 +12,24 @@ (* *) (**************************************************************************) -set "baseuri" "cic:/matita/LAMBDA-TYPES/Unified-Sub/Lift/defs". - (* LIFT RELATION - Usage: invoke with positive polarity *) -include "Term/defs.ma". +include "Unified-Sub/datatypes/Term.ma". -inductive Lift: Bool \to Nat \to Nat \to Term \to Term \to Prop \def - | lift_sort : \forall l,q,i,h. - Lift q l i (leaf (sort h)) (leaf (sort h)) - | lift_lref : \forall l,i,j. - Lift false l i (leaf (lref j)) (leaf (lref j)) - | lift_lref_lt: \forall l,i,j. j < i \to - Lift true l i (leaf (lref j)) (leaf (lref j)) - | lift_lref_ge: \forall l,i,j1. i <= j1 \to - \forall j2. (j1 + l == j2) \to - Lift true l i (leaf (lref j1)) (leaf (lref j2)) - | lift_bind : \forall l,i,u1,u2. Lift true l i u1 u2 \to - \forall q,t1,t2. Lift q l (succ i) t1 t2 \to - \forall r. - Lift q l i (head q (bind r) u1 t1) (head q (bind r) u2 t2) - | lift_flat : \forall l,i,u1,u2. Lift true l i u1 u2 \to - \forall q,t1,t2. Lift q l i t1 t2 \to - \forall r. - Lift q l i (head q (flat r) u1 t1) (head q (flat r) u2 t2) - | lift_head : \forall l,qt,q. (qt = q \to False) \to - \forall i,u1,u2. Lift false l i u1 u2 \to - \forall t1,t2. Lift qt l i t1 t2 \to - \forall z. - Lift qt l i (head q z u1 t1) (head q z u2 t2) +inductive Lift (l: Nat): Nat \to Term \to Term \to Prop \def + | lift_sort : \forall i,h. + Lift l i (sort h) (sort h) + | lift_lref_gt: \forall i,j. i > j \to + Lift l i (lref j) (lref j) + | lift_lref_le: \forall i,j1. i <= j1 \to + \forall j2. (l + j1 == j2) \to + Lift l i (lref j1) (lref j2) + | lift_bind : \forall i,u1,u2. Lift l i u1 u2 \to + \forall t1,t2. Lift l (succ i) t1 t2 \to + \forall r. Lift l i (intb r u1 t1) (intb r u2 t2) + | lift_flat : \forall i,u1,u2. Lift l i u1 u2 \to + \forall t1,t2. Lift l i t1 t2 \to + \forall r. Lift l i (intf r u1 t1) (intf r u2 t2) .