This PR adds support for `Int.sign`, `Int.fdiv`, `Int.tdiv`, `Int.fmod`,
`Int.tmod`, and `Int.bmod` to `grind`. These operations are just
preprocessed away. We assume that they are not very common in practice.
Examples:
```lean
example {x y : Int} : y = 0 → (x.fdiv y) = 0 := by grind
example {x y : Int} : y = 0 → (x.tdiv y) = 0 := by grind
example {x y : Int} : y = 0 → (x.fmod y) = x := by grind
example {x y : Int} : y = 1 → (x.fdiv (2 - y)) = x := by grind
example {x : Int} : x > 0 → x.sign = 1 := by grind
example {x : Int} : x < 0 → x.sign = -1 := by grind
example {x y : Int} : x.sign = 0 → x*y = 0 := by grind
```
See #11622
7 lines
406 B
Text
7 lines
406 B
Text
example {x y : Int} : y = 0 → (x.fdiv y) = 0 := by grind
|
|
example {x y : Int} : y = 0 → (x.tdiv y) = 0 := by grind
|
|
example {x y : Int} : y = 0 → (x.fmod y) = x := by grind
|
|
example {x y : Int} : y = 1 → (x.fdiv (2 - y)) = x := by grind
|
|
example {x : Int} : x > 0 → x.sign = 1 := by grind
|
|
example {x : Int} : x < 0 → x.sign = -1 := by grind
|
|
example {x y : Int} : x.sign = 0 → x*y = 0 := by grind
|