The denotation
of a BDD
is the Boolean function that it represents.
Equations
- B.denotation h = BDD.evaluate✝ (B.lift h)
Instances For
lift
does not affect denotation
.
denotation
absorbs Vector.cast
.
The denotation
of a BDD
is independent of indices greater or equal to its input size.
BDD
s are semantically equivalent when their denotation
s coincide.
Equations
- B.SemanticEquiv C = (B.denotation ⋯ = C.denotation ⋯)
Instances For
If two BDD
have the same denotation
with respect to some input size n
, then they have the same denotation
with respect to any other input size m
as well.
SemanticEquiv
is an equivalence relation on BDD
.
Use this instance to decide whether two BDD
s are equivalent.
Equations
- x✝¹.instDecidableSemanticEquiv x✝ = decidable_of_iff' (BDD.Similar✝ x✝¹ x✝) ⋯
Relabel the variables in a BDD
according to a relabeling function f
.
See also relabel_denotation
.
Equations
- B.relabel f h = BDD.relabel''✝ B (BDD.relabel_wrap✝ B.nvars n f) ⋯ ⋯
Instances For
Return an input vector that satisfies the denotation of a given BDD
, under the assumption that its denotation is satisfiable.
See also choice_denotation
.
Equations
- BDD.choice s = Choice.choice (BDD.obdd✝ B) ⋯
Instances For
Return a BDD
denoting the restriction of a given BDD
at an index i
to a Boolean b
.
See also restrict_denotation
.
Equations
- BDD.restrict b i B = if h : i < B.nvars then BDD.restrict'✝ B b ⟨i, h⟩ else B
Instances For
Equations
- B.instDecidableDependsOn i = ⋯ ▸ decidable_of_iff ((↑(BDD.obdd✝ B)).usesVar i) ⋯
Universal quantification over input at index i
.
See also bforall_denotation
.
Equations
- B.bforall i = (BDD.restrict false i B).and (BDD.restrict true i B)
Instances For
Universal quantification over a list of input indices l
.
Equations
- B.bforalls l = List.foldl BDD.bforall B l
Instances For
Existential quantification over input at index i
.
See also bexists_denotation
.
Equations
- B.bexists i = (BDD.restrict false i B).or (BDD.restrict true i B)
Instances For
Existential quantification over a list of input indices l
.
Equations
- B.bexistss l = List.foldl BDD.bexists B l