-
Notifications
You must be signed in to change notification settings - Fork 4
/
syntax_test_coq.v
97 lines (84 loc) · 2.01 KB
/
syntax_test_coq.v
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
(* SYNTAX TEST "Coq.tmLanguage" *)
Require Import String.
(* ^ keyword *)
(* ^ keyword *)
Require Import List.
(* ^ keyword *)
(* ^ keyword *)
Import ListNotations.
(* ^ keyword *)
Open Scope string_scope.
(* ^ keyword *)
(* ^ keyword *)
(* Now we can use "strings" *)
(* ^ comment.block *)
(* ^ - string *)
(*(**)*) (* weird little nested comment *)
(* ^ comment.block *)
(* ^ - comment.block *)
(* ^ comment.block *)
Ltac inv H := inversion H; clear H; subst.
(* ^ keyword *)
(* ^ entity.name *)
(* ^ support.function *)
(* ^ support.function *)
(* ^ support.function *)
Ltac breakbool := repeat match goal with
(* ^ keyword *)
(* ^ entity.name *)
(* ^ keyword *)
(* ^ keyword *)
| [ H : _ /\ _ |- _ ] => destruct H
(* ^ keyword *)
(* ^ keyword *)
(* ^ support.function *)
| [ H : _ \/ _ |- _ ] => inv H
end.
(* <- keyword *)
Definition isZero (n : nat) : bool :=
(* ^ keyword *)
(* ^ entity.name *)
(* ^ keyword *)
match n with
(* ^ keyword *)
(* ^ keyword *)
| 0 => true
(* ^ constant.numeric *)
(* ^ constant *)
| _ => false
(* ^ constant *)
(* ^ constant *)
end.
(* ^ keyword *)
Theorem foo:
(* ^ keyword *)
(* ^ entity.name *)
forall a b,
(* ^ support.type *)
a /\ b ->
(* ^ keyword *)
(* ^ keyword *)
a.
Proof.
(* ^^ keyword *)
intros.
(* ^ support.function *)
breakbool.
(* ^ - support.function *)
assumption.
(* ^ support.function *)
Qed.
Inductive MyType :=
(* ^ keyword *)
(* ^ entity.name *)
| Case1
(* ^ - constant *)
| CaseFalse
(* ^ - constant *)
.
Class Inhabited T := { arbitrary : T }.
(* ^ keyword *)
(* ^ entity.name *)
Instance inhabited_unit : Inhabited unit := { arbitrary := tt }.
(* ^ keyword *)
(* ^ entity.name *)