Evaluate the given BDD on the given variable assignment, assuming that the assignment interprets all variables of the BDD.
The get_elem_tactic_extensible has been extended to simplify all hypothesis using the lemmas
marked with bdd_nvars, and hence the validity of the bounds can usually be inferred automatically.
A BDD B depends on a variable i if there are two variable assignemts I and I' such that
I and I' only differ on the variable i and B[I] ≠ B[I'].
Equations
- B.DependsOn i = ∃ (h : i < B.nvars), Nary.DependsOn (Evaluate.evaluate (BDD.obdd✝ B)) ⟨i, h⟩
Instances For
SemanticEquiv is an equivalence relation on BDD.
Use this instance to decide whether two BDDs 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 getElem_relabel.
Equations
- B.relabel f h = BDD.relabel'✝ B (BDD.relabel_wrap✝ B.nvars n f) ⋯ ⋯
Instances For
Return the BDD obtained by fixing variable i to value b in B.
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 = if hi : i < B.nvars then decidable_of_iff ((↑(BDD.obdd✝ B)).usesVar ⟨i, hi⟩) ⋯ else isFalse ⋯
Eliminate the variable i from the given BDD via universal quantification.
Equations
- B.bforall i = (BDD.restrict false i B).and (BDD.restrict true i B)
Instances For
Eliminate variables in l from the given BDD via universal quantification.
Equations
- B.bforalls l = List.foldl BDD.bforall B l
Instances For
Eliminate the variable i from the given BDD via existential quantification.
Equations
- B.bexists i = (BDD.restrict false i B).or (BDD.restrict true i B)
Instances For
Eliminate variables in l from the given BDD via existential quantification.
Equations
- B.bexistss l = List.foldl BDD.bexists B l