]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/lib/extraction.ma
...
[helm.git] / matita / matita / lib / extraction.ma
index 35a9a5788a8c524395142a358239751d11478e85..a1c49f8f0c2f35b04370f11d8cd4a2b1cd060dfe 100644 (file)
@@ -120,7 +120,50 @@ definition ttest11_aux ≝ λS:Type[1]. S → Nat.
 
 definition ttest11 ≝ λf:ttest11_aux True. f I.
 
-(*BUG here: requires F_omega eat_args*)
 definition ttest12 ≝ λf:True → Nat. f I.
 
 (*GENERAL BUG: name clashes when binders shadow each other in CIC*)
+
+(*BUG: mutual type definitions not handled correctly: the ref is computed in a
+  wrong way *)
+  
+(*BUG: multiple let-reced things are given the same (wrong) name*)
+
+(*BUG: for OCaml: cofixpoint not distinguished from fixpoints*)
+
+let rec rtest1 (n:nat) : nat ≝
+ match n with
+ [ O ⇒ O
+ | S m ⇒ rtest1 m ].
+
+let rec f (n:nat) : nat ≝
+ match n with
+ [ O ⇒ O
+ | S m ⇒ g m ]
+and g (n:nat) : nat ≝
+ match n with
+ [ O ⇒ O
+ | S m ⇒ f m ].
+
+(*BUG: pattern matching patterns when arguments have been deleted from
+  the constructor are wrong *)
+
+(*BUG: constructor names in pattern should be capitalised correctly;
+  name clashes must be avoided*)
+
+coinductive stream: Type[0] ≝ scons : nat → stream → stream.
+
+let corec div (n:nat) : stream ≝ scons n (div (S n)).
+
+definition rtest2 : nat → stream → nat ≝
+ λm,s. match s with [ scons n l ⇒ m + n ].
+
+(*
+let rec mkterm (n:nat) : nat ≝
+ match n with
+ [ O ⇒ O
+ | S m ⇒ mkterm m ]
+and mktyp (n:nat) : Type[0] ≝
+ match n with
+ [ O ⇒ nat
+ | S m ⇒ mktyp m ].*)