@@ -25,7 +25,7 @@ Class Graph := {
25
25
T: Type ;
26
26
X: T -> T -> Type ;
27
27
equal: forall A B, relation (X A B);
28
- equal_:> forall A B, Equivalence (equal A B)
28
+ equal_:: forall A B, Equivalence (equal A B)
29
29
}.
30
30
31
31
(*Arguments equal : simpl never. *)
@@ -91,31 +91,31 @@ Section Structures.
91
91
Context {Mo: Monoid_Ops G} {SLo: SemiLattice_Ops G} {Ko: Star_Op G} {Co: Converse_Op G}.
92
92
93
93
Class Monoid := {
94
- dot_compat:> forall A B C, Proper (equal A B ==> equal B C ==> equal A C) (dot A B C);
94
+ dot_compat:: forall A B C, Proper (equal A B ==> equal B C ==> equal A C) (dot A B C);
95
95
dot_assoc: forall A B C D (x: X A B) y (z: X C D), x*(y*z) == (x*y)*z;
96
96
dot_neutral_left: forall A B (x: X A B), 1*x == x;
97
97
dot_neutral_right: forall A B (x: X B A), x*1 == x
98
98
}.
99
99
100
100
Class SemiLattice := {
101
- plus_compat:> forall A B, Proper (equal A B ==> equal A B ==> equal A B) (plus A B);
101
+ plus_compat:: forall A B, Proper (equal A B ==> equal A B ==> equal A B) (plus A B);
102
102
plus_neutral_left: forall A B (x: X A B), 0+x == x;
103
103
plus_idem: forall A B (x: X A B), x+x == x;
104
104
plus_assoc: forall A B (x y z: X A B), x+(y+z) == (x+y)+z;
105
105
plus_com: forall A B (x y: X A B), x+y == y+x
106
106
}.
107
107
108
108
Class IdemSemiRing := {
109
- ISR_Monoid :> Monoid;
110
- ISR_SemiLattice :> SemiLattice;
109
+ ISR_Monoid :: Monoid;
110
+ ISR_SemiLattice :: SemiLattice;
111
111
dot_ann_left: forall A B C (x: X B C), zero A B * x == 0;
112
112
dot_ann_right: forall A B C (x: X C B), x * zero B A == 0;
113
113
dot_distr_left: forall A B C (x y: X A B) (z: X B C), (x+y)*z == x*z + y*z;
114
114
dot_distr_right: forall A B C (x y: X B A) (z: X C B), z*(x+y) == z*x + z*y
115
115
}.
116
116
117
117
Class KleeneAlgebra := {
118
- KA_ISR :> IdemSemiRing;
118
+ KA_ISR :: IdemSemiRing;
119
119
star_make_left: forall A (a:X A A), 1 + a#*a == a#;
120
120
star_destruct_left: forall A B (a: X A A) (c: X A B), a*c <== c -> a#*c <== c;
121
121
star_destruct_right: forall A B (a: X A A) (c: X B A), c*a <== c -> c*a# <== c
@@ -127,12 +127,12 @@ Section Structures.
127
127
(* TODO: introduce an intermediate ConverseMonoid class *)
128
128
129
129
Class ConverseIdemSemiRing := {
130
- CISR_SL :> SemiLattice;
130
+ CISR_SL :: SemiLattice;
131
131
dot_compat_c: forall A B C, Proper (equal A B ==> equal B C ==> equal A C) (dot A B C);
132
132
dot_assoc_c: forall A B C D (x: X A B) y (z: X C D), x*(y*z) == (x*y)*z;
133
133
dot_neutral_left_c: forall A B (x: X A B), 1*x == x;
134
134
135
- conv_compat:> forall A B, Proper (equal A B ==> equal B A) (conv A B);
135
+ conv_compat:: forall A B, Proper (equal A B ==> equal B A) (conv A B);
136
136
conv_invol: forall A B (x: X A B), x`` == x;
137
137
conv_dot: forall A B C (x: X A B) (y: X B C), (x*y)` == y`*x`;
138
138
conv_plus: forall A B (x y: X A B), (x+y)` == y`+x`;
@@ -141,7 +141,7 @@ Section Structures.
141
141
}.
142
142
143
143
Class ConverseKleeneAlgebra := {
144
- CKA_CISR :> ConverseIdemSemiRing;
144
+ CKA_CISR :: ConverseIdemSemiRing;
145
145
star_make_left_c: forall A (a:X A A), 1 + a#*a == a#;
146
146
star_destruct_left_c: forall A B (a: X A A) (c: X A B), a*c <== c -> a#*c <== c
147
147
}.
0 commit comments