aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcoq2006-02-22 17:37:43 +0000
committercoq2006-02-22 17:37:43 +0000
commit41797f79e59eee357d6bcce7385021c680b5de52 (patch)
tree5434a54e35aa7ade0e97156405d675ddb1ef568f
parent3b132fb78a258f09818cbd68f582a51ec3b589ce (diff)
Add vernacular file for subtac
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@8079 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--Makefile2
-rw-r--r--contrib/subtac/FixSub.v18
2 files changed, 19 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 5a443345df..882276f3f3 100644
--- a/Makefile
+++ b/Makefile
@@ -994,7 +994,7 @@ JPROVERVO=
CCVO=
-SUBTACVO=
+SUBTACVO=contrib/subtac/FixSub.vo
RTAUTOVO = \
contrib/rtauto/Bintree.vo contrib/rtauto/Rtauto.vo
diff --git a/contrib/subtac/FixSub.v b/contrib/subtac/FixSub.v
new file mode 100644
index 0000000000..4279c17f57
--- /dev/null
+++ b/contrib/subtac/FixSub.v
@@ -0,0 +1,18 @@
+Require Import Coq.Init.Wf.
+
+Section FixPoint.
+
+Variable A : Set.
+Variable R : A -> A -> Prop.
+Hypothesis Rwf : well_founded R.
+Variable P : A -> Set.
+
+Variable F_sub : forall x:A, (forall y: { y : A | R y x }, P (proj1_sig y)) -> P x.
+
+Fixpoint Fix_F_sub (x:A) (r:Acc R x) {struct r} : P x :=
+ F_sub x (fun y: { y : A | R y x } => Fix_F_sub (proj1_sig y) (Acc_inv r (proj1_sig y) (proj2_sig y))).
+
+Definition Fix_sub (x : A) := Fix_F_sub x (Rwf x).
+
+End FixPoint.
+