Documentation

Bdd.Reduce.State

@[implicit_reducible]
Equations
  • One or more equations did not get rendered due to their size.
Equations
Instances For
    structure Reduce.State (n m : ) :
    Instances For
      structure Reduce.ProvedState (n m : ) :
      Instances For
        Equations
        Instances For
          def Reduce.get_id {n m : } (ps : ProvedState n m) (p : Pointer m) (h : ∀ (j : Fin m), p = Pointer.node jps.state.ids[j].isSome = true) :
          Equations
          Instances For
            def Reduce.set_id {n m : } (ps : ProvedState n m) (j : Fin m) (p : RawBdd.RawPointer) :

            Record that input node j maps to output pointer p.

            Equations
            Instances For
              theorem Reduce.set_id_self {n m : } (ps : ProvedState n m) (j : Fin m) (p : RawBdd.RawPointer) :
              (set_id ps j p).state.ids[j] = some p
              theorem Reduce.set_id_ne {n m : } (ps : ProvedState n m) (j k : Fin m) (p : RawBdd.RawPointer) (h : k j) :
              (set_id ps j p).state.ids[k] = ps.state.ids[k]
              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.

                def Reduce.Invariant {n m : } (O : OBdd n m) (ps : ProvedState n m) (i : ) :
                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  theorem Reduce.inv_initial {n m : } {O : OBdd n m} {i : } (hi : ∀ (j : Fin m), (↑O).heap[j].var i) :
                  theorem Reduce.Invariant.ids_isSome {n m : } {O : OBdd n m} {ps : ProvedState n m} {i : } (inv : Invariant O ps i) {j : Fin m} (hvar : i < (↑O).heap[j].var) (hreach : Pointer.Reachable (↑O).heap (↑O).root (Pointer.node j)) :
                  def Reduce.VarInvariant {n m : } (O : OBdd n m) (ps : ProvedState n m) :

                  When ids[j] = some (.inr k), the output node's var ≥ the input node's var.

                  Equations
                  Instances For
                    def Reduce.AllAbove {n m : } (ps : ProvedState n m) (i : ) :
                    Equations
                    Instances For
                      def Reduce.HeapInjective {m n : } (ps : ProvedState n m) :

                      The heap is injective: no two positions have the same raw node.

                      Equations
                      Instances For
                        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]

                          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.
                            Instances For