Two-way complementation: transport #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Combinatorics/TwoWayAutomata/Transport.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical arguments are retained.
theorem
Complexity.FiniteAutomaton.Complementation.Internal.Diagram.classRectangle_subset
{m : ℕ}
(e : Diagram m)
(he : e.comp e = e)
(C : Bool × Set (Fin m))
:
e.classRectangle C ⊆ e.portRelation
theorem
Complexity.FiniteAutomaton.Complementation.Internal.Diagram.classInfluence_cross
{m : ℕ}
(e d u v : Diagram m)
(he : e.comp e = e)
(positive : Bool)
{C : Bool × Set (Fin m)}
(hC : C ∈ e.classes)
{a b c f : Fin m}
(hab : (a, b) ∈ e.classInfluence d u v positive C)
(hcf : (c, f) ∈ e.classInfluence d u v positive C)
:
theorem
Complexity.FiniteAutomaton.Complementation.Internal.Diagram.missing_context_subset_marked
{m : ℕ}
(e d u v z : Diagram m)
(he : e.comp e = e)
(hd : d.comp d = d)
(hcontext : (u.comp e).comp v = d)
(hz : z ∈ e.corner)
(J : Set (Bool × Set (Fin m)))
(hJz : e.missing z ⊆ J)
:
d.missing ((u.comp z).comp v) ⊆ e.transportMarked d u v J