File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -16,15 +16,19 @@ variable {α 𝕜 : Type}
1616section Defs
1717
1818/-- Division by 2 -/
19- class Div2 α [Zero α] where
19+ class Div2 α where
2020 div2 : α → α
21- div2_zero : div2 (0 : α) = 0
2221
23- export Div2 (div2 div2_zero)
22+ /-- Division by 2 respects zero -/
23+ class Div2Zero α [Zero α] [Div2 α] where
24+ div2_zero : Div2.div2 (0 : α) = 0
25+
26+ export Div2 (div2)
27+ export Div2Zero (div2_zero)
2428attribute [simp] div2_zero
2529
2630/-- Division by 2 is conservative -/
27- class ApproxDiv2 (α α' : Type ) [Approx α α'] [Zero α] [Zero α'] [ Div2 α] [Div2 α'] where
31+ class ApproxDiv2 (α α' : Type ) [Approx α α'] [Div2 α] [Div2 α'] where
2832 approx_div2 {x : α} {x' : α'} (a : approx x x') : approx (div2 x) (div2 x')
2933
3034export ApproxDiv2 (approx_div2)
@@ -45,6 +49,9 @@ variable {E : Type} [Zero E] [SMulZeroClass ℚ E]
4549/-- Division by 2 for modules -/
4650instance {E : Type} [Zero E] [SMulZeroClass ℚ E] : Div2 E where
4751 div2 x := (2 ⁻¹ : ℚ) • x
52+
53+ /-- Division by 2 respects zero for modules -/
54+ instance {E : Type} [Zero E] [SMulZeroClass ℚ E] : Div2Zero E where
4855 div2_zero := smul_zero _
4956
5057lemma div2_eq_smul {E : Type } [Zero E] [SMulZeroClass ℚ E] (x : E) : div2 x = (2 ⁻¹ : ℚ) • x := rfl
Original file line number Diff line number Diff line change @@ -28,6 +28,8 @@ instance : Repr Dyadic where
2828
2929instance : Div2 Dyadic where
3030 div2 x := x >>> 1
31+
32+ instance : Div2Zero Dyadic where
3133 div2_zero := rfl
3234
3335lemma Dyadic.natCast_zero : (0 : ℕ) = (0 : Dyadic) := rfl
You can’t perform that action at this time.
0 commit comments