Documentation
Lean
.
Compiler
.
ConstFolding
Search
return to top
source
Imports
Lean.Expr
Imported by
Lean
.
Compiler
.
mkLcProof
Lean
.
Compiler
.
BinFoldFn
Lean
.
Compiler
.
UnFoldFn
Lean
.
Compiler
.
mkUIntTypeName
Lean
.
Compiler
.
NumScalarTypeInfo
Lean
.
Compiler
.
numScalarTypes
Lean
.
Compiler
.
isOfNat
Lean
.
Compiler
.
isToNat
Lean
.
Compiler
.
getInfoFromFn
Lean
.
Compiler
.
getInfoFromVal
Lean
.
Compiler
.
getNumLit
Lean
.
Compiler
.
mkUIntLit
Lean
.
Compiler
.
mkUInt32Lit
Lean
.
Compiler
.
foldBinUInt
Lean
.
Compiler
.
foldUIntAdd
Lean
.
Compiler
.
foldUIntMul
Lean
.
Compiler
.
foldUIntDiv
Lean
.
Compiler
.
foldUIntMod
Lean
.
Compiler
.
foldUIntSub
Lean
.
Compiler
.
preUIntBinFoldFns
Lean
.
Compiler
.
uintBinFoldFns
Lean
.
Compiler
.
foldNatBinOp
Lean
.
Compiler
.
foldNatAdd
Lean
.
Compiler
.
foldNatMul
Lean
.
Compiler
.
foldNatDiv
Lean
.
Compiler
.
foldNatMod
Lean
.
Compiler
.
natPowThreshold
Lean
.
Compiler
.
foldNatPow
Lean
.
Compiler
.
mkNatEq
Lean
.
Compiler
.
mkNatLt
Lean
.
Compiler
.
mkNatLe
Lean
.
Compiler
.
toDecidableExpr
Lean
.
Compiler
.
foldNatBinPred
Lean
.
Compiler
.
foldNatDecEq
Lean
.
Compiler
.
foldNatDecLt
Lean
.
Compiler
.
foldNatDecLe
Lean
.
Compiler
.
foldNatBinBoolPred
Lean
.
Compiler
.
foldNatBeq
Lean
.
Compiler
.
foldNatBlt
Lean
.
Compiler
.
foldNatBle
Lean
.
Compiler
.
natFoldFns
Lean
.
Compiler
.
getBoolLit
Lean
.
Compiler
.
foldStrictAnd
Lean
.
Compiler
.
foldStrictOr
Lean
.
Compiler
.
boolFoldFns
Lean
.
Compiler
.
binFoldFns
Lean
.
Compiler
.
foldNatSucc
Lean
.
Compiler
.
foldCharOfNat
Lean
.
Compiler
.
foldToNat
Lean
.
Compiler
.
uintFoldToNatFns
Lean
.
Compiler
.
unFoldFns
Lean
.
Compiler
.
findBinFoldFn
Lean
.
Compiler
.
findUnFoldFn
Lean
.
Compiler
.
foldBinOp
Lean
.
Compiler
.
foldUnOp
Constant folding for primitives that have special runtime support.
source
def
Lean
.
Compiler
.
mkLcProof
(
p
:
Expr
)
:
Expr
Equations
Instances For
source
@[reducible, inline]
abbrev
Lean
.
Compiler
.
BinFoldFn
:
Type
Equations
Instances For
source
@[reducible, inline]
abbrev
Lean
.
Compiler
.
UnFoldFn
:
Type
Equations
Instances For
source
def
Lean
.
Compiler
.
mkUIntTypeName
(
nbytes
:
Nat
)
:
Name
Equations
Instances For
source
structure
Lean
.
Compiler
.
NumScalarTypeInfo
:
Type
nbits :
Nat
id :
Name
ofNatFn :
Name
toNatFn :
Name
size :
Nat
Instances For
source
def
Lean
.
Compiler
.
numScalarTypes
:
List
NumScalarTypeInfo
Equations
Instances For
source
def
Lean
.
Compiler
.
isOfNat
(
fn
:
Name
)
:
Bool
Equations
Instances For
source
def
Lean
.
Compiler
.
isToNat
(
fn
:
Name
)
:
Bool
Equations
Instances For
source
def
Lean
.
Compiler
.
getInfoFromFn
(
fn
:
Name
)
:
List
NumScalarTypeInfo
→
Option
NumScalarTypeInfo
Equations
Instances For
source
def
Lean
.
Compiler
.
getInfoFromVal
:
Expr
→
Option
NumScalarTypeInfo
Equations
Instances For
source
@[export lean_get_num_lit]
def
Lean
.
Compiler
.
getNumLit
:
Expr
→
Option
Nat
Equations
Instances For
source
def
Lean
.
Compiler
.
mkUIntLit
(
info
:
NumScalarTypeInfo
)
(
n
:
Nat
)
:
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
mkUInt32Lit
(
n
:
Nat
)
:
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldBinUInt
(
fn
:
NumScalarTypeInfo
→
Bool
→
Nat
→
Nat
→
Nat
)
(
beforeErasure
:
Bool
)
(
a₁
a₂
:
Expr
)
:
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldUIntAdd
(
beforeErasure
:
Bool
)
(
a₁
a₂
:
Expr
)
:
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldUIntMul
(
beforeErasure
:
Bool
)
(
a₁
a₂
:
Expr
)
:
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldUIntDiv
(
beforeErasure
:
Bool
)
(
a₁
a₂
:
Expr
)
:
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldUIntMod
(
beforeErasure
:
Bool
)
(
a₁
a₂
:
Expr
)
:
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldUIntSub
(
beforeErasure
:
Bool
)
(
a₁
a₂
:
Expr
)
:
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
preUIntBinFoldFns
:
List
(
Name
×
BinFoldFn
)
Equations
Instances For
source
def
Lean
.
Compiler
.
uintBinFoldFns
:
List
(
Name
×
BinFoldFn
)
Equations
Instances For
source
def
Lean
.
Compiler
.
foldNatBinOp
(
fn
:
Nat
→
Nat
→
Nat
)
(
a₁
a₂
:
Expr
)
:
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldNatAdd
:
Bool
→
(
a₁
a₂
:
Expr
) →
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldNatMul
:
Bool
→
(
a₁
a₂
:
Expr
) →
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldNatDiv
:
Bool
→
(
a₁
a₂
:
Expr
) →
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldNatMod
:
Bool
→
(
a₁
a₂
:
Expr
) →
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
natPowThreshold
:
Nat
Equations
Instances For
source
def
Lean
.
Compiler
.
foldNatPow
:
Bool
→
(
a₁
a₂
:
Expr
) →
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
mkNatEq
(
a
b
:
Expr
)
:
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
mkNatLt
(
a
b
:
Expr
)
:
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
mkNatLe
(
a
b
:
Expr
)
:
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
toDecidableExpr
(
beforeErasure
:
Bool
)
(
pred
:
Expr
)
(
r
:
Bool
)
:
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldNatBinPred
(
mkPred
:
Expr
→
Expr
→
Expr
)
(
fn
:
Nat
→
Nat
→
Bool
)
(
beforeErasure
:
Bool
)
(
a₁
a₂
:
Expr
)
:
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldNatDecEq
(
beforeErasure
:
Bool
)
(
a₁
a₂
:
Expr
)
:
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldNatDecLt
(
beforeErasure
:
Bool
)
(
a₁
a₂
:
Expr
)
:
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldNatDecLe
(
beforeErasure
:
Bool
)
(
a₁
a₂
:
Expr
)
:
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldNatBinBoolPred
(
fn
:
Nat
→
Nat
→
Bool
)
(
a₁
a₂
:
Expr
)
:
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldNatBeq
:
Bool
→
(
a₁
a₂
:
Expr
) →
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldNatBlt
:
Bool
→
(
a₁
a₂
:
Expr
) →
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldNatBle
:
Bool
→
(
a₁
a₂
:
Expr
) →
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
natFoldFns
:
List
(
Name
×
BinFoldFn
)
Equations
Instances For
source
def
Lean
.
Compiler
.
getBoolLit
:
Expr
→
Option
Bool
Equations
Instances For
source
def
Lean
.
Compiler
.
foldStrictAnd
:
Bool
→
(
a₁
a₂
:
Expr
) →
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldStrictOr
:
Bool
→
(
a₁
a₂
:
Expr
) →
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
boolFoldFns
:
List
(
Name
×
BinFoldFn
)
Equations
Instances For
source
def
Lean
.
Compiler
.
binFoldFns
:
List
(
Name
×
BinFoldFn
)
Equations
Instances For
source
def
Lean
.
Compiler
.
foldNatSucc
:
Bool
→
(
a
:
Expr
) →
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldCharOfNat
(
beforeErasure
:
Bool
)
(
a
:
Expr
)
:
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
foldToNat
(
size
:
Nat
)
:
Bool
→
(
a
:
Expr
) →
Option
Expr
Equations
Instances For
source
def
Lean
.
Compiler
.
uintFoldToNatFns
:
List
(
Name
×
UnFoldFn
)
Equations
Instances For
source
def
Lean
.
Compiler
.
unFoldFns
:
List
(
Name
×
UnFoldFn
)
Equations
Instances For
source
def
Lean
.
Compiler
.
findBinFoldFn
(
fn
:
Name
)
:
Option
BinFoldFn
Equations
Instances For
source
def
Lean
.
Compiler
.
findUnFoldFn
(
fn
:
Name
)
:
Option
UnFoldFn
Equations
Instances For
source
@[export lean_fold_bin_op]
def
Lean
.
Compiler
.
foldBinOp
(
beforeErasure
:
Bool
)
(
f
a
b
:
Expr
)
:
Option
Expr
Equations
Instances For
source
@[export lean_fold_un_op]
def
Lean
.
Compiler
.
foldUnOp
(
beforeErasure
:
Bool
)
(
f
a
:
Expr
)
:
Option
Expr
Equations
Instances For