Lax194892.PolyregularFunctions
Polyregular functions
concepts/Lax194892/PolyregularFunctions.lean · lax-194892
No public endorsements yet.
Loading review…
Sign in with ORCIDConcept map
In the paper
- page 151 of the paper of lax-157538, Transducers
Definition
A string-to-string function is polyregular (Definition D.0.1 of Transducers) if it can be obtained as a finite composition of functions each of which is either regular or a marked squaring function:
The polyregular functions are the top step of the book's transducer ladder; Part D shows that they are the functions of for-transducers and of pebble transducers.
Lean source view on GitHub
| 1 | import Lax765601.CompositionClosure |
| 2 | import Lax916827.RegularFunctions |
| 3 | import Lax194892.MarkedSquaring |
| 4 | |
| 5 | /-! |
| 6 | --- |
| 7 | title: Polyregular functions |
| 8 | type: definition |
| 9 | --- |
| 10 | A string-to-string function is *polyregular* (Definition D.0.1 of |
| 11 | *Transducers*) if it can be obtained as a finite composition of functions each |
| 12 | of which is either regular or a marked squaring function: |
| 13 | |
| 14 | The polyregular functions are the top step of the book's transducer ladder; |
| 15 | Part D shows that they are the functions of for-transducers and of pebble |
| 16 | transducers. |
| 17 | |
| 18 | # Formalization notes |
| 19 | |
| 20 | As for the regular functions, marked squaring appears in the family up to a |
| 21 | renaming of the alphabets by bijections `A ≃ A₀` and `B ≃ A₀ ⊕ A₀`; |
| 22 | `IsPolyregular` is the composition closure of `Lax765601.CompositionClosure`. |
| 23 | -/ |
| 24 | |
| 25 | namespace Lax194892.PolyregularFunctions |
| 26 | |
| 27 | open Lax765601.CompositionClosure Lax916827.RegularFunctions Lax194892.MarkedSquaring |
| 28 | |
| 29 | /-- The family of prime polyregular functions: regular functions and marked |
| 30 | squaring, up to a renaming of the alphabets. -/ |
| 31 | def PolyregularFam : Family := fun A B f => |
| 32 | IsRegularFun f ∨ |
| 33 | (∃ (A₀ : Type) (e : A ≃ A₀) (e' : B ≃ A₀ ⊕ A₀), |
| 34 | ∀ w, f w = (markedSquare A₀ (w.map e)).map e'.symm) |
| 35 | |
| 36 | /-- A function is polyregular if it is a finite composition of regular functions |
| 37 | and marked squaring. -/ |
| 38 | def IsPolyregular {A B : Type} (f : List A → List B) : Prop := CompClosure PolyregularFam A B f |
| 39 | |
| 40 | end Lax194892.PolyregularFunctions |
| 41 |
Formalization notes
As for the regular functions, marked squaring appears in the family up to a renaming of the alphabets by bijections and ; is the composition closure of .
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