@@ -29,8 +29,6 @@ Section Properties.
29
29
Arguments clos_trans [A] R x _.
30
30
Arguments clos_trans_1n [A] R x _.
31
31
Arguments clos_trans_n1 [A] R x _.
32
- Arguments inclusion [A] R1 R2.
33
- Arguments preorder [A] R.
34
32
35
33
Variable A : Type.
36
34
Variable R : relation A.
@@ -43,56 +41,88 @@ Section Properties.
43
41
44
42
(** Correctness of the reflexive-transitive closure operator *)
45
43
46
- Lemma clos_rt_is_preorder : preorder R*.
44
+ #[export] Instance PreOrder_clos_rt : PreOrder R*.
47
45
Proof .
46
+ split.
47
+ - exact (rt_refl A R).
48
+ - exact (rt_trans A R).
49
+ Qed .
50
+
51
+ #[deprecated(since="9.1", use=PreOrder_clos_rt)]
52
+ #[warning="-deprecated"]
53
+ Lemma clos_rt_is_preorder : preorder _ R*.
54
+ Proof .
55
+ #[warning="-deprecated"]
48
56
apply Build_preorder.
49
57
- exact (rt_refl A R).
50
58
- exact (rt_trans A R).
51
59
Qed .
52
60
53
61
(** Idempotency of the reflexive-transitive closure operator *)
54
62
55
- Lemma clos_rt_idempotent : inclusion (R*)* R*.
63
+ #[export] Instance subrelation_clos_rt_idemp : subrelation (R*)* R*.
56
64
Proof .
57
- red.
58
65
induction 1 as [x y H|x|x y z H IH H0 IH0]; auto with sets.
59
66
apply rt_trans with y; auto with sets.
60
67
Qed .
61
68
69
+ #[deprecated(since="9.1", use=subrelation_clos_rt_idemp)]
70
+ #[warning="-deprecated"]
71
+ Lemma clos_rt_idempotent : inclusion _ (R*)* R*.
72
+ Proof . apply subrelation_clos_rt_idemp. Qed .
73
+
62
74
End Clos_Refl_Trans.
63
75
64
76
Section Clos_Refl_Sym_Trans.
65
77
66
78
(** Reflexive-transitive closure is included in the
67
79
reflexive-symmetric-transitive closure *)
68
80
69
- Lemma clos_rt_clos_rst :
70
- inclusion (clos_refl_trans R) (clos_refl_sym_trans R).
81
+ #[export] Instance subrelation_clos_rt_clos_rst :
82
+ subrelation (clos_refl_trans R) (clos_refl_sym_trans R).
71
83
Proof .
72
84
red.
73
85
induction 1 as [x y H|x|x y z H IH H0 IH0]; auto with sets.
74
86
apply rst_trans with y; auto with sets.
75
87
Qed .
76
88
89
+ #[deprecated(since="9.1", use=subrelation_clos_rt_clos_rst)]
90
+ #[warning="-deprecated"]
91
+ Lemma clos_rt_clos_rst :
92
+ inclusion _ (clos_refl_trans R) (clos_refl_sym_trans R).
93
+ Proof . apply subrelation_clos_rt_clos_rst. Qed .
94
+
77
95
(** Reflexive closure is included in the
78
96
reflexive-transitive closure *)
79
97
80
- Lemma clos_r_clos_rt :
81
- inclusion (clos_refl R) (clos_refl_trans R).
98
+ #[export] Instance subrelation_clos_r_clos_rt :
99
+ subrelation (clos_refl R) (clos_refl_trans R).
82
100
Proof .
83
101
induction 1 as [? ?| ].
84
102
- constructor; auto.
85
103
- constructor 2.
86
104
Qed .
87
105
88
- Lemma clos_t_clos_rt :
89
- inclusion (clos_trans R) (clos_refl_trans R).
106
+ #[deprecated(since="9.1", use=subrelation_clos_r_clos_rt)]
107
+ #[warning="-deprecated"]
108
+ Lemma clos_r_clos_rt :
109
+ inclusion _ (clos_refl R) (clos_refl_trans R).
110
+ Proof . apply subrelation_clos_r_clos_rt. Qed .
111
+
112
+ #[export] Instance subrelation_clos_t_clos_rt :
113
+ subrelation (clos_trans R) (clos_refl_trans R).
90
114
Proof .
91
115
induction 1 as [? ?| ].
92
116
- constructor. auto.
93
117
- econstructor 3; eassumption.
94
118
Qed .
95
119
120
+ #[deprecated(since="9.1", use=subrelation_clos_t_clos_rt)]
121
+ #[warning="-deprecated"]
122
+ Lemma clos_t_clos_rt :
123
+ inclusion _ (clos_trans R) (clos_refl_trans R).
124
+ Proof . apply subrelation_clos_t_clos_rt. Qed .
125
+
96
126
Lemma clos_rt_t : forall x y z,
97
127
clos_refl_trans R x y -> clos_trans R y z ->
98
128
clos_trans R x z.
@@ -104,25 +134,42 @@ Section Properties.
104
134
105
135
(** Correctness of the reflexive-symmetric-transitive closure *)
106
136
137
+ #[export] Instance Equivalence_clos_rst_is : Equivalence (clos_refl_sym_trans R).
138
+ Proof .
139
+ split.
140
+ - exact (rst_refl A R).
141
+ - exact (rst_sym A R).
142
+ - exact (rst_trans A R).
143
+ Qed .
144
+
145
+ #[deprecated(since="9.1", use=Equivalence_clos_rst_is)]
146
+ #[warning="-deprecated"]
107
147
Lemma clos_rst_is_equiv : equivalence A (clos_refl_sym_trans R).
108
148
Proof .
109
- apply Build_equivalence .
149
+ split .
110
150
- exact (rst_refl A R).
111
151
- exact (rst_trans A R).
112
152
- exact (rst_sym A R).
113
153
Qed .
114
154
115
155
(** Idempotency of the reflexive-symmetric-transitive closure operator *)
116
156
117
- Lemma clos_rst_idempotent :
118
- inclusion (clos_refl_sym_trans (clos_refl_sym_trans R))
157
+ #[export] Instance subrelation_clos_rst_idemp :
158
+ subrelation (clos_refl_sym_trans (clos_refl_sym_trans R))
119
159
(clos_refl_sym_trans R).
120
160
Proof .
121
161
red.
122
162
induction 1 as [x y H|x|x y H IH|x y z H IH H0 IH0]; auto with sets.
123
163
apply rst_trans with y; auto with sets.
124
164
Qed .
125
165
166
+ #[deprecated(since="9.1", use=subrelation_clos_rst_idemp)]
167
+ #[warning="-deprecated"]
168
+ Lemma clos_rst_idempotent :
169
+ inclusion _ (clos_refl_sym_trans (clos_refl_sym_trans R))
170
+ (clos_refl_sym_trans R).
171
+ Proof . apply subrelation_clos_rst_idemp. Qed .
172
+
126
173
End Clos_Refl_Sym_Trans.
127
174
128
175
Section Equivalences.
@@ -424,33 +471,57 @@ End Properties.
424
471
425
472
(* begin hide *)
426
473
(* Compatibility *)
474
+ #[deprecated(since="2009", use=clos_trans_tn1)]
427
475
Notation trans_tn1 := clos_trans_tn1 (only parsing).
476
+ #[deprecated(since="2009", use=clos_tn1_trans)]
428
477
Notation tn1_trans := clos_tn1_trans (only parsing).
478
+ #[deprecated(since="2009", use=clos_trans_tn1_iff)]
429
479
Notation tn1_trans_equiv := clos_trans_tn1_iff (only parsing).
430
480
481
+ #[deprecated(since="2009", use=clos_trans_t1n)]
431
482
Notation trans_t1n := clos_trans_t1n (only parsing).
483
+ #[deprecated(since="2009", use=clos_t1n_trans)]
432
484
Notation t1n_trans := clos_t1n_trans (only parsing).
485
+ #[deprecated(since="2009", use=clos_trans_t1n_iff)]
433
486
Notation t1n_trans_equiv := clos_trans_t1n_iff (only parsing).
434
487
488
+ #[deprecated(since="2009", use=clos_rtn1_step)]
435
489
Notation R_rtn1 := clos_rtn1_step (only parsing).
490
+ #[deprecated(since="2009", use=clos_rt_rt1n)]
436
491
Notation trans_rt1n := clos_rt_rt1n (only parsing).
492
+ #[deprecated(since="2009", use=clos_rt1n_rt)]
437
493
Notation rt1n_trans := clos_rt1n_rt (only parsing).
494
+ #[deprecated(since="2009", use=clos_rt_rt1n_iff)]
438
495
Notation rt1n_trans_equiv := clos_rt_rt1n_iff (only parsing).
439
496
497
+ #[deprecated(since="2009", use=clos_rt1n_step)]
440
498
Notation R_rt1n := clos_rt1n_step (only parsing).
499
+ #[deprecated(since="2009", use=clos_rt_rtn1)]
441
500
Notation trans_rtn1 := clos_rt_rtn1 (only parsing).
501
+ #[deprecated(since="2009", use=clos_rtn1_rt)]
442
502
Notation rtn1_trans := clos_rtn1_rt (only parsing).
503
+ #[deprecated(since="2009", use=clos_rt_rtn1_iff)]
443
504
Notation rtn1_trans_equiv := clos_rt_rtn1_iff (only parsing).
444
505
506
+ #[deprecated(since="2009", use=clos_rst1n_rst)]
445
507
Notation rts1n_rts := clos_rst1n_rst (only parsing).
508
+ #[deprecated(since="2009", use=clos_rst1n_trans)]
446
509
Notation rts_1n_trans := clos_rst1n_trans (only parsing).
510
+ #[deprecated(since="2009", use=clos_rst1n_sym)]
447
511
Notation rts1n_sym := clos_rst1n_sym (only parsing).
512
+ #[deprecated(since="2009", use=clos_rst_rst1n)]
448
513
Notation rts_rts1n := clos_rst_rst1n (only parsing).
514
+ #[deprecated(since="2009", use=clos_rst_rst1n_iff)]
449
515
Notation rts_rts1n_equiv := clos_rst_rst1n_iff (only parsing).
450
516
517
+ #[deprecated(since="2009", use=clos_rstn1_rst)]
451
518
Notation rtsn1_rts := clos_rstn1_rst (only parsing).
519
+ #[deprecated(since="2009", use=clos_rstn1_trans)]
452
520
Notation rtsn1_trans := clos_rstn1_trans (only parsing).
521
+ #[deprecated(since="2009", use=clos_rstn1_sym)]
453
522
Notation rtsn1_sym := clos_rstn1_sym (only parsing).
523
+ #[deprecated(since="2009", use=clos_rst_rstn1)]
454
524
Notation rts_rtsn1 := clos_rst_rstn1 (only parsing).
525
+ #[deprecated(since="2009", use=clos_rst_rstn1_iff)]
455
526
Notation rts_rtsn1_equiv := clos_rst_rstn1_iff (only parsing).
456
527
(* end hide *)
0 commit comments