-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
import Mathlib
open symmDiff
instance : Add (Set α) := ⟨(· ∆ ·)⟩
@[simp]
lemma add_def {a b : Set α} : a + b = a ∆ b := rfl
instance : Zero (Set α) := ⟨{}⟩
@[simp]
lemma zero_def : (0 : Set α) = ∅ := rfl
instance : Neg (Set α) := ⟨id⟩
@[simp]
lemma neg_def {a : Set α} : -a = a := rfl
instance : Mul (Set α) := ⟨(· ∩ ·)⟩
@[simp]
lemma mul_def {a b : Set α} : a * b = a ∩ b := rfl
instance : One (Set α) := ⟨.univ⟩
@[simp]
lemma one_def : (1 : Set α) = .univ := rfl
example : CommRing (Set α) where
add_assoc := by
simp only [add_def]
grind
zero_add := by simp
add_zero := by simp
nsmul := nsmulRec
zsmul := zsmulRec
neg_add_cancel := by simp
add_comm := by
simp only [add_def]
grind
left_distrib a b c := by
ext x
simp [symmDiff_def]
grind
right_distrib a b c := by
ext x
simp [symmDiff_def]
grind
zero_mul := by simp
mul_zero := by simp
mul_assoc := by
simp only [mul_def]
grind
one_mul := by simp
mul_one := by simp
mul_comm := by
simp only [mul_def]
grind