Documentation
Bdd
.
Lift
Search
return to top
source
Imports
Init
Bdd.Basic
Imported by
Lift
.
olift
Lift
.
olift_trivial_eq
Lift
.
olift_preserves_root
Lift
.
olift_low
Lift
.
olift_high
Lift
.
olift_evaluate
Lift
.
olift_reduced
Lift
.
olift_olift
source
def
Lift
.
olift
{
n
n'
m
:
ℕ
}
(
h
:
n
≤
n'
)
(
O
:
OBdd
n
m
)
:
OBdd
n'
m
Equations
Lift.olift
h
O
=
{
bdd
:=
Lift.lift✝
h
O
.
bdd
,
ordered
:=
⋯
}
Instances For
source
@[simp]
theorem
Lift
.
olift_trivial_eq
{
n
n'
m
:
ℕ
}
{
h
:
n
=
n'
}
{
O
:
OBdd
n
m
}
:
olift
⋯
O
=
h
▸
O
source
@[simp]
theorem
Lift
.
olift_preserves_root
{
n
n'
m
:
ℕ
}
{
h
:
n
≤
n'
}
{
O
:
OBdd
n
m
}
:
(
olift
h
O
)
.
bdd
.
root
=
O
.
bdd
.
root
source
theorem
Lift
.
olift_low
{
n
n'
m
:
ℕ
}
{
h
:
n
≤
n'
}
{
O
:
OBdd
n
m
}
{
j
:
Fin
m
}
(
hr
:
O
.
bdd
.
root
=
Pointer.node
j
)
:
(
olift
h
O
)
.
low
⋯
=
olift
h
(
O
.
low
hr
)
source
theorem
Lift
.
olift_high
{
n
n'
m
:
ℕ
}
{
h
:
n
≤
n'
}
{
O
:
OBdd
n
m
}
{
j
:
Fin
m
}
(
hr
:
O
.
bdd
.
root
=
Pointer.node
j
)
:
(
olift
h
O
)
.
high
⋯
=
olift
h
(
O
.
high
hr
)
source
@[simp]
theorem
Lift
.
olift_evaluate
{
n
n'
m
:
ℕ
}
{
h
:
n
≤
n'
}
{
O
:
OBdd
n
m
}
{
I
:
Vector
Bool
n'
}
:
(
olift
h
O
)
.
evaluate
I
=
O
.
evaluate
(
Vector.cast
⋯
(
I
.
take
n
)
)
source
theorem
Lift
.
olift_reduced
{
n
n'
m
:
ℕ
}
{
h
:
n
≤
n'
}
{
O
:
OBdd
n
m
}
:
O
.
Reduced
→
(
olift
h
O
)
.
Reduced
source
@[simp]
theorem
Lift
.
olift_olift
{
n
n'
n''
m
:
ℕ
}
{
h1
:
n
≤
n'
}
{
h2
:
n'
≤
n''
}
{
O
:
OBdd
n
m
}
:
olift
h2
(
olift
h1
O
)
=
olift
⋯
O