From a6eaa01495f64adf507ad00ab2a4f27be954936a Mon Sep 17 00:00:00 2001 From: Claudio Sacerdoti Coen Date: Wed, 1 Aug 2012 15:24:45 +0000 Subject: [PATCH] Tests for code extraction; to be moved elsewhere. --- matita/matita/lib/extraction.ma | 88 +++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 matita/matita/lib/extraction.ma diff --git a/matita/matita/lib/extraction.ma b/matita/matita/lib/extraction.ma new file mode 100644 index 000000000..7791d8922 --- /dev/null +++ b/matita/matita/lib/extraction.ma @@ -0,0 +1,88 @@ +(**************************************************************************) +(* ___ *) +(* ||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 *) +(* *) +(**************************************************************************) + +include "arithmetics/nat.ma". + +(*BUG: kind signatures in type declarations*) + +axiom test1: Type[1]. + +axiom test2: Type[1] → Type[1]. + +axiom test3: Prop → Type[1] → CProp[1] → Type[1] → Type[2]. + +(* not in F_omega ? *) +axiom test4: ∀A:Type[1]. A → ∀B:Type[1]. B → ∀C:Prop. C → Type[1]. + +axiom test5: (Type[1] → Type[1]) → Type[1]. + +(* no content *) +axiom test6: Type[1] → Prop. + +definition dtest1: Type[1] ≝ nat → nat. + +definition dtest2: Type[2] ≝ ∀A:Type[1]. A → A. + +definition dtest3: Type[1] → Type[1] ≝ λA:Type[1]. A → A. + +definition dtest4: Type[1] → Type[1] ≝ λA:Type[1].dtest3 A. + +definition dtest5: Type[1] → Type[1] ≝ dtest3. + +definition dtest6: Type[1] ≝ dtest3 nat. + +(* no content *) +definition dtest7: Prop ≝ True → True. + +(* no content *) +definition dtest8: Type[1] ≝ dtest3 True. + +(* no content *) +definition dtest9: Type[1] ≝ dtest3 Prop. + +definition dtest10: Type[1] → Type[1] → Type[1] ≝ λX,Y.X. + +(*BUG: a' vs a''*) +definition dtest11: Type[1] → nat → Type[1] → Type[1] ≝ λ_:Type[1].λ_:nat.λX:Type[1]. X → nat → test1. + +definition dtest12 ≝ λ_:Type[1].λ_:nat.λX:Type[1]. X → nat → test1. + +definition dtest13 ≝ dtest3 nat → dtest3 True → dtest3 Prop → nat. + +definition dtest14 ≝ λX:Type[2]. X → X. + +(*FEATURE: type the forall bound variables*) +definition dtest15 ≝ ∀T:Type[1] → Type[1]. T nat → T nat. + +definition dtest16 ≝ ∀T:Type[1]. T → nat. + +definition dtest17 ≝ ∀T:dtest14 Type[1]. T nat → dtest14 nat → dtest14 nat. + +definition dtest18 ≝ λA,B:Type[0].λn:nat.λC:Type[0].A. + +definition dtest19 ≝ dtest18 nat True O nat → dtest18 nat nat O nat. + +definition dtest20 ≝ test5 test2. + +(*BUG: lambda-lift the inner declaration; + to be traced, raises NotInFOmega; why? *) +definition dtest21 ≝ test5 (λX:Type[1].X). + +definition ttest1 ≝ λx:nat.x. + +(*BUG: clash of name due to capitalisation*) +definition Ttest1 ≝ λx:nat.x. + +(*BUG: Failure nth*) +definition ttest2 ≝ λT:Type[1].λx:T.x. \ No newline at end of file -- 2.39.2