aboutsummaryrefslogtreecommitdiff
path: root/mathcomp/ssrtest
diff options
context:
space:
mode:
authorEnrico Tassi2015-09-10 11:44:11 +0200
committerEnrico Tassi2015-12-03 09:59:45 +0100
commit4d0f111956307c5a134db701fe27f01f8ac50e9d (patch)
tree83a8175782bdd7c04d614a269878a0f9ab3e51e7 /mathcomp/ssrtest
parent55a5aaa22e9dd92ff1c6aba599b878c384c1a66b (diff)
fix: elim/v handles eliminator from Derive Inversion (issue #2)
Also: - fix elim trying to saturate too much and not raising the expected exn - fix fill_occ_pattern when occ is {-}, it used to lose the instantiation obtained by matching the term
Diffstat (limited to 'mathcomp/ssrtest')
-rw-r--r--mathcomp/ssrtest/derive_inversion.v19
1 files changed, 19 insertions, 0 deletions
diff --git a/mathcomp/ssrtest/derive_inversion.v b/mathcomp/ssrtest/derive_inversion.v
new file mode 100644
index 0000000..71257d8
--- /dev/null
+++ b/mathcomp/ssrtest/derive_inversion.v
@@ -0,0 +1,19 @@
+Require Import ssreflect ssrbool.
+
+Set Implicit Arguments.
+
+ Inductive wf T : bool -> option T -> Type :=
+ | wf_f : wf false None
+ | wf_t : forall x, wf true (Some x).
+
+ Derive Inversion wf_inv with (forall T b (o : option T), wf b o) Sort Prop.
+
+ Lemma Problem T b (o : option T) :
+ wf b o ->
+ match b with
+ | true => exists x, o = Some x
+ | false => o = None
+ end.
+ Proof.
+ by case: b; elim/wf_inv=>//;case: o=>// a *; exists a.
+ Qed.