X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fmatita%2Fcontribs%2FLAMBDA-TYPES%2FUnified-Sub%2FLift%2Finv.ma;fp=helm%2Fsoftware%2Fmatita%2Fcontribs%2FLAMBDA-TYPES%2FUnified-Sub%2FLift%2Finv.ma;h=8c3d27d7c6bb75e362f6b1a641e786376afef526;hb=e6d7bb2e5237c8f9c85179715edeab61263ab62d;hp=0000000000000000000000000000000000000000;hpb=092d5c718ea90255ce1009acd5aa0942e4449898;p=helm.git diff --git a/helm/software/matita/contribs/LAMBDA-TYPES/Unified-Sub/Lift/inv.ma b/helm/software/matita/contribs/LAMBDA-TYPES/Unified-Sub/Lift/inv.ma new file mode 100644 index 000000000..8c3d27d7c --- /dev/null +++ b/helm/software/matita/contribs/LAMBDA-TYPES/Unified-Sub/Lift/inv.ma @@ -0,0 +1,74 @@ +(**************************************************************************) +(* ___ *) +(* ||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/LAMBDA-TYPES/Unified-Sub/Lift/inv". + +include "Lift/defs.ma". + +theorem lift_inv_sort_1: \forall l, i, h, x. + Lift l i (leaf (sort h)) x \to + x = leaf (sort h). + intros. inversion H; clear H; intros; + [ auto + | destruct H2 + | destruct H3 + | destruct H5 + | destruct H5 + ]. +qed. + +theorem lift_inv_lref_1: \forall l, i, j1, x. + Lift l i (leaf (lref j1)) x \to + (i > j1 \land x = leaf (lref j1)) \lor + (i <= j1 \land + \exists j2. (l + j1 == j2) \land x = leaf (lref j2) + ). + intros. inversion H; clear H; intros; + [ destruct H1 + | destruct H2. clear H2. subst. auto + | destruct H3. clear H3. subst. auto depth = 5 + | destruct H5 + | destruct H5 + ]. +qed. + +theorem lift_inv_bind_1: \forall l, i, r, u1, t1, x. + Lift l i (intb r u1 t1) x \to + \exists u2, t2. + Lift l i u1 u2 \land + Lift l (succ i) t1 t2 \land + x = intb r u2 t2. + intros. inversion H; clear H; intros; + [ destruct H1 + | destruct H2 + | destruct H3 + | destruct H5. clear H5 H1 H3. subst. auto depth = 5 + | destruct H5 + ]. +qed. + +theorem lift_inv_flat_1: \forall l, i, r, u1, t1, x. + Lift l i (intf r u1 t1) x \to + \exists u2, t2. + Lift l i u1 u2 \land + Lift l i t1 t2 \land + x = intf r u2 t2. + intros. inversion H; clear H; intros; + [ destruct H1 + | destruct H2 + | destruct H3 + | destruct H5 + | destruct H5. clear H5 H1 H3. subst. auto depth = 5 + ]. +qed.