Changelog
Version 1.3 — 2025-08-14
Added
- decision procedures for SPL (strictly piecewise-local)
- join-semigroups and join-monoids
- syntacticJSemigroup and syntacticSemilattice to compute them
- a new Porter, LTK.Porters.SyntacticSemilattice to display them
- isJoinVariety and isMJoinVariety for arbitrary membership queries
- :isJVarietyS and :isJVarietyM in plebby
- :isJVarietyT is the natural extension to tiers of :isJVarietyS
- LTK.FSA.renameSymbolsByMonotonic is now exported
- classify synonyms to match plebby but retain compatibility:
- "1" is now also "Trivial" from :isTrivial
- "Fin" is now also "Finite" from :isFinite
- classify now accepts "Dot1" and "SPL"
Changed
- improved some documentation inside plebby
- fixed one of the examples
- LTK.Porters.Pleb was redesigned in terms of recursive schemes
- moved optimization level from language-toolkit.cabal to cabal.project
Removed
- The Ord instance for FSA was a dangerous lie, it is now gone.
Version 1.2.0.1 — 2024-04-27
Changed
- PLEB: fixed @@ ("Domination") operator
- reenabled -O2 compilation
Version 1.2 — 2024-04-16
Added
- commonPrefix and commonSuffix functions on automata
- isDot1 (dot depth at most one)
- syntacticSemigroup (interfacing with finite-semigroups)
- syntacticOMonoid, syntacticOSemigroup (ordered monoid or semigroup)
- isVarietyS (ordered varities from finite-semigroups)
- plebby:
- new, more detailed :help system
- strict order (
.∙.(x,y) asserts start of x precedes start of y)
- Ctrl+C interrupts handled, abort current computation
Changed
- algebraic tools split and expanded in a new package (finite-semigroups)
- plebby:
- inequalities supported in :isVarietyM/S/T for order
- better error messages
- bugfix: two-expression commands no longer break on "it"
- many classification tasks now use semigroups from finite-semigroups
- bugfix: trimUnreachables handles epsilon-edges and avoids recomputation
Version 1.1 — 2023-06-18
Added
- preliminary French translation of manual pages
- basic Emacs mode for syntax highlighting
- classification procedures
- isAcom (aperiodic and commutative)
- isLAcom (locally isAcom)
- isFO2BF (two-variable FO with betweenness of factors)
- isVariety (Plebby has one command each for *, +, and tier)
- isMTF, isMTDef, isMTRDef, isMTGD (simple multitier classes)
- Porters
- egg-box diagrams
- graphs of syntactic orders
- Pleb syntax
- empty variadics
- reversal (
⇄)
- upward closures (
↑, or loopify in the library)
- shuffle products (
⧢ or autShuffle in the library)
- symbol neutralization (
|syms|, or neutralize in the library)
- nonempty iteration (
+e equivalent to @(e,*e))
- Plebby commands
:cequal and :cimplies to account for the semantics
:eggbox (display the egg-box)
:synord (display syntactic order)
- Plebby configuration file
Changed
- bugfix: omega function works in properly regular semigroups
- performance enhancement: faster FO2(S) test
- performance enhancement: faster (co)finite test
- performance enhancement: faster SP test
Version 1.0.1 — 2022-03-28
Changed
- fixed a mistest in
classify, as well as a severe performance issue
Version 1.0 (initial hackage release) — 2022-03-15
Added
classify command
- LTK.Algebra module and new decision procedures
LTK.Decide.*
- B
- CB
- Definite, (T)(R)Def restrictions on suffixes or prefixes (on tiers)
- Finite
- FO2, FO2S, FO2B: definable in two-variable FO with <, (<,+1), (<,bet)
- GD: generalized definite, prefixes AND suffixes
- GLPT: generalization of LPT
- GLT: generalization of LT
- LPT: locally J-trivial, contains combinations of piecewise-local factors
- TLPT: tier-based LPT
- Trivial: accepts ALL strings, or NO strings
- associated
:isCLASS plebby commands
- LTK.DecideM: classify monoids, to avoid recomputation
- left- and right-quotients in
LTK.FSA and in PLEB
- union and intersection of symbol sets wherever they may appear in PLEB
- downward closure in PLEB
:Jmin plebby command for displaying a graph of J-classes
Changed
dotify now uses AT&T format instead of Jeff format
factorize now uses AT&T format instead of Jeff format
- improved AT&T import and export
Removed
- stress-specific symbols in
LTK.Factors
Version 0.3 — 2020-09-16
Added
- AT&T import and export
LTK.Porters.ATT
- prefix-tree import from corpus
LTK.Porters.Corpus
- string-extension learners
LTK.Learn.*
- more
plebby commands
- AT&T import and export
:readATT, :readATTO, :writeATT
- learners
:learnSL, :learnSP, :learnTSL
Changed
- extraction is now a submodule:
LTK.Extract.SL not LTK.ExtractSL, etc
Version 0.2 — 2019-09-01
Added
- more decision algorithms
LTK.Decide.*
- LT: locally testable, defined by sets of k-substrings
- LTT: locally threshold-testable, FO[+1]
- PT: piecewise-testable, defined by sets of k-subsequences
- SF: star-free, aperiodic, star-height zero
- SL: the decider formerly in
LTK.ExtractSL
- SP: the decider formerly in
LTK.ExtractSP
- TLT: tier-based LT
- TLTT: tier-based LTT
- TSL: tier-based strictly local
Changed
- factor extraction is now
LTK.Extract.*
Version 0.1 — 2019-08-23
- moved to a Cabal-based installation format
- removed several exploratory files
- add computations over tiers
Version 0.01a — 2018-12-20
- initial full public release