Documentation
Sparkle
.
Core
.
MulOracle
Search
return to top
source
Imports
Init
Sparkle.Core.MulOracleProof
Sparkle.Core.OracleSpec
Sparkle.Verification.MulProps
Std.Tactic.BVDecide
Imported by
MulOracle
.
S
MulOracle
.
step
MulOracle
.
extract
MulOracle
.
csa64_main
MulOracle
.
equiv
instOracleReductionSProdBitVecOfNatNat
source
@[reducible, inline]
abbrev
MulOracle
.
S
:
Type
Equations
MulOracle.S
=
(
BitVec
64
×
BitVec
64
×
BitVec
64
×
BitVec
64
)
Instances For
source
def
MulOracle
.
step
(
s
:
S
)
:
S
Equations
MulOracle.step
s
=
Sparkle.Verification.MulProps.carrySaveStep
s
.
fst
s
.
snd
.
fst
s
.
snd
.
snd
.
fst
s
.
snd
.
snd
.
snd
Instances For
source
def
MulOracle
.
extract
(
s
:
S
)
:
BitVec
64
Equations
MulOracle.extract
s
=
s
.
fst
+
s
.
snd
.
fst
Instances For
source
theorem
MulOracle
.
csa64_main
(
a
b
:
BitVec
64
)
:
match
Sparkle.Verification.MulProps.carrySaveN
64
0
0
a
b
with |
(
rd
,
rdx
,
fst
,
snd
)
=>
rd
+
rdx
=
a
*
b
source
theorem
MulOracle
.
equiv
(
input
:
BitVec
64
×
BitVec
64
)
:
extract
(
Sparkle.Core.OracleSpec.iterateN
step
64
(
0
,
0
,
input
.
fst
,
input
.
snd
)
)
=
input
.
fst
*
input
.
snd
source
instance
instOracleReductionSProdBitVecOfNatNat
:
Sparkle.Core.OracleSpec.OracleReduction
"pcpi_mul"
MulOracle.S
(
BitVec
64
×
BitVec
64
)
(
BitVec
64
)
Equations
One or more equations did not get rendered due to their size.