This PR exposes the definitions about `Int*`. The main reason is that the `SInt` simprocs require many of them to be exposed. Furthermore, `decide` now works with `Int*` operations. This fixes #10631.
132 lines
3.9 KiB
Text
132 lines
3.9 KiB
Text
module
|
|
|
|
section
|
|
|
|
variable (x : Nat)
|
|
|
|
#check_simp x = (8 : UInt8).toNat ~> x = 8
|
|
#check_simp x = (257 : UInt8).toNat ~> x = 1
|
|
#check_simp x = (8 : UInt16).toNat ~> x = 8
|
|
#check_simp x = (65537 : UInt16).toNat ~> x = 1
|
|
#check_simp x = (8 : UInt32).toNat ~> x = 8
|
|
#check_simp x = (4294967297 : UInt32).toNat ~> x = 1
|
|
#check_simp x = (8 : UInt64).toNat ~> x = 8
|
|
#check_simp x = (18446744073709551617 : UInt64).toNat ~> x = 1
|
|
|
|
end
|
|
|
|
section
|
|
|
|
variable (x : UInt8)
|
|
|
|
example : (5 : UInt8) = 5 := by decide
|
|
example : (5 : UInt8) ≤ 5 := by decide
|
|
example : (5 : UInt8) < 6 := by decide
|
|
#check_simp x = 2 + 3 ~> x = 5
|
|
#check_simp x = 2 * 3 ~> x = 6
|
|
#check_simp x = 2 - 3 ~> x = 255
|
|
#check_simp x = 4 / 3 ~> x = 1
|
|
#check_simp x = 5 % 3 ~> x = 2
|
|
#check_simp True = ((3 : UInt8) < 3) ~> False
|
|
#check_simp True = ((3 : UInt8) ≤ 2) ~> False
|
|
#check_simp True = ((3 : UInt8) > 3) ~> False
|
|
#check_simp True = ((3 : UInt8) ≥ 4) ~> False
|
|
#check_simp True = ((3 : UInt8) = 4) ~> False
|
|
#check_simp True = ((3 : UInt8) ≠ 3) ~> False
|
|
#check_simp True = ((3 : UInt8) == 4) ~> False
|
|
#check_simp True = ((3 : UInt8) != 3) ~> False
|
|
#check_simp x = UInt8.ofNatLT 5 (by decide) ~> x = 5
|
|
#check_simp x = UInt8.ofNat 5 ~> x = 5
|
|
#check_simp x = UInt8.ofNat 257 ~> x = 1
|
|
|
|
end
|
|
|
|
section
|
|
|
|
variable (x : UInt16)
|
|
|
|
example : (5 : UInt16) = 5 := by decide
|
|
example : (5 : UInt16) ≤ 5 := by decide
|
|
example : (5 : UInt16) < 6 := by decide
|
|
#check_simp x = 2 + 3 ~> x = 5
|
|
#check_simp x = 2 * 3 ~> x = 6
|
|
#check_simp x = 2 - 3 ~> x = 65535
|
|
#check_simp x = 4 / 3 ~> x = 1
|
|
#check_simp x = 5 % 3 ~> x = 2
|
|
#check_simp True = ((3 : UInt16) < 3) ~> False
|
|
#check_simp True = ((3 : UInt16) ≤ 2) ~> False
|
|
#check_simp True = ((3 : UInt16) > 3) ~> False
|
|
#check_simp True = ((3 : UInt16) ≥ 4) ~> False
|
|
#check_simp True = ((3 : UInt16) = 4) ~> False
|
|
#check_simp True = ((3 : UInt16) ≠ 3) ~> False
|
|
#check_simp True = ((3 : UInt16) == 4) ~> False
|
|
#check_simp True = ((3 : UInt16) != 3) ~> False
|
|
#check_simp x = UInt16.ofNatLT 5 (by decide) ~> x = 5
|
|
#check_simp x = UInt16.ofNat 5 ~> x = 5
|
|
#check_simp x = UInt16.ofNat 65537 ~> x = 1
|
|
|
|
end
|
|
|
|
section
|
|
|
|
variable (x : UInt32)
|
|
|
|
example : (5 : UInt32) = 5 := by decide
|
|
example : (5 : UInt32) ≤ 5 := by decide
|
|
example : (5 : UInt32) < 6 := by decide
|
|
#check_simp x = 2 + 3 ~> x = 5
|
|
#check_simp x = 2 * 3 ~> x = 6
|
|
#check_simp x = 2 - 3 ~> x = 4294967295
|
|
#check_simp x = 4 / 3 ~> x = 1
|
|
#check_simp x = 5 % 3 ~> x = 2
|
|
#check_simp True = ((3 : UInt32) < 3) ~> False
|
|
#check_simp True = ((3 : UInt32) ≤ 2) ~> False
|
|
#check_simp True = ((3 : UInt32) > 3) ~> False
|
|
#check_simp True = ((3 : UInt32) ≥ 4) ~> False
|
|
#check_simp True = ((3 : UInt32) = 4) ~> False
|
|
#check_simp True = ((3 : UInt32) ≠ 3) ~> False
|
|
#check_simp True = ((3 : UInt32) == 4) ~> False
|
|
#check_simp True = ((3 : UInt32) != 3) ~> False
|
|
#check_simp x = UInt32.ofNatLT 5 (by decide) ~> x = 5
|
|
#check_simp x = UInt32.ofNat 5 ~> x = 5
|
|
#check_simp x = UInt32.ofNat 4294967297 ~> x = 1
|
|
|
|
end
|
|
|
|
section
|
|
|
|
variable (x : UInt64)
|
|
|
|
example : (5 : UInt64) = 5 := by decide
|
|
example : (5 : UInt64) ≤ 5 := by decide
|
|
example : (5 : UInt64) < 6 := by decide
|
|
#check_simp x = 2 + 3 ~> x = 5
|
|
#check_simp x = 2 * 3 ~> x = 6
|
|
#check_simp x = 2 - 3 ~> x = 18446744073709551615
|
|
#check_simp x = 4 / 3 ~> x = 1
|
|
#check_simp x = 5 % 3 ~> x = 2
|
|
#check_simp True = ((3 : UInt64) < 3) ~> False
|
|
#check_simp True = ((3 : UInt64) ≤ 2) ~> False
|
|
#check_simp True = ((3 : UInt64) > 3) ~> False
|
|
#check_simp True = ((3 : UInt64) ≥ 4) ~> False
|
|
#check_simp True = ((3 : UInt64) = 4) ~> False
|
|
#check_simp True = ((3 : UInt64) ≠ 3) ~> False
|
|
#check_simp True = ((3 : UInt64) == 4) ~> False
|
|
#check_simp True = ((3 : UInt64) != 3) ~> False
|
|
#check_simp x = UInt64.ofNatLT 5 (by decide) ~> x = 5
|
|
#check_simp x = UInt64.ofNat 5 ~> x = 5
|
|
#check_simp x = UInt64.ofNat 18446744073709551617 ~> x = 1
|
|
|
|
end
|
|
|
|
section
|
|
|
|
variable (x : USize)
|
|
|
|
/- USize.toNat -/
|
|
|
|
#check_simp USize.toNat 4294967296 !~>
|
|
#check_simp USize.toNat 4294967295 ~> 4294967295
|
|
#check_simp USize.toNat (x &&& 1) ~> x.toNat % 2
|
|
|
|
end
|