aboutsummaryrefslogtreecommitdiff
path: root/contrib/subtac/test
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/subtac/test')
-rw-r--r--contrib/subtac/test/take.v39
1 files changed, 39 insertions, 0 deletions
diff --git a/contrib/subtac/test/take.v b/contrib/subtac/test/take.v
new file mode 100644
index 0000000000..fbb1727eae
--- /dev/null
+++ b/contrib/subtac/test/take.v
@@ -0,0 +1,39 @@
+Variable A : Set.
+Require Import JMeq.
+Require Import List.
+Require Import Coq.subtac.Utils.
+
+Program Fixpoint take (l : list A) (n : nat | n <= length l) { struct l } : { l' : list A | length l' = n } :=
+ match n with
+ | 0 => nil
+ | S n =>
+ match l with
+ | cons hd tl => let rest := take tl n in cons hd rest
+ | _ => _
+ end
+ end.
+
+Require Import Omega.
+
+
+Obligations.
+
+Solve Obligations using (subtac_simpl ; subst ; auto with arith).
+
+Obligations.
+
+Obligation 2.
+ subtac_simpl.
+ subst l x.
+ simpl in l0.
+ absurd (S n0 <= 0) ; omega.
+Defined.
+
+Obligation 4.
+ subtac_simpl.
+ destruct_call take ; subtac_simpl ; subst ; auto.
+Defined.
+
+Print take.
+
+Extraction take.