diff options
| author | Hugo Herbelin | 2018-04-16 20:48:05 +0200 |
|---|---|---|
| committer | Hugo Herbelin | 2018-07-25 17:49:53 +0200 |
| commit | 190ff373ed3728ae816da674ceeae3ba8ffa1919 (patch) | |
| tree | 1ba995e482022dc6e69329dd4781549809643ee5 /test-suite | |
| parent | 523de4f878293cf1d582bd70300b34d497e705b3 (diff) | |
Optimized dependencies for pattern-matching on only trivial patterns.
If a term is matched only against variables, it will not introduce a
"match" and thus, even if the term is of an inductive type, its
indices will not be taken into account in the current algorithm
(though one could imagine an algorithm which does an expansion
specially in order to filter on indices).
This allows to tell the unification not to use dependencies which the
pattern-matching algorithm is not able to exploit in practice.
See example in file 2733.v.
Diffstat (limited to 'test-suite')
| -rw-r--r-- | test-suite/bugs/closed/2733.v | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/test-suite/bugs/closed/2733.v b/test-suite/bugs/closed/2733.v index 832de4f913..24dd30b32e 100644 --- a/test-suite/bugs/closed/2733.v +++ b/test-suite/bugs/closed/2733.v @@ -16,6 +16,21 @@ match k,l with |B,l' => Bcons true (Ncons 0 l') end. +(* At some time, the success of trullynul was dependent on the name of + the variables! *) + +Definition trullynul2 k {a} (l : alt_list k a) := +match k,l with + |N,l' => Ncons 0 (Bcons true l') + |B,l' => Bcons true (Ncons 0 l') +end. + +Definition trullynul3 k {z} (l : alt_list k z) := +match k,l with + |N,l' => Ncons 0 (Bcons true l') + |B,l' => Bcons true (Ncons 0 l') +end. + Fixpoint app (P : forall {k k'}, alt_list k k' -> alt_list k k') {t1 t2} (l : alt_list t1 t2) {struct l}: forall {t3}, alt_list t2 t3 -> alt_list t1 t3 := match l with |
