Skip to content

Commit f80e2d7

Browse files
committed
feat: grind attributes for relation typeclasses
1 parent a53759b commit f80e2d7

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
set_option grind.warning false
2+
3+
example [Mul α] [Std.Commutative (α := α) (· * ·)] {a b : α} : a * b = b * a := by
4+
grind
5+
6+
example [Mul α] [Std.Associative (α := α) (· * ·)] {a b : α} : a * b * c = a * (b * c) := by
7+
grind
8+
9+
example [Mul α] [Std.Commutative (α := α) (· * ·)] [Std.Associative (α := α) (· * ·)] {a b c : α} :
10+
a * b * c = b * (a * c) := by
11+
grind
12+
13+
example [Mul α] [Std.IdempotentOp (α := α) (· * ·)] {a : α} : a * a = a := by
14+
grind
15+
16+
example [Mul α] [Std.IdempotentOp (α := α) (· * ·)] [Std.Commutative (α := α) (· * ·)]
17+
[Std.Associative (α := α) (· * ·)] {a : α} :
18+
a * b * a = a * b := by
19+
grind
20+
21+
example [Mul α] (a b : α) [Std.LawfulLeftIdentity (α := α) (· * ·) (a : α)] : a * b = b := by
22+
grind
23+
24+
example [Mul α] (a b : α) [Std.LawfulRightIdentity (α := α) (· * ·) (a : α)] : b * a = b := by
25+
grind
26+
27+
example [Mul α] (a b : α) [Std.LawfulRightIdentity (α := α) (· * ·) (a : α)] : b * a * a = b := by
28+
grind
29+
30+
example [Mul α] (a b : α) [Std.LawfulIdentity (α := α) (· * ·) (a : α)]
31+
[Std.Associative (α := α) (· * ·)] : a * b * a = b := by
32+
grind
33+
34+
example [Mul α] (a b : α) [Std.Commutative (α := α) (· * ·)] [Std.LawfulCommIdentity (α := α) (· * ·) (a : α)]
35+
[Std.Associative (α := α) (· * ·)] : a * b * a = b := by
36+
grind
37+
38+
example {r : α → α → Prop} [Std.Refl r] {a : α} : r a a := by grind
39+
40+
example [Mul α] {r : α → α → Prop} [Std.Commutative (α := α) (· * ·)] [Std.Refl r] :
41+
r (a * b) (b * a) := by grind
42+
43+
example {r : α → α → Prop} [Std.Antisymm r] {a b : α} : r a b → r b a → a = b := by grind
44+
example {r : α → α → Prop} [Std.Asymm r] {a b : α} : r a b → r b a → False := by grind
45+
example {r : α → α → Prop} [Std.Asymm r] {a b : α} : r a b → ¬ r b a := by grind
46+
example {r : α → α → Prop} [Std.Asymm r] : Std.Antisymm r := by grind [Std.Antisymm] -- We haven't put `@[grind]` on `Std.Antisymm.mk`.
47+
example {r : α → α → Prop} [Std.Total r] {a b : α} : ¬ r a b → r b a := by grind
48+
example {r : α → α → Prop} [Std.Irrefl r] {a : α} : ¬ r a a := by grind
49+
example [Mul α] {r : α → α → Prop} [Std.Commutative (α := α) (· * ·)] [Std.Irrefl r] :
50+
¬ r (a * b) (b * a) := by
51+
grind
52+
example [Mul α] {r : α → α → Prop} [Std.Commutative (α := α) (· * ·)] [Std.Total r]
53+
(h : ¬ r (a * b) (b * a)) : False := by
54+
grind

0 commit comments

Comments
 (0)