Draft — mutable and not usable as a dependency; its citation marks the draft state.

Lax194892.PrenexNormalForm

Every for-transducer has a prenex form

concepts/Lax194892/PrenexNormalForm.lean · lax-194892

proven

Loading review…

Sign in with ORCID

Community review

Flags

Each flag is tied to a public ORCID identity and explains why this concept may be incorrect.

No flags have been submitted.

    Community review

    Flag this concept

    State precisely what appears incorrect. This explanation will be public under your ORCID name.

    No source line selected.

    Concept map

    Proven claimDefinitionThis conceptRelated conceptA → B: B builds on A

    Evidence

    Each proof establishes this claim relative to its assumptions.

    In the paper

    Theorem

    Every for-transducer is equivalent to one in prenex form (Lemma D.1.3 of Transducers): a block of nested loops over positions, in increasing or decreasing order, whose body is loop-free and outputs at most one letter per iteration, followed by a loop-free epilogue. Loops are pulled outwards one at a time, Boolean variables recording which iterations have already been executed.

    Lean source view on GitHub

    1import Lax194892.ForTransducers
    2
    3/-!
    4---
    5title: Every for-transducer has a prenex form
    6type: theorem
    7---
    8Every for-transducer is equivalent to one in prenex form (Lemma D.1.3 of
    9*Transducers*): a block of nested loops over positions, in increasing or
    10decreasing order, whose body is loop-free and outputs at most one letter per
    11iteration, followed by a loop-free epilogue. Loops are pulled outwards one at a
    12time, Boolean variables recording which iterations have already been executed.
    13
    14# Formalization notes
    15
    16Stated over any alphabets, for every program `P`; `PrenexForm` is that of
    17`ForTransducers`.
    18-/
    19
    20namespace Lax194892.PrenexNormalForm
    21
    22open Lax194892.ForTransducers
    23
    24/-- Every for-transducer program is equivalent to one in prenex form. -/
    25axiom exists_prenexForm {A B : Type} (P : ForProg A B) :
    26 ∃ P' : ForProg A B, P'.PrenexForm ∧ ∀ w, P'.eval w = P.eval w
    27
    28end Lax194892.PrenexNormalForm
    29
    Show Proof

    Formalization notes

    Stated over any alphabets, for every program PP; PrenexFormPrenexForm is that of ForTransducersForTransducers.

    Used by

    none

    From Mathlib

    none

    Community review

    Discussion

    Ask a question or add context. Endorsements and structured flags are kept in the review panel above; your ORCID profile must share a public name.

    0 comments

    Loading discussion…