@[implicit_reducible]
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Reduce.KeyLE a b = (Reduce.leKeyPair a b = true)
Instances For
theorem
Reduce.keyLE_sorted_mergeSort
{m : ℕ}
(l : List ((RawBdd.RawPointer × RawBdd.RawPointer) × Fin m))
:
List.Pairwise (fun (a b : (RawBdd.RawPointer × RawBdd.RawPointer) × Fin m) => KeyLE a.1 b.1)
(l.mergeSort fun (a b : (RawBdd.RawPointer × RawBdd.RawPointer) × Fin m) => leKeyPair a.1 b.1)
- size : ℕ
- heap : Vector (RawBdd.RawNode n) self.size
- ids : Vector (Option RawBdd.RawPointer) m
Instances For
Equations
- Reduce.provedStateInitial n m = { state := { size := 0, heap := Vector.emptyWithCapacity 0, ids := Vector.replicate m none }, hh := ⋯ }
Instances For
def
Reduce.get_id
{n m : ℕ}
(ps : ProvedState n m)
(p : Pointer m)
(h : ∀ (j : Fin m), p = Pointer.node j → ps.state.ids[j].isSome = true)
:
Equations
- Reduce.get_id ps (Pointer.terminal b) h_2 = Sum.inl b
- Reduce.get_id ps (Pointer.node j) h_2 = ps.state.ids[j].get ⋯
Instances For
def
Reduce.set_id
{n m : ℕ}
(ps : ProvedState n m)
(j : Fin m)
(p : RawBdd.RawPointer)
:
ProvedState n m
Record that input node j maps to output pointer p.
Equations
Instances For
def
Reduce.push_node
{n m : ℕ}
(ps : ProvedState n m)
(N : RawBdd.RawNode n)
(hN : RawBdd.RawNode.Bounded ps.state.size N)
:
Equations
Instances For
theorem
Reduce.structural_canonical_reduced
{n s : ℕ}
{v : Vector (RawBdd.RawNode n) s}
{hh : ∀ (k : Fin s), RawBdd.RawNode.Bounded (↑k) v[k]}
(hsc : ∀ (k1 k2 : Fin s), v[k1] = v[k2] → k1 = k2)
{root : Pointer s}
(hord : { heap := RawBdd.cook_heap v hh, root := root }.Ordered)
(hnored : { heap := RawBdd.cook_heap v hh, root := root }.NoRedundancy)
:
OBdd.Reduced ⟨{ heap := RawBdd.cook_heap v hh, root := root }, ⋯⟩
In a structurally canonical heap (no two positions have the same raw node), any ordered BDD is reduced.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When ids[j] = some (.inr k), the output node's var ≥ the input node's var.
Equations
Instances For
theorem
Reduce.varInvariant_initial
{n m : ℕ}
{O : OBdd n m}
:
VarInvariant O (provedStateInitial n m)
def
Reduce.EntryCorrect
{n m : ℕ}
(O : OBdd n m)
(ps : ProvedState n m)
(i : ℕ)
(entry : (RawBdd.RawPointer × RawBdd.RawPointer) × Fin m)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[reducible, inline]
abbrev
Reduce.NodePushedCorrectly
{n m : ℕ}
(O : OBdd n m)
(ps : ProvedState n m)
(entry : (RawBdd.RawPointer × RawBdd.RawPointer) × Fin m)
(hbound : RawBdd.RawPointer.Bounded ps.state.size entry.1.1 ∧ RawBdd.RawPointer.Bounded ps.state.size entry.1.2)
:
The BDD obtained by pushing a fresh node for entry is ordered, reduced, and
evaluates like the original sub-BDD at entry.2.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[reducible, inline]
abbrev
Reduce.CurptrSemantic
{n m : ℕ}
(O : OBdd n m)
(ps : ProvedState n m)
(curptr : RawBdd.RawPointer)
(entry : (RawBdd.RawPointer × RawBdd.RawPointer) × Fin m)
:
The current pointer curptr correctly represents the sub-BDD at entry.2.
Equations
- One or more equations did not get rendered due to their size.