File: pattern.v

package info (click to toggle)
coq-doc 8.16.1-1
  • links: PTS, VCS
  • area: non-free
  • in suites: bookworm
  • size: 42,788 kB
  • sloc: ml: 219,673; sh: 4,035; python: 3,372; ansic: 2,529; makefile: 728; lisp: 279; javascript: 87; xml: 24; sed: 2
file content (32 lines) | stat: -rw-r--r-- 1,190 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
(************************************************************************)
(*         *   The Coq Proof Assistant / The Coq Development Team       *)
(*  v      *         Copyright INRIA, CNRS and contributors             *)
(* <O___,, * (see version control and CREDITS file for authors & dates) *)
(*   \VV/  **************************************************************)
(*    //   *    This file is distributed under the terms of the         *)
(*         *     GNU Lesser General Public License Version 2.1          *)
(*         *     (see LICENSE file for the text of the license)         *)
(************************************************************************)

Require Import ssrmatching.

(*Set Debug SsrMatching.*)

Tactic Notation "at" "[" ssrpatternarg(pat) "]" tactic(t) :=
  let name := fresh in
  let def_name := fresh in
  ssrpattern pat;
  intro name;
  pose proof (refl_equal name) as def_name;
  unfold name at 1 in def_name;
  t def_name;
  [ rewrite <- def_name | idtac.. ];
  clear name def_name.

Lemma test (H : True -> True -> 3 = 7) : 28 = 3 * 4.
Proof.
at [ X in X * 4 ] ltac:(fun place => rewrite -> H in place).
- reflexivity.
- trivial.
- trivial.
Qed.