lean4-htt/tests/lean/run/lossy_casts.lean
Kim Morrison c06af84d9f
fix: refactor grind's module/ring design to avoid a diamond (#9168)
This PR resolves a defeq diamond, which caused a problem in Mathlib:
```
import Mathlib

example (R : Type) [I : Ring R] :
  @AddCommGroup.toGrindIntModule R (@Ring.toAddCommGroup R I) =
    @Lean.Grind.Ring.instIntModule R (@Ring.toGrindRing R I) := rfl -- fails
```
2025-07-03 06:50:46 +00:00

61 lines
824 B
Text

import Std
/-!
Ensure that we have not created lossy cast instances.
-/
/--
error: type mismatch
x
has type
Nat
but is expected to have type
Fin 8
-/
#guard_msgs in
example (x : Nat) : Fin 8 := x
/--
error: type mismatch
x
has type
Nat
but is expected to have type
UInt8
-/
#guard_msgs in
example (x : Nat) : UInt8 := x
/--
error: type mismatch
x
has type
Nat
but is expected to have type
USize
-/
#guard_msgs in
example (x : Nat) : USize := x
/--
error: type mismatch
x
has type
Nat
but is expected to have type
Int8
-/
#guard_msgs in
example (x : Nat) : Int8 := x
/--
error: type mismatch
x
has type
Nat
but is expected to have type
ISize
-/
#guard_msgs in
example (x : Nat) : ISize := x
-- TODO: currently there is a global lossy instance `NatCast (BitVec w)`, that should be removed.