℘ make now just

if you wanna break free you better listen to me

DecJanFebMarAprMayJunJulAugSepOctNov/post/2024-11-03-diary//post/2024-11-04-diary//post/2024-11-05-diary//post/2024-11-06-diary//post/2024-11-07-diary//post/2024-11-08-diary//post/2024-11-09-diary//post/2024-11-10-diary//post/2024-11-11-diary//post/2024-11-12-diary//post/2024-11-13-diary//post/2024-11-14-diary//post/2024-11-15-diary//post/2024-11-16-diary//post/2024-11-17-diary//post/2024-11-18-diary//post/2024-11-19-diary//post/2024-11-20-diary//post/2024-11-21-diary//post/2024-11-22-diary//post/2024-11-23-diary//post/2024-11-24-diary//post/2024-11-25-diary//post/2024-11-26-diary//post/2024-11-27-diary//post/2024-11-28-diary//post/2024-11-29-diary//post/2024-11-30-diary//post/2024-12-01-diary//post/2024-12-02-diary//post/2024-12-03-diary//post/2024-12-04-diary//post/2024-12-05-diary//post/2024-12-06-diary//post/2024-12-07-diary//post/2024-12-08-diary//post/2024-12-09-diary//post/2024-12-10-diary//post/2024-12-11-diary//post/2024-12-12-diary//post/2024-12-13-diary//post/2024-12-14-diary//post/2024-12-15-diary//post/2024-12-16-diary//post/2024-12-17-diary//post/2024-12-18-diary//post/2024-12-19-diary//post/2024-12-20-diary//post/2024-12-21-diary//post/2024-12-22-diary//post/2024-12-23-diary//post/2024-12-24-diary//post/2024-12-25-diary//post/2024-12-26-diary//post/2024-12-27-diary//post/2024-12-28-diary//post/2024-12-29-diary//post/2024-12-30-diary//post/2024-12-31-diary//post/2025-01-01-diary//post/2025-01-02-diary//post/2025-01-03-diary//post/2025-01-04-diary//post/2025-01-05-diary//post/2025-01-06-diary//post/2025-01-07-diary//post/2025-01-08-diary//post/2025-01-09-diary//post/2025-01-10-diary//post/2025-01-11-diary//post/2025-01-12-diary//post/2025-01-13-diary//post/2025-01-14-diary//post/2025-01-15-diary//post/2025-01-16-diary//post/2025-01-17-diary//post/2025-01-18-diary//post/2025-01-19-diary//post/2025-01-20-diary//post/2025-01-21-diary//post/2025-01-22-diary//post/2025-01-23-diary//post/2025-01-24-diary//post/2025-01-25-diary//post/2025-01-26-diary//post/2025-01-27-diary//post/2025-01-28-diary//post/2025-01-29-diary//post/2025-01-30-diary//post/2025-01-31-diary//post/2025-02-01-diary//post/2025-02-02-diary//post/2025-02-03-diary//post/2025-02-04-diary//post/2025-02-05-diary//post/2025-02-06-diary//post/2025-02-07-diary//post/2025-02-08-diary//post/2025-02-09-diary//post/2025-02-10-diary//post/2025-02-11-diary//post/2025-02-12-diary//post/2025-02-13-diary//post/2025-02-14-diary//post/2025-02-15-diary//post/2025-02-16-diary//post/2025-02-17-diary//post/2025-02-18-diary//post/2025-02-19-diary//post/2025-02-20-diary//post/2025-02-21-diary//post/2025-02-22-diary//post/2025-02-23-diary//post/2025-02-24-diary//post/2025-02-25-diary//post/2025-02-26-diary//post/2025-02-27-diary//post/2025-02-28-diary//post/2025-03-01-diary//post/2025-03-02-diary//post/2025-03-03-diary//post/2025-03-04-diary//post/2025-03-05-diary//post/2025-03-06-diary//post/2025-03-07-diary//post/2025-03-08-diary//post/2025-03-09-diary//post/2025-03-10-diary//post/2025-03-11-diary//post/2025-03-12-diary//post/2025-03-13-diary//post/2025-03-14-diary//post/2025-03-15-diary//post/2025-03-16-diary//post/2025-03-17-diary//post/2025-03-18-diary//post/2025-03-19-diary//post/2025-03-20-diary//post/2025-03-21-diary//post/2025-03-22-diary//post/2025-03-23-diary//post/2025-03-24-diary//post/2025-03-25-diary//post/2025-03-26-diary//post/2025-03-27-diary//post/2025-03-28-diary//post/2025-03-29-diary//post/2025-03-30-diary//post/2025-03-31-diary//post/2025-04-01-diary//post/2025-04-02-diary//post/2025-04-03-diary//post/2025-04-04-diary//post/2025-04-05-diary//post/2025-04-06-diary//post/2025-04-07-diary//post/2025-04-08-diary//post/2025-04-09-diary//post/2025-04-10-diary//post/2025-04-11-diary//post/2025-04-12-diary//post/2025-04-13-diary//post/2025-04-14-diary//post/2025-04-15-diary//post/2025-04-16-diary//post/2025-04-17-diary//post/2025-04-18-diary//post/2025-04-19-diary//post/2025-04-20-diary//post/2025-04-21-diary//post/2025-04-22-diary//post/2025-04-23-diary//post/2025-04-24-diary//post/2025-04-25-diary//post/2025-04-26-diary//post/2025-04-27-diary//post/2025-04-28-diary//post/2025-04-29-diary//post/2025-04-30-diary//post/2025-05-01-diary//post/2025-05-02-diary//post/2025-05-03-diary//post/2025-05-04-diary//post/2025-05-05-diary//post/2025-05-06-diary//post/2025-05-07-diary//post/2025-05-08-diary//post/2025-05-09-diary//post/2025-05-10-diary//post/2025-05-11-diary//post/2025-05-12-diary//post/2025-05-13-diary//post/2025-05-14-diary//post/2025-05-15-diary//post/2025-05-16-diary//post/2025-05-17-diary//post/2025-05-18-diary//post/2025-05-19-diary//post/2025-05-20-diary//post/2025-05-21-diary//post/2025-05-22-diary//post/2025-05-23-diary//post/2025-05-24-diary//post/2025-05-25-diary//post/2025-05-26-diary//post/2025-05-27-diary//post/2025-05-28-diary//post/2025-05-29-diary//post/2025-05-30-diary//post/2025-05-31-diary//post/2025-06-01-diary//post/2025-06-02-diary//post/2025-06-03-diary//post/2025-06-04-diary//post/2025-06-05-diary//post/2025-06-06-diary//post/2025-06-07-diary//post/2025-06-08-diary//post/2025-06-09-diary//post/2025-06-10-diary//post/2025-06-11-diary//post/2025-06-12-diary//post/2025-06-13-diary//post/2025-06-14-diary//post/2025-06-15-diary//post/2025-06-16-diary//post/2025-06-17-diary//post/2025-06-18-diary//post/2025-06-19-diary//post/2025-06-20-diary//post/2025-06-21-diary//post/2025-06-22-diary//post/2025-06-23-diary//post/2025-06-24-diary//post/2025-06-25-diary//post/2025-06-26-diary//post/2025-06-27-diary//post/2025-06-28-diary//post/2025-06-29-diary//post/2025-06-30-diary//post/2025-07-01-diary//post/2025-07-02-diary//post/2025-07-03-diary//post/2025-07-04-diary//post/2025-07-05-diary//post/2025-07-06-diary//post/2025-07-07-diary//post/2025-07-08-diary//post/2025-07-09-diary//post/2025-07-10-diary//post/2025-07-11-diary//post/2025-07-12-diary//post/2025-07-13-diary//post/2025-07-14-diary//post/2025-07-15-diary//post/2025-07-16-diary//post/2025-07-17-diary//post/2025-07-18-diary//post/2025-07-19-diary//post/2025-07-20-diary//post/2025-07-21-diary//post/2025-07-22-diary//post/2025-07-23-diary//post/2025-07-24-diary//post/2025-07-25-diary//post/2025-07-26-diary//post/2025-07-27-diary//post/2025-07-28-diary//post/2025-07-29-diary//post/2025-07-30-diary//post/2025-07-31-diary//post/2025-08-01-diary//post/2025-08-02-diary//post/2025-08-03-diary//post/2025-08-04-diary//post/2025-08-05-diary//post/2025-08-06-diary//post/2025-08-07-diary//post/2025-08-08-diary//post/2025-08-09-diary//post/2025-08-10-diary//post/2025-08-11-diary//post/2025-08-12-diary//post/2025-08-13-diary//post/2025-08-14-diary//post/2025-08-15-diary//post/2025-08-16-diary//post/2025-08-17-diary//post/2025-08-18-diary//post/2025-08-19-diary//post/2025-08-20-diary//post/2025-08-21-diary//post/2025-08-22-diary//post/2025-08-23-diary//post/2025-08-24-diary//post/2025-08-25-diary//post/2025-08-26-diary//post/2025-08-27-diary//post/2025-08-28-diary//post/2025-08-29-diary//post/2025-08-30-diary//post/2025-08-31-diary//post/2025-09-01-diary//post/2025-09-02-diary//post/2025-09-03-diary//post/2025-09-04-diary//post/2025-09-05-diary//post/2025-09-06-diary//post/2025-09-07-diary//post/2025-09-08-diary//post/2025-09-09-diary//post/2025-09-10-diary//post/2025-09-11-diary//post/2025-09-12-diary//post/2025-09-13-diary//post/2025-09-14-diary//post/2025-09-15-diary//post/2025-09-16-diary//post/2025-09-17-diary//post/2025-09-18-diary//post/2025-09-19-diary//post/2025-09-20-diary//post/2025-09-21-diary//post/2025-09-22-diary//post/2025-09-23-diary//post/2025-09-24-diary//post/2025-09-25-diary//post/2025-09-26-diary//post/2025-09-27-diary//post/2025-09-28-diary//post/2025-09-29-diary//post/2025-09-30-diary//post/2025-10-01-diary//post/2025-10-02-diary//post/2025-10-03-diary//post/2025-10-04-diary//post/2025-10-05-diary//post/2025-10-06-diary//post/2025-10-07-diary//post/2025-10-08-diary//post/2025-10-09-diary//post/2025-10-10-diary//post/2025-10-11-diary//post/2025-10-12-diary//post/2025-10-13-diary//post/2025-10-14-diary//post/2025-10-15-diary//post/2025-10-16-diary//post/2025-10-17-diary//post/2025-10-18-diary//post/2025-10-19-diary//post/2025-10-20-diary//post/2025-10-21-diary//post/2025-10-22-diary//post/2025-10-23-diary//post/2025-10-24-diary//post/2025-10-25-diary//post/2025-10-26-diary//post/2025-10-27-diary//post/2025-10-28-diary//post/2025-10-29-diary//post/2025-10-30-diary//post/2025-10-31-diary//post/2025-11-01-diary//post/2025-11-02-diary//post/2025-11-03-diary//post/2025-11-04-diary/
  • Less
  • More

2021-01-31: minicheckやっていき

やったこと

シャニ

黒セーラの灯織のTrue。
Sランクで親愛Maxなのでいい感じなのでは。
コミュも良かった。

https://twitter.com/make_now_just/status/1355550860583993351

あとフェスイベントを終わらせた。
最近シャニをやる時間がない。

minicheck

色々考えたら思い付いてしまった。
天才かもしれない。

RR を乱数生成器として、gA:R(R×A)g_A : R \to (R \times A) を型 AA の値を生成する生成器オブジェクトとする。
aAa \in A について gA(r)=(r,a)g_A(r) = (r', a) となる rRr \in R が存在するとき、gAg_Aaa生成可能といってa~gAa \mathrel{\tilde\in} g_A で表す。
このとき任意の aAa \in A について a~gAa \mathrel{\tilde\in} g_A のとき gAg_A網羅的である、という。
当然だが、生成器オブジェクトは網羅的であることが望ましい。

cA:B. (R(R×B))(R(R×(A~B)))c_A : \forall B.\ (R \to (R \times B)) \to (R \to (R \times (A \mathrel{\tilde\to} B)))AA に対するco-生成器オブジェクトとする。
ただし A~BA \mathrel{\tilde\to} BAA から BB への部分関数を表すデータ構造の全体からなる集合とする。
cAc_AgBg_B があるとき、AA から BB への関数を生成する生成器オブジェクト g(cA,gB)g_{\to}(c_A, g_B) を構成できる。

gAg_A について g(gA):R(R×A)g_{\ast}(g_A) : R \to (R \times A^\ast)AA の値の列 (リスト) を生成する生成器オブジェクト、
cAc_A について c(cA):B. (R(R×B))(R(R×(A~B)))c_{\ast}(c_A) : \forall B.\ (R \to (R \times B)) \to (R \to (R \times (A^\ast \mathrel{\tilde\to} B)))AA の値の列に対するco-生成器オブジェクトとする。

gAg_AcBc_B が与えられたときに、
c(gA,cB):C. (R(R×C))(R(R×((AB)~C)))c_{\to}(g_A, c_B) : \forall C.\ (R \to (R \times C)) \to (R \to (R \times ((A \to B) \mathrel{\tilde\to} C))) を構成できるだろうか?
考えられる1つの方法として、次のHaskell風の疑似コードで説明されるようなものがある。

c (gA,cB)(gC)(r0)=let (r1,a)=gA(r0)(r2,f1)=g(cB,gC)(r1)in (r2,λ f2f1(f2(a)))\begin{aligned} c_{\to}\ (g_A,&c_B)(g_C)(r_0) = \\ \mathrm{let}\ &(r_1, a) = g_A(r_0) \\ &(r_2, f_1) = g_{\to}(c_B, g_C)(r_1) \\ \mathrm{in}\ &(r_2, \lambda\ f_2 \mapsto f_1(f_2(a))) \end{aligned}

つまり、AA の値と BCB \to C の関数を生成しておいて、渡ってきた ABA \to B の関数に AA の値を、その返り値を BCB \to C の関数に渡すことで、最終的に CC の返している。

これは一見上手く動作しそうだが、実際には網羅的ではないという問題がある。
具体的には、この方法では A×CBA \times C^B 種類の値しか生成できないが、 (AB)C(A \to B) \to C の値の種類は CBAC^{B^A} 程度あるので、必然的に漏れが存在することになるわけである。

ここで1つの事実を確認する。

BB^\ast には ABA \to B と同型となる部分が存在する。

つまり A={a1,a2,}A = \{ a_1, a_2, \cdots \} とおいたとき、 f:ABf : A \to B があれば [f(a1),f(a2),][f(a_1), f(a_2), \cdots] として BB^\ast の元が得られて、反対に [b1,b2,][b_1, b_2, \cdots] があるとき f(ak)=bkf(a_k) = b_k として ff を構成できる。

よって BCB^\ast \to C(AB)C(A \to B) \to C よりも真に大きい。
これを利用して、次のような疑似コードで説明する方法を考える。

c (gA,cB)(gC)(r0)=let (r1,s)=g(gA)(r0)(r2,f1)=g(c(cB),gC)(r1)in (r2,λ f2f1(map(f2,s)))\begin{aligned} c_{\to}\ (g_A,&c_B)(g_C)(r_0) = \\ \mathrm{let}\ &(r_1, s) = g_{\ast}(g_A)(r_0) \\ &(r_2, f_1) = g_{\to}(c_{\ast}(c_B), g_C)(r_1) \\ \mathrm{in}\ &(r_2, \lambda\ f_2 \mapsto f_1(\mathrm{map}(f_2, s))) \end{aligned}

つまり、 AA の値の列と BCB^\ast \to C の関数を生成しておいて、渡ってきた ABA \to B の関数に AA の列の各値を適用して、その返り値の列を BCB^\ast \to C の関数に渡すことで、最終的に CC の値を得ている。

この方法ならば、各生成器オブジェクトやco-生成器オブジェクトが網羅的に機能していれば、こちらも網羅的となる。
しかし、列の生成器オブジェクトは重複する値を持つ列を生成する可能性があるが、そのようなものはこの場合では無駄である。
そこで、次の値の重複しない AA の列を生成する生成器オブジェクト g(gA)g_{\le}(g_A)g(gA)g_{\ast}(g_A) の代わりに用いれば良いのではないかと思われる。

g(gA) =f([])where f(s)(r0)=let (r1,a)=gA(r0) inif as then s else f(s[a])(r1)\begin{aligned} g_{\le}(g_A)\ = f([]) &\\ \mathrm{where}\ f(s)(r_0) &= \mathrm{let}\ (r_1, a) = g_A(r_0)\ \mathrm{in}\\ \mathrm{if}\ a \in s &\ \mathrm{then}\ s\ \mathrm{else}\ f(s \cdot [a])(r_1) \end{aligned}

というのが今のところの考察となる。
かなり良く考えられているのではないかと思う。
単一の値の代わりに列や集合を渡す、というのはわりと思い付くアイディアかもしれないけれど、それをちゃんと意味付けできたことに意義がある。

が、いくつかあやしいところもあって、例えば「BB^\ast には ABA \to B と同型となる部分が存在する」というのは AA が有限集合じゃない場合かなり嘘っぽい。
まあ無限リストが許されるなら可算集合でもいけると思うけど、非可算な場合はどうすればいいのか検討もつかない。
とはいえ、コンピュータで表現できるデータが非可算になったりするのかもよく分からないので何とも言えない、という感じ。

どうにか昇華した感じがする。楽しいね。


2021-02-01: recheckにした

2021-01-31: minicheckやっていき

2021-01-30: Weekly Crystal-JPをやった