@@ -31,7 +31,7 @@ Import ListNotations.
31
31
(* Rename? *)
32
32
Class Producer (G : Type -> Type ) :=
33
33
{
34
- super :> Monad G;
34
+ super : Monad G;
35
35
36
36
sample : forall {A}, G A -> list A;
37
37
@@ -57,6 +57,7 @@ Class Producer (G : Type -> Type) :=
57
57
(forall (a : A), (a \in semProd g) -> G B) -> G B;
58
58
59
59
}.
60
+ #[global] Existing Instance super.
60
61
61
62
Lemma semProdOpt_equiv {A} {G} `{PG: Producer G}
62
63
(g : G (option A)) :
@@ -128,14 +129,19 @@ Class SizedAntimonotonicNone {A} {G} `{Producer G}
128
129
(** FP + SizeMon *)
129
130
Class SizeMonotonicOptFP {A} {G} {H : Producer G}
130
131
(g : G (option A)) :=
131
- { IsMon :> @SizeMonotonicOpt _ _ H g;
132
- IsFP :> @SizeFP _ _ H g }.
132
+ { IsMon : @SizeMonotonicOpt _ _ H g;
133
+ IsFP : @SizeFP _ _ H g }.
134
+ #[global] Existing Instance IsMon.
135
+ #[global] Existing Instance IsFP.
133
136
134
137
Class SizedMonotonicOptFP {A} {G} {H : Producer G}
135
138
(g : nat -> G (option A)) :=
136
- { IsMonSized :> @SizedMonotonicOpt _ _ H g;
137
- IsFPSized :> @SizedFP _ _ H g;
138
- IsAntimon :> @SizedAntimonotonicNone _ _ _ g }.
139
+ { IsMonSized : @SizedMonotonicOpt _ _ H g;
140
+ IsFPSized : @SizedFP _ _ H g;
141
+ IsAntimon : @SizedAntimonotonicNone _ _ _ g }.
142
+ #[global] Existing Instance IsMonSized.
143
+ #[global] Existing Instance IsFPSized.
144
+ #[global] Existing Instance IsAntimon.
139
145
140
146
#[global] Instance SizeMonotonicOptFP_FP {A} {G}
141
147
(g : G (option A))
0 commit comments