diff options
author | herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2007-01-28 13:32:56 +0000 |
---|---|---|
committer | herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2007-01-28 13:32:56 +0000 |
commit | 4d5984258731e82c17535cbe9c257cf639374151 (patch) | |
tree | 5289318529da5a487ce5929f9596c4f7a3f4262b /test-suite/complexity | |
parent | 2e5d35bf5492ca2cfdb8f3ef1a9fccdf67289e5e (diff) |
Pas de solution à court terme pour ce problème de complexité
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@9548 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'test-suite/complexity')
-rw-r--r-- | test-suite/complexity/evars_subst.v | 53 |
1 files changed, 0 insertions, 53 deletions
diff --git a/test-suite/complexity/evars_subst.v b/test-suite/complexity/evars_subst.v deleted file mode 100644 index 6f9f86a95..000000000 --- a/test-suite/complexity/evars_subst.v +++ /dev/null @@ -1,53 +0,0 @@ -(* Bug report #932 *) -(* Expected time < 1.00s *) - -(* Let n be the number of let-in. The complexity comes from the fact - that each implicit arguments of f was in a larger and larger - context. To compute the type of "let _ := f ?Tn 0 in f ?T 0", - "f ?Tn 0" is substituted in the type of "f ?T 0" which is ?T. This - type is an evar instantiated on the n variables denoting the "f ?Ti 0". - One obtain "?T[1;...;n-1;f ?Tn[1;...;n-1] 0]". To compute the - type of "let _ := f ?Tn-1 0 in let _ := f ?Tn 0 in f ?T 0", another - substitution is done leading to - "?T[1;...;n-2;f ?Tn[1;...;n-2] 0;f ?Tn[1;...;n-2;f ?Tn[1;...;n-2] 0] 0]" - and so on. At the end, we get a term of exponential size *) - -(* A way to cut the complexity could have been to remove the dependency in - anonymous variables in evars but this breaks intuitive behaviour - (see Case15.v); another approach could be to substitute lazily - and/or to simultaneously substitute let binders and evars *) - -Variable P : Set -> Set. -Variable f : forall A : Set, A -> P A. - -Time Check - let _ := f _ 0 in - let _ := f _ 0 in - let _ := f _ 0 in - let _ := f _ 0 in - - let _ := f _ 0 in - let _ := f _ 0 in - let _ := f _ 0 in - let _ := f _ 0 in - - let _ := f _ 0 in - let _ := f _ 0 in - let _ := f _ 0 in - let _ := f _ 0 in - let _ := f _ 0 in - - let _ := f _ 0 in - let _ := f _ 0 in - let _ := f _ 0 in - let _ := f _ 0 in - let _ := f _ 0 in - - let _ := f _ 0 in - let _ := f _ 0 in - let _ := f _ 0 in - let _ := f _ 0 in - let _ := f _ 0 in - - f _ 0. - |