Documentation

Complexitylib.Models.FiniteAutomaton.OneWayLiveness.Internal.Cells

One-way-liveness proof: Cells #

Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a. Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Combinatorics/Automata/Cells.lean

Module and namespace names, imports, and formatting are adapted to complexitylib. The machine definitions are shared through Models.FiniteAutomaton.Defs.

theorem Complexity.FiniteAutomaton.Pairing.transport_compatible {P : Type u_1} {Q : Type u_2} {C : Type u_3} (a : Pairing P) (e : P ≃ Q) (c : Q → C) :
noncomputable def Complexity.FiniteAutomaton.Pairing.close {P I : Type} [Fintype P] [Fintype I] (lanes : Pairing (P ⊕ I)) (joins : Pairing I) :

Close all internal tips with a matching of local joins.

Equations
Instances For
    theorem Complexity.FiniteAutomaton.Pairing.close_compatible {P I : Type} [Fintype P] [Fintype I] (lanes : Pairing (P ⊕ I)) (joins : Pairing I) (c : P → Bool) :
    (lanes.close joins).Compatible c ↔ ∃ (f : I → Bool), lanes.Compatible (Sum.elim c f) ∧ joins.Compatible f
    theorem Complexity.FiniteAutomaton.Pairing.ofInvolution_compatible {P : Type u_1} {C : Type u_2} (f : P → P) (hf : Function.Involutive f) (hn : ∀ (p : P), f p ≠ p) (c : P → C) :
    (ofInvolution f hf hn).Compatible c ↔ ∀ (p : P), c p = c (f p)
    @[reducible, inline]

    true directs the prospective successor to the right.

    Equations
    Instances For
      @[reducible, inline]

      A directed transition slot together with one of its two lanes.

      Equations
      Instances For
        @[reducible, inline]

        A transition slot labelled by the side of the cell.

        Equations
        Instances For
          @[reducible, inline]

          Boundary incidences and the two ends of stationary-transition edges.

          Equations
          Instances For
            @[reducible, inline]

            An incidence together with its lane.

            Equations
            Instances For
              @[reducible, inline]

              Machine states and unattached incidences within a cell.

              Equations
              Instances For

                A lane's absolute label changes its incoming/outgoing role between opposite sides of a cell.

                Equations
                Instances For

                  Join a forward tip to its successor and a backward tip to its predecessor.

                  Equations
                  Instances For
                    theorem Complexity.FiniteAutomaton.CellNetwork.lanes_compatible (Q : Type) (c : Boundary Q × Bool → Bool) (f : Tip Q → Bool) :
                    (lanes Q).Compatible (Sum.elim c f) ↔ (∀ (b : Boundary Q) (l : Bool), c (b, l) = f (Sum.inl b, tipRole b.1 l)) ∧ ∀ (pq : Q × Q) (r t : Bool), f (Sum.inr (pq, r), t) = f (Sum.inr (pq, !r), !t)

                    The two sides use exactly the same slot/lane labels.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For

                      Close the internal tips to obtain the cell boundary pairing.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        theorem Complexity.FiniteAutomaton.CellNetwork.diagram_compatible (Q : Type) [Fintype Q] (r : Equiv.Perm (Incidence Q)) (left right : Port Q → Bool) :
                        (diagram Q r).Compatible (Sum.elim left right) ↔ ∃ (f : Tip Q → Bool), (∀ (s : Bool) (slot : Slot Q) (l : Bool), (if s = true then right else left) (slot, l) = f (Sum.inl (s, slot), tipRole s l)) ∧ (∀ (pq : Q × Q) (role t : Bool), f (Sum.inr (pq, role), t) = f (Sum.inr (pq, !role), !t)) ∧ ∀ (i : Incidence Q), f (i, false) = f (r i, true)