From 018ee3b0c2be79eb81b1f65c3f3fa142d24129c8 Mon Sep 17 00:00:00 2001 From: Samuel Mimram Date: Thu, 19 Jan 2006 22:34:29 +0000 Subject: Imported Upstream version 8.0pl3 --- test-suite/check | 4 +- test-suite/modules/modul.v | 2 +- test-suite/success/TestRefine.v | 190 +++++++++++++++++++++++++++++++++++++ test-suite/tactics/TestRefine.v | 203 ---------------------------------------- 4 files changed, 194 insertions(+), 205 deletions(-) create mode 100644 test-suite/success/TestRefine.v delete mode 100644 test-suite/tactics/TestRefine.v (limited to 'test-suite') diff --git a/test-suite/check b/test-suite/check index 378c8e5d..fdc7b2d6 100755 --- a/test-suite/check +++ b/test-suite/check @@ -84,7 +84,8 @@ test_output() { nbtestsok=`expr $nbtestsok + 1` else echo "Error! (unexpected output)" - fi + fi + rm $tmpoutput done } @@ -106,6 +107,7 @@ test_parser() { echo "Ok" nbtestsok=`expr $nbtestsok + 1` fi + rm $tmpoutput done fi } diff --git a/test-suite/modules/modul.v b/test-suite/modules/modul.v index 5612ea75..84942da1 100644 --- a/test-suite/modules/modul.v +++ b/test-suite/modules/modul.v @@ -33,7 +33,7 @@ Save. Check (O#O). Locate rel. -Locate M. +Locate Library M. Module N:=Top.M. diff --git a/test-suite/success/TestRefine.v b/test-suite/success/TestRefine.v new file mode 100644 index 00000000..ee3d7e3f --- /dev/null +++ b/test-suite/success/TestRefine.v @@ -0,0 +1,190 @@ +(************************************************************************) +(* v * The Coq Proof Assistant / The Coq Development Team *) +(* ? + | (S p) => ? + end) :: (x:nat)x=x). (* x0=x0 et x0=x0 *) + +Restart. + +Refine [x0:nat]<[n:nat]n=n>Case x0 of ? [p:nat]? end. (* OK *) + +Restart. + +Refine [x0:nat]<[n:nat]n=n>Cases x0 of O => ? | (S p) => ? end. (* OK *) + +Restart. + +(** +Refine [x0:nat]Cases x0 of O => ? | (S p) => ? end. (* cannot be executed *) +**) + +Abort. + + +(************************************************************************) + +Lemma T : nat. + +Refine (S ?). + +Abort. + + +(************************************************************************) + +Lemma essai2 : (x:nat)x=x. + +Refine Fix f{f/1 : (x:nat)x=x := [x:nat]? }. + +Restart. + +Refine Fix f{f/1 : (x:nat)x=x := + [x:nat]<[n:nat](eq nat n n)>Case x of ? [p:nat]? end}. + +Restart. + +Refine Fix f{f/1 : (x:nat)x=x := + [x:nat]<[n:nat]n=n>Cases x of O => ? | (S p) => ? end}. + +Restart. + +Refine Fix f{f/1 : (x:nat)x=x := + [x:nat]<[n:nat](eq nat n n)>Case x of + ? + [p:nat](f_equal nat nat S p p ?) end}. + +Restart. + +Refine Fix f{f/1 : (x:nat)x=x := + [x:nat]<[n:nat](eq nat n n)>Cases x of + O => ? + | (S p) =>(f_equal nat nat S p p ?) end}. + +Abort. + + +(************************************************************************) + +Lemma essai : nat. + +Parameter f : nat*nat -> nat -> nat. + +Refine (f ? ([x:nat](? :: nat) O)). + +Restart. + +Refine (f ? O). + +Abort. + + +(************************************************************************) + +Parameter P : nat -> Prop. + +Lemma essai : { x:nat | x=(S O) }. + +Refine (exist nat ? (S O) ?). (* ECHEC *) + +Restart. + +(* mais si on contraint par le but alors ca marche : *) +(* Remarque : on peut toujours faire ça *) +Refine ((exist nat ? (S O) ?) :: { x:nat | x=(S O) }). + +Restart. + +Refine (exist nat [x:nat](x=(S O)) (S O) ?). + +Abort. + + +(************************************************************************) + +Lemma essai : (n:nat){ x:nat | x=(S n) }. + +Refine [n:nat]<[n:nat]{x:nat|x=(S n)}>Case n of ? [p:nat]? end. + +Restart. + +Refine (([n:nat]Case n of ? [p:nat]? end) :: (n:nat){ x:nat | x=(S n) }). + +Restart. + +Refine [n:nat]<[n:nat]{x:nat|x=(S n)}>Cases n of O => ? | (S p) => ? end. + +Restart. + +Refine Fix f{f/1 :(n:nat){x:nat|x=(S n)} := + [n:nat]<[n:nat]{x:nat|x=(S n)}>Case n of ? [p:nat]? end}. + +Restart. + +Refine Fix f{f/1 :(n:nat){x:nat|x=(S n)} := + [n:nat]<[n:nat]{x:nat|x=(S n)}>Cases n of O => ? | (S p) => ? end}. + +Exists (S O). Trivial. +Elim (f0 p). +Refine [x:nat][h:x=(S p)](exist nat [x:nat]x=(S (S p)) (S x) ?). +Rewrite h. Auto. +Save. + + + +(* Quelques essais de recurrence bien fondée *) + +Require Wf. +Require Wf_nat. + +Lemma essai_wf : nat->nat. + +Refine [x:nat](well_founded_induction + nat + lt ? + [_:nat]nat->nat + [phi0:nat][w:(phi:nat)(lt phi phi0)->nat->nat](w x ?) + x x). +Exact lt_wf. + +Abort. + + +Require Compare_dec. +Require Lt. + +Lemma fibo : nat -> nat. +Refine (well_founded_induction + nat + lt ? + [_:nat]nat + [x0:nat][fib:(x:nat)(lt x x0)->nat] + Cases (zerop x0) of + (left _) => (S O) + | (right h1) => Cases (zerop (pred x0)) of + (left _) => (S O) + | (right h2) => (plus (fib (pred x0) ?) + (fib (pred (pred x0)) ?)) + end + end). +Exact lt_wf. +Auto with arith. +Apply lt_trans with m:=(pred x0); Auto with arith. +Save. + + diff --git a/test-suite/tactics/TestRefine.v b/test-suite/tactics/TestRefine.v deleted file mode 100644 index f752c5bc..00000000 --- a/test-suite/tactics/TestRefine.v +++ /dev/null @@ -1,203 +0,0 @@ -(************************************************************************) -(* v * The Coq Proof Assistant / The Coq Development Team *) -(* ? - | (S p) => ? - end) :: (x:nat)x=x). (* x0=x0 et x0=x0 *) - -Restart. - -Refine [x0:nat]<[n:nat]n=n>Case x0 of ? [p:nat]? end. (* OK *) - -Restart. - -Refine [x0:nat]<[n:nat]n=n>Cases x0 of O => ? | (S p) => ? end. (* OK *) - -Restart. - -(** -Refine [x0:nat]Cases x0 of O => ? | (S p) => ? end. (* cannot be executed *) -**) - -Abort. - - -(************************************************************************) - -Lemma T : nat. - -Refine (S ?). - -Abort. - - -(************************************************************************) - -Lemma essai2 : (x:nat)x=x. - -Refine Fix f{f/1 : (x:nat)x=x := [x:nat]? }. - -Restart. - -Refine Fix f{f/1 : (x:nat)x=x := - [x:nat]<[n:nat](eq nat n n)>Case x of ? [p:nat]? end}. - -Restart. - -Refine Fix f{f/1 : (x:nat)x=x := - [x:nat]<[n:nat]n=n>Cases x of O => ? | (S p) => ? end}. - -Restart. - -Refine Fix f{f/1 : (x:nat)x=x := - [x:nat]<[n:nat](eq nat n n)>Case x of - ? - [p:nat](f_equal nat nat S p p ?) end}. - -Restart. - -Refine Fix f{f/1 : (x:nat)x=x := - [x:nat]<[n:nat](eq nat n n)>Cases x of - O => ? - | (S p) =>(f_equal nat nat S p p ?) end}. - -Abort. - - -(************************************************************************) - -Lemma essai : nat. - -Parameter f : nat*nat -> nat -> nat. - -Refine (f ? ([x:nat](? :: nat) O)). - -Restart. - -Refine (f ? O). - -Abort. - - -(************************************************************************) - -Parameter P : nat -> Prop. - -Lemma essai : { x:nat | x=(S O) }. - -Refine (exist nat ? (S O) ?). (* ECHEC *) - -Restart. - -(* mais si on contraint par le but alors ca marche : *) -(* Remarque : on peut toujours faire ça *) -Refine ((exist nat ? (S O) ?) :: { x:nat | x=(S O) }). - -Restart. - -Refine (exist nat [x:nat](x=(S O)) (S O) ?). - -Abort. - - -(************************************************************************) - -Lemma essai : (n:nat){ x:nat | x=(S n) }. - -Refine [n:nat]<[n:nat]{x:nat|x=(S n)}>Case n of ? [p:nat]? end. - -Restart. - -Refine (([n:nat]Case n of ? [p:nat]? end) :: (n:nat){ x:nat | x=(S n) }). - -Restart. - -Refine [n:nat]<[n:nat]{x:nat|x=(S n)}>Cases n of O => ? | (S p) => ? end. - -Restart. - -Refine Fix f{f/1 :(n:nat){x:nat|x=(S n)} := - [n:nat]<[n:nat]{x:nat|x=(S n)}>Case n of ? [p:nat]? end}. - -Restart. - -Refine Fix f{f/1 :(n:nat){x:nat|x=(S n)} := - [n:nat]<[n:nat]{x:nat|x=(S n)}>Cases n of O => ? | (S p) => ? end}. - -Exists (S O). Trivial. -Elim (f0 p). -Refine [x:nat][h:x=(S p)](exist nat [x:nat]x=(S (S p)) (S x) ?). -Rewrite h. Auto. -Save. - - - -(* Quelques essais de recurrence bien fondée *) - -Require Wf. -Require Wf_nat. - -Lemma essai_wf : nat->nat. - -Refine [x:nat](well_founded_induction - nat - lt ? - [_:nat]nat->nat - [phi0:nat][w:(phi:nat)(lt phi phi0)->nat->nat](w x ?) - x x). -Exact lt_wf. - -Abort. - - -Require Compare_dec. -Require Lt. - -Lemma fibo : nat -> nat. -Refine (well_founded_induction - nat - lt ? - [_:nat]nat - [x0:nat][fib:(x:nat)(lt x x0)->nat] - Cases (zerop x0) of - (left _) => (S O) - | (right h1) => Cases (zerop (pred x0)) of - (left _) => (S O) - | (right h2) => (plus (fib (pred x0) ?) - (fib (pred (pred x0)) ?)) - end - end). -(********* -Refine (well_founded_induction - nat - lt ? - [_:nat]nat - [x0:nat][fib:(x:nat)(lt x x0)->nat] - Cases x0 of - O => (S O) - | (S O) => (S O) - | (S (S p)) => (plus (fib (pred x0) ?) - (fib (pred (pred x0)) ?)) - end). -***********) -Exact lt_wf. -Auto. -Apply lt_trans with m:=(pred x0); Auto. -Save. - - -- cgit v1.2.3