Equations
- instFintypePointer = Fintype.ofEquiv (Bool ⊕ Fin m✝) (Pointer.proxyTypeEquiv m✝)
Equations
Equations
- instReprPointer = { reprPrec := reprPointer✝ }
Equations
- instHashablePointer = { hash := hashPointer✝ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- (Pointer.terminal a).instDecidableLe (Pointer.terminal a_1) = match a.instDecidableLe a_1 with | isTrue ht => isTrue ⋯ | isFalse hf => isFalse ⋯
- (Pointer.terminal a).instDecidableLe (Pointer.node a_1) = isTrue ⋯
- (Pointer.node a).instDecidableLe (Pointer.terminal a_1) = isFalse ⋯
- (Pointer.node a).instDecidableLe (Pointer.node a_1) = match a.decLe a_1 with | isTrue ht => isTrue ⋯ | isFalse hf => isFalse ⋯
Equations
Equations
- instReprNode = { reprPrec := reprNode✝ }
Equations
Terminals have no outgoing edges.
Equations
- Pointer.toVar M (Pointer.terminal a) = Fin.last n
- Pointer.toVar M (Pointer.node a) = ↑↑M[a].var
Instances For
Equations
- Pointer.MayPrecede M p q = (Pointer.toVar M p < Pointer.toVar M q)
Instances For
Terminals must not precede other pointers.
Non-terminals may precede terminals.
Equations
Instances For
B.RelevantPointer
is the subtype of pointers reachable from B.root
.
Equations
- B.RelevantPointer = { q : Pointer m // Pointer.Reachable B.heap B.root q }
Instances For
Equations
- Bdd.instDecidableEqRelevantPointer x✝¹ x✝ = decidable_of_iff (↑x✝¹ = ↑x✝) ⋯
Equations
- B.toRelevantPointer = ⟨B.root, ⋯⟩
Instances For
The Edge
relation lifted to RelevantPointer
s.
Equations
- B.RelevantEdge p q = Edge B.heap ↑p ↑q
Instances For
The MayPrecede
relation lifted to RelevantPointer
s.
Equations
- B.RelevantMayPrecede p q = Pointer.MayPrecede B.heap ↑p ↑q
Instances For
A BDD is Ordered
if all edges relevant from the root respect the variable ordering.
Equations
Instances For
The OEdge
relation between Ordered BDDs is well-founded.
The OEdge
relation between Ordered BDDs is converse well-founded.
Equations
- O.toTree = match h : (↑O).root with | Pointer.terminal b => DecisionTree.leaf b | Pointer.node j => DecisionTree.branch (↑O).heap[j].var (O.low h).toTree (O.high h).toTree
Instances For
Equations
Instances For
Equations
Instances For
Similarity of Ordered
BDDs is decidable.
Equations
Equations
Equations
- One or more equations did not get rendered due to their size.
Equations
- B.NoRedundancy = ∀ (p : B.RelevantPointer), ¬Pointer.Redundant B.heap ↑p
Instances For
A BDD is Reduced
if its graph does not contain redundant nodes or distinct similar subgraphs.
Equations
- O.Reduced = ((↑O).NoRedundancy ∧ Subrelation O.SimilarRP (InvImage Eq Subtype.val))
Instances For
Equations
- RelevantPointer.var p = ↑(Pointer.toVar B.heap ↑p)
Instances For
Equations
Instances For
Equations
- RelevantEdge.instWellFoundedRelation O = { rel := flip (↑O).RelevantEdge, wf := ⋯ }
Equations
- O.instDecidableReflTransGen p q = ⋯.mpr (decidable_of_iff (q = ↑p ∨ Relation.TransGen (Edge (↑O).heap) (↑p) q) ⋯)
Equations
Equations
- O.instFintypeRelevantPointer = ⋯.mpr (Subtype.fintype (Pointer.Reachable (↑O).heap (↑O).root))
Equations
- O.instFintypeEitherRelevantPointer U h = ⋯.mpr (Subtype.fintype fun (q : Pointer m) => Pointer.Reachable (↑O).heap (↑O).root q ∨ Pointer.Reachable (↑O).heap (↑U).root q)
Reduced
is decidable.
Equations
The output of equal constant functions with inhabited domain is equal.
Equations
- O.isTerminal = ∃ (b : Bool), (↑O).root = Pointer.terminal b
Instances For
The graph induced by a terminal BDD consists of a sole terminal pointer.
Terminal BDDs are reduced.
Spell out OBdd.evaluate
for non-terminals.
Spell out OBdd.evaluate
for terminals.
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
- O.Reduced' = ((↑O).NoRedundancy ∧ Subrelation O.RelevantIsomorphism (InvImage Eq Subtype.val))
Instances For
An acyclicity lemma: an edge from O
to U
implies that O
is not reachable from U
.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.