Rational hitting lists: feasibility #
Adapted from OpenAI's formalization at revision adc7f1241b42e322a6451854ab7e4b4c146bf78a.
Source: https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/lean/OAI/Computability/RationalHitting/Feasibility.lean
Imports, namespaces, module visibility, documentation, and formatting are adapted for complexitylib. The source theorem statements and mathematical arguments are retained.
theorem
Complexity.RationalHitting.StackLanguage.Feasible.recode
{A B : Type}
{ca : A → List Bool}
{cb : B → List Bool}
{f : A → B}
{A' B' : Type}
(hf : Feasible ca cb f)
(ca' : A' → List Bool)
(cb' : B' → List Bool)
(f' : A' → B')
(e : A' → A)
(hi : ∀ (a : A'), ca (e a) = ca' a)
(ho : ∀ (a : A'), cb (f (e a)) = cb' (f' a))
:
Feasible ca' cb' f'
@[instance_reducible]
Binary addition followed by output normalization.