佐藤陽花さん (@Distr_to_Yonder) がまとめて下さった Min.t 版もあります。
方向性1: 変化規則を単純な写像の合成に落とし込む

任意の1字以上の文字列 s に対して、語尾 -o をつけた変化形 f(s) があるとする。 このとき、 写像 f: /.+/ → 𝕊 f(s) = s + "o" (s ∈ /.+/) のように表せる(𝕊 は文字列の全体集合、正規表現はそれにちょうど一致する文字列全体の集合を表すものとする) さて、f(s) から s を得るには↓
2022-05-29 20:10:55
↓f の逆写像 f⁻¹ を考えればいいが、この場合、値域と終域が異なるので逆写像にできない。なので、 f: /.+/ → /.+o/ として定義しなおす。これで逆写像がつくれる。 f⁻¹(s) = s[:len(s)-1] みたいな感じ。(もっと記法は簡素化したい
2022-05-29 20:10:56
んで問題になるのは、 ・f(s) = s + "o" (s ∈ 𝕊) の値域 ・f(s) = s + "o" の逆関数が f⁻¹(s) = s[:len(s)-1] であること をどうやって機械的に割り出すのかってことかな
2022-05-29 20:15:27
当たり前だけど f(s) の値域を使って f を定義し直さないと、f⁻¹(s) = s[:len(s)-1] が f の逆写像になってないので、値域を導き出すところが先決。
2022-05-29 20:20:13
(ちなみに語形変化で単射じゃない例って言ったら、日本語の動詞 -nu, -mu, -bu に対して、「た」が接続した形 -nda とかですね:「富む」も「飛ぶ」も「とんだ」になる)
2022-05-29 20:24:10
まあ /.+/ の要素(元)に -o をつけた文字列全体の集合が /.+o/ になるのは、自明っちゃ自明なんだけども…
2022-05-29 20:26:46
でも -us を -e にする関数を考えたときに、 g(s) = s[:len(s)-2] + "e" (s ∈ /.+us/) とかになってくると、その値域が /.+e/ であるのを自明で片付けるのは宜しくないよな。というかそこから発展がない
2022-05-29 20:29:47
1字1字操作するというのはどうだろう。 g(s) = s[:len(s)-2] + "e" (s ∈ /.+us/) を、 g₁(s) = s[:len(s)-1] g₂(s) = s[:len(s)-1] g₃(s) = s = "e" g = g₃ ∘ g₂ ∘ g₁ という具合に。 これなら語形変化の操作を、「1字削除」と「1字添加」という最小単位に分解できているのでは
2022-05-29 20:37:25
さてこれで、 g₁: /.+us/ → /.+u/ g₂: /.+u/ → /.+/ g₃: /.+/ → /.+e/ と考えることにより、 g: /.+us/ → /.+e/ と決定づけることができる
2022-05-29 20:41:09車輪の再発明
「文字列全体集合は可算集合だ」などと盛大に再発明しているが、とっ散らかるので略
文字列の集合を一意に表すには…?
〜正規表現をいじくる

その前に、正規表現の同値性を確かめる方法を考える必要がありそう /.*./ と /.*.*./ と /.+.?/ とか、/(a?b?){3}/ と /a?(b?a?){2}b?/ とか。けっこう難しい
2022-08-10 17:13:43
文字列集合の全体集合は、可算無限集合の冪集合だから、実数全体集合と同濃度になるか… 番号は振れないな
2022-08-10 17:17:41
有限回の繰り返し・選択肢は全て展開し「|」だけで分岐しよう /(li){2}/ → /lili/ /.?/ → /|./ → /|a|i|u|e|o|k|s|t|n|p|m|j|l|w/(文字全体集合がトキポナ仕様の場合) /[sp]?ona/ → /(s|p)?ona/ → /(|s|p)ona/ → /ona|sona|pona/ といったように。有限集合だったらこれで要素の列挙になる
2022-08-10 17:36:38
2つめは、「.」の展開を先にやって /.?/ → /(a|i|u|e|o|k|s|t|n|p|m|j|l|w)?/ → /|a|i|u|e|o|k|s|t|n|p|m|j|l|w/ としたほうが良いな。 内側から先に計算する感じで
2022-08-10 17:39:04
無限集合の場合はもっと考えないといけない。 無限集合が生じるのは「?」や「+」や「{\𝓃,}」(\𝓃 は非負整数) が使われるとき。つまり上限のない繰り返し
2022-08-10 17:42:22
というか、こうは言うものの本当に無秩序な集合({a, kon, soweli, kijetesantakalu, …}(何の規則性もなく無限に続く) のように)は人間の使う言語ではありえないな(記憶のしようがないから)。文法としての記述も不能 加算集合で考えれば十分なのでは? twitter.com/xirdim/status/…
2022-08-10 17:53:34