@@ -384,7 +384,7 @@ an explicit class instead of a notation for two reasons:
384
384
Using the [RelDecision], the [f] is hidden under a lambda, which prevents
385
385
unnecessary evaluation. *)
386
386
Class RelDecision {A B} (R : A → B → Prop ) :=
387
- decide_rel x y :> Decision (R x y).
387
+ decide_rel x y :: Decision (R x y).
388
388
Global Hint Mode RelDecision ! ! ! : typeclass_instances.
389
389
Global Arguments decide_rel {_ _} _ {_} _ _ : simpl never, assert.
390
390
Notation EqDecision A := (RelDecision (=@{A})).
@@ -515,14 +515,14 @@ Definition strict {A} (R : relation A) : relation A := λ X Y, R X Y ∧ ¬R Y X
515
515
Global Instance : Params (@strict) 2 := {}.
516
516
517
517
Class PartialOrder {A} (R : relation A) : Prop := {
518
- partial_order_pre :> PreOrder R;
519
- partial_order_anti_symm :> AntiSymm (=) R
518
+ partial_order_pre :: PreOrder R;
519
+ partial_order_anti_symm :: AntiSymm (=) R
520
520
}.
521
521
Global Hint Mode PartialOrder ! ! : typeclass_instances.
522
522
523
523
Class TotalOrder {A} (R : relation A) : Prop := {
524
- total_order_partial :> PartialOrder R;
525
- total_order_trichotomy :> Trichotomy (strict R)
524
+ total_order_partial :: PartialOrder R;
525
+ total_order_trichotomy :: Trichotomy (strict R)
526
526
}.
527
527
Global Hint Mode TotalOrder ! ! : typeclass_instances.
528
528
@@ -1601,15 +1601,15 @@ Global Hint Mode SemiSet - ! - - - - : typeclass_instances.
1601
1601
1602
1602
Class Set_ A C `{ElemOf A C, Empty C, Singleton A C,
1603
1603
Union C, Intersection C, Difference C} : Prop := {
1604
- set_semi_set :> SemiSet A C;
1604
+ set_semi_set :: SemiSet A C;
1605
1605
elem_of_intersection (X Y : C) (x : A) : x ∈ X ∩ Y ↔ x ∈ X ∧ x ∈ Y;
1606
1606
elem_of_difference (X Y : C) (x : A) : x ∈ X ∖ Y ↔ x ∈ X ∧ x ∉ Y
1607
1607
}.
1608
1608
Global Hint Mode Set_ - ! - - - - - - : typeclass_instances.
1609
1609
1610
1610
Class TopSet A C `{ElemOf A C, Empty C, Top C, Singleton A C,
1611
1611
Union C, Intersection C, Difference C} : Prop := {
1612
- top_set_set :> Set_ A C;
1612
+ top_set_set :: Set_ A C;
1613
1613
elem_of_top' (x : A) : x ∈@{C} ⊤; (* We prove [elem_of_top : x ∈@{C} ⊤ ↔ True]
1614
1614
in [sets.v], which is more convenient for rewriting. *)
1615
1615
}.
@@ -1650,7 +1650,7 @@ Qed.
1650
1650
anyway so as to avoid cycles in type class search. *)
1651
1651
Class FinSet A C `{ElemOf A C, Empty C, Singleton A C, Union C,
1652
1652
Intersection C, Difference C, Elements A C, EqDecision A} : Prop := {
1653
- fin_set_set :> Set_ A C;
1653
+ fin_set_set :: Set_ A C;
1654
1654
elem_of_elements (X : C) x : x ∈ elements X ↔ x ∈ X;
1655
1655
NoDup_elements (X : C) : NoDup (elements X)
1656
1656
}.
@@ -1674,7 +1674,7 @@ in a type constructor of type [Type → Type]. *)
1674
1674
Class MonadSet M `{∀ A, ElemOf A (M A),
1675
1675
∀ A, Empty (M A), ∀ A, Singleton A (M A), ∀ A, Union (M A),
1676
1676
!MBind M, !MRet M, !FMap M, !MJoin M} : Prop := {
1677
- monad_set_semi_set A :> SemiSet A (M A);
1677
+ monad_set_semi_set A :: SemiSet A (M A);
1678
1678
elem_of_bind {A B} (f : A → M B) (X : M A) (x : B) :
1679
1679
x ∈ X ≫= f ↔ ∃ y, x ∈ f y ∧ y ∈ X;
1680
1680
elem_of_ret {A} (x y : A) : x ∈@{M A} mret y ↔ x = y;
@@ -1705,9 +1705,9 @@ Global Instance: Params (@fresh) 3 := {}.
1705
1705
Global Arguments fresh : simpl never.
1706
1706
1707
1707
Class Infinite A := {
1708
- infinite_fresh :> Fresh A (list A);
1708
+ infinite_fresh :: Fresh A (list A);
1709
1709
infinite_is_fresh (xs : list A) : fresh xs ∉ xs;
1710
- infinite_fresh_Permutation :> Proper (@Permutation A ==> (=)) fresh;
1710
+ infinite_fresh_Permutation :: Proper (@Permutation A ==> (=)) fresh;
1711
1711
}.
1712
1712
Global Hint Mode Infinite ! : typeclass_instances.
1713
1713
Global Arguments infinite_fresh : simpl never.
0 commit comments