One-way-liveness proof: Relations #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Combinatorics/Automata/Relations.lean
Module and namespace names, imports, and formatting are adapted to complexitylib.
The machine definitions are shared through Models.FiniteAutomaton.Defs.
Restrict a relation in the corner of a partial identity to its underlying subset.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Extend a relation on a subset by leaving all other pairs unrelated.
Equations
Instances For
View an extended relation as an element of the partial-identity corner.
Equations
- Complexity.FiniteAutomaton.BRel.extension F a = { val := Complexity.FiniteAutomaton.BRel.extend F a, left := ⋯, right := ⋯ }
Instances For
The corner of a partial identity is the relation monoid on its subset.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Restrict a relation corner with a split subidentity.
The graph relation of a permutation.
Equations
- Complexity.FiniteAutomaton.BRel.permGraph σ = { holds := fun (x y : H) => σ x = y }
Instances For
The invertible relation represented by a permutation.
Equations
- Complexity.FiniteAutomaton.BRel.permUnit σ = { val := Complexity.FiniteAutomaton.BRel.permGraph σ, inv := Complexity.FiniteAutomaton.BRel.permGraph (Equiv.symm σ), val_inv := ⋯, inv_val := ⋯ }
Instances For
Disjoint source/target points and a separate intermediate hub.
- left : I → H
The row vertices of the frame.
- right : J → H
The column vertices of the frame.
- hub : H
The distinguished vertex outside the rows and columns.
- left_injective : Function.Injective self.left
- right_injective : Function.Injective self.right
Instances For
Add the selected row-to-column edges to the identity outside the hub.