Documentation
Lean
.
Elab
.
Tactic
.
Do
.
LetElim
Search
return to top
source
Imports
Lean.Meta
Imported by
Lean
.
Elab
.
Tactic
.
Do
.
Uses
Lean
.
Elab
.
Tactic
.
Do
.
instBEqUses
Lean
.
Elab
.
Tactic
.
Do
.
instOrdUses
Lean
.
Elab
.
Tactic
.
Do
.
instInhabitedUses
Lean
.
Elab
.
Tactic
.
Do
.
Uses
.
add
Lean
.
Elab
.
Tactic
.
Do
.
Uses
.
toNat
Lean
.
Elab
.
Tactic
.
Do
.
Uses
.
fromNat
Lean
.
Elab
.
Tactic
.
Do
.
instAddUses
Lean
.
Elab
.
Tactic
.
Do
.
FVarUses
Lean
.
Elab
.
Tactic
.
Do
.
FVarUses
.
add
Lean
.
Elab
.
Tactic
.
Do
.
instAddFVarUses
Lean
.
Elab
.
Tactic
.
Do
.
BVarUses
Lean
.
Elab
.
Tactic
.
Do
.
BVarUses
.
single
Lean
.
Elab
.
Tactic
.
Do
.
BVarUses
.
pop
Lean
.
Elab
.
Tactic
.
Do
.
BVarUses
.
add
Lean
.
Elab
.
Tactic
.
Do
.
instAddBVarUses
Lean
.
Elab
.
Tactic
.
Do
.
over1Of2
Lean
.
Elab
.
Tactic
.
Do
.
addMData
Lean
.
Elab
.
Tactic
.
Do
.
countUsesDecl
Lean
.
Elab
.
Tactic
.
Do
.
countUses
Lean
.
Elab
.
Tactic
.
Do
.
countUsesLCtx
Lean
.
Elab
.
Tactic
.
Do
.
doNotDup
Lean
.
Elab
.
Tactic
.
Do
.
elimLetsCore
Lean
.
Elab
.
Tactic
.
Do
.
elimLets
source
inductive
Lean
.
Elab
.
Tactic
.
Do
.
Uses
:
Type
zero :
Uses
one :
Uses
many :
Uses
Instances For
source
instance
Lean
.
Elab
.
Tactic
.
Do
.
instBEqUses
:
BEq
Uses
Equations
source
instance
Lean
.
Elab
.
Tactic
.
Do
.
instOrdUses
:
Ord
Uses
Equations
source
instance
Lean
.
Elab
.
Tactic
.
Do
.
instInhabitedUses
:
Inhabited
Uses
Equations
source
def
Lean
.
Elab
.
Tactic
.
Do
.
Uses
.
add
:
Uses
→
Uses
→
Uses
Equations
Instances For
source
def
Lean
.
Elab
.
Tactic
.
Do
.
Uses
.
toNat
:
Uses
→
Nat
Equations
Instances For
source
def
Lean
.
Elab
.
Tactic
.
Do
.
Uses
.
fromNat
:
Nat
→
Uses
Equations
Instances For
source
instance
Lean
.
Elab
.
Tactic
.
Do
.
instAddUses
:
Add
Uses
Equations
source
@[reducible, inline]
abbrev
Lean
.
Elab
.
Tactic
.
Do
.
FVarUses
:
Type
Equations
Instances For
source
def
Lean
.
Elab
.
Tactic
.
Do
.
FVarUses
.
add
(
a
b
:
FVarUses
)
:
FVarUses
Equations
Instances For
source
instance
Lean
.
Elab
.
Tactic
.
Do
.
instAddFVarUses
:
Add
FVarUses
Equations
source
inductive
Lean
.
Elab
.
Tactic
.
Do
.
BVarUses
(
n
:
Nat
)
:
Type
none
{
n
:
Nat
}
:
BVarUses
n
some
{
n
:
Nat
}
(
uses
:
Vector
Uses
n
)
:
BVarUses
n
Instances For
source
def
Lean
.
Elab
.
Tactic
.
Do
.
BVarUses
.
single
{
numBVars
:
Nat
}
(
n
:
Nat
)
:
autoParam
(
n
<
numBVars
)
_auto✝
→
BVarUses
numBVars
Equations
Instances For
source
def
Lean
.
Elab
.
Tactic
.
Do
.
BVarUses
.
pop
{
numBVars
:
Nat
}
:
BVarUses
(
numBVars
+
1
)
→
Uses
×
BVarUses
numBVars
Equations
Instances For
source
def
Lean
.
Elab
.
Tactic
.
Do
.
BVarUses
.
add
{
numBVars
:
Nat
}
(
a
b
:
BVarUses
numBVars
)
:
BVarUses
numBVars
Equations
Instances For
source
instance
Lean
.
Elab
.
Tactic
.
Do
.
instAddBVarUses
{
numBVars
:
Nat
}
:
Add
(
BVarUses
numBVars
)
Equations
source
def
Lean
.
Elab
.
Tactic
.
Do
.
over1Of2
{
α₁
:
Type
u_1}
{
α₂
:
Type
u_2}
{
β
:
Type
u_3}
(
f
:
α₁
→
α₂
)
(
x
:
α₁
×
β
)
:
α₂
×
β
Equations
Instances For
source
def
Lean
.
Elab
.
Tactic
.
Do
.
addMData
(
d
:
MData
)
(
e
:
Expr
)
:
Expr
Equations
Instances For
source
partial def
Lean
.
Elab
.
Tactic
.
Do
.
countUsesDecl
(
fvarId
:
FVarId
)
(
ty
:
Expr
)
(
val?
:
Option
Expr
)
(
bodyUses
:
FVarUses
)
(
subst
:
Array
FVarId
:=
#[
]
)
:
MetaM
(
Expr
×
Option
Expr
×
FVarUses
)
source
partial def
Lean
.
Elab
.
Tactic
.
Do
.
countUses
(
e
:
Expr
)
(
subst
:
Array
FVarId
:=
#[
]
)
:
MetaM
(
Expr
×
FVarUses
)
source
def
Lean
.
Elab
.
Tactic
.
Do
.
countUsesLCtx
(
ctx
:
LocalContext
)
(
targetUses
:
FVarUses
)
:
MetaM
LocalContext
Equations
Instances For
source
def
Lean
.
Elab
.
Tactic
.
Do
.
doNotDup
(
u
:
Uses
)
(
rhs
:
Expr
)
(
elimTrivial
:
Bool
)
:
Bool
Equations
Instances For
source
def
Lean
.
Elab
.
Tactic
.
Do
.
elimLetsCore
(
e
:
Expr
)
(
elimTrivial
:
Bool
:=
true
)
:
MetaM
Expr
Equations
Instances For
source
def
Lean
.
Elab
.
Tactic
.
Do
.
elimLets
(
mvar
:
MVarId
)
(
elimTrivial
:
Bool
:=
true
)
:
MetaM
MVarId
Equations
Instances For