How to do Math in programming
2024/03/24(日) 22:31:53.90ID:XQMIeHSx
プログラムはバイト列にコンパイルされるから、すべてのプログラムは高々可算個になるのだが、なぜ非可算集合をふくむ論理を扱えるんだ?
2024/03/24(日) 23:10:41.69ID:p5jI7jhC
量化してるからだよ
2024/03/25(月) 00:03:34.00ID:q4vXpy6m
数学者だって、自分の専門分野の数学をすべて論理学と集合論の公理から演繹したわけじゃないだろう
すでに理解したことやよく知られた事実は認めて問題を解いているはずだ
そういう柔軟性がほしい
つまり、認めてもいい仮説はその場その場で手軽に導入できるような言語設計がいい
その上で、そこから機械的に導けることの証明や、定義から直接わかる具体例の計算などを半自動でしてほしい
もちろん、コンピュータにやらせる以上、曖昧さのない構文は必要だろうが
def continuous_at(f: Real -> Real, a: Dom(f)) = forall({e: Real | e > 0},
exists({d: Real | d > 0},
forall({x: Dom(f)},
implies(abs(x - a) < d, abs(f(x) - f(a)) < e)
)
)
)
これよりもさらに手短に、見た目ももっと見易く
すでに理解したことやよく知られた事実は認めて問題を解いているはずだ
そういう柔軟性がほしい
つまり、認めてもいい仮説はその場その場で手軽に導入できるような言語設計がいい
その上で、そこから機械的に導けることの証明や、定義から直接わかる具体例の計算などを半自動でしてほしい
もちろん、コンピュータにやらせる以上、曖昧さのない構文は必要だろうが
def continuous_at(f: Real -> Real, a: Dom(f)) = forall({e: Real | e > 0},
exists({d: Real | d > 0},
forall({x: Dom(f)},
implies(abs(x - a) < d, abs(f(x) - f(a)) < e)
)
)
)
これよりもさらに手短に、見た目ももっと見易く
2024/03/25(月) 01:17:03.24ID:YF7A8RJG
たとえば>>9のcomtinuous_atなんかも、一度書いたはいいけど実際に使うとなると、使うたびに、fの定義域が実数全体じゃない場合みたいな微妙な調整が必要になるんだよね
人間が考えたら時間がかかるような部分をコンピュータに助けてほしいのに、どうしても「知りたいのはそこじゃない」って部分に時間をかけなきゃいけない
人間が考えたら時間がかかるような部分をコンピュータに助けてほしいのに、どうしても「知りたいのはそこじゃない」って部分に時間をかけなきゃいけない
2024/03/25(月) 08:46:28.85ID:e2d3VFLD
かと言って最初から一般的に対応しようとすると、典型的なケースで必要以上に多くの記述をしなきゃならんだろうね
2024/03/25(月) 08:59:06.31ID:e2d3VFLD
継承とかいう欠陥だらけのサブタイピングのしくみは、証明に置き換わってもいい
つまり、厳密にis aであることを証明しなければ継承できない
&ポリモーフィックな関数は型の共通部分で動作が一致することを証明しなければ定義できない
そうすれば誰も使わなくなるか、使える能力のある奴だけが使うようになる
つまり、厳密にis aであることを証明しなければ継承できない
&ポリモーフィックな関数は型の共通部分で動作が一致することを証明しなければ定義できない
そうすれば誰も使わなくなるか、使える能力のある奴だけが使うようになる
2024/03/25(月) 11:24:25.60ID:tzV2+lCA
>>9
量化した変数や条件式の評価は遅延させなきゃいかんから、コールバック地獄みたいになるのね
量化した変数や条件式の評価は遅延させなきゃいかんから、コールバック地獄みたいになるのね
2024/03/25(月) 18:53:28.86ID:gEcAWv1u
証明を書き下すのが手間なのもあるが、数学のオブジェクトをプログラムで扱えるよう定義するのも相当手間だろうね
行列式→行列式を計算するのは簡単だが、置換を使って定義するのはめんどくさそう。置換群を先に定義しなければならない
リーマン積分→区間幅の最大値が0に収束するようなリーマン和の列すべてを考えなければいけない。
商空間で辺に沿って同一視した曲面とかもめんどくさそう。
行列式→行列式を計算するのは簡単だが、置換を使って定義するのはめんどくさそう。置換群を先に定義しなければならない
リーマン積分→区間幅の最大値が0に収束するようなリーマン和の列すべてを考えなければいけない。
商空間で辺に沿って同一視した曲面とかもめんどくさそう。
2024/03/26(火) 01:22:14.15ID:D7UVXJYK
2024/04/01(月) 00:51:33.03ID:1WSos/bD
>>14
数学を表現するための概念のサブセットも選ばないといけない
現代数学が公理的集合論で記述されることは誰でも知ってるけど、具体的な対象(たとえば実数など)を扱う時に、それが∅から始めてZFCで構成可能かどうかなんてことを意識している人はいない
おそらく多倍長整数と浮動小数点数くらいはあったほうがいい
数学を表現するための概念のサブセットも選ばないといけない
現代数学が公理的集合論で記述されることは誰でも知ってるけど、具体的な対象(たとえば実数など)を扱う時に、それが∅から始めてZFCで構成可能かどうかなんてことを意識している人はいない
おそらく多倍長整数と浮動小数点数くらいはあったほうがいい
2024/04/01(月) 00:58:01.06ID:1WSos/bD
あと、近年のスクリプト言語における型チェッカやJITコンパイラなどと同様に、
言語は同じでも、プログラミングをする処理系と、証明をする処理系をわけたほうがいいと思う
同じだと、たとえば自然数の2を、数値として評価するか、「0の後者の後者」のように展開するか、プログラマが書き分けないといけない
言語は同じでも、プログラミングをする処理系と、証明をする処理系をわけたほうがいいと思う
同じだと、たとえば自然数の2を、数値として評価するか、「0の後者の後者」のように展開するか、プログラマが書き分けないといけない
2024/04/08(月) 20:17:45.51ID:lvukj15+
パターンマッチングの構文もかなり柔軟じゃないと書きづらいだろうね
複素関数をf = u + ivと分解するとか、V^nの既定v_1, ..., v_nを取るとか、そういうのが頻繁にある
複素関数をf = u + ivと分解するとか、V^nの既定v_1, ..., v_nを取るとか、そういうのが頻繁にある
2024/04/08(月) 21:50:38.81ID:azze6O2m
2024/04/11(木) 19:11:04.51ID:0/pdO5wD
埋め込みによって元の空間とその像を同一視するとか、
解析接続によって部分領域上定義された正則関数を複素平面全体の関数とみなすとか、
そういうのはどうやるんだろうな
解析接続によって部分領域上定義された正則関数を複素平面全体の関数とみなすとか、
そういうのはどうやるんだろうな
2024/04/11(木) 22:05:12.71ID:M3s07OXs
穴を掘って埋める、平安京エイリアン
2024/04/12(金) 07:06:54.14ID:mV7jaryD
LeanとIdrisはどちらが良い?
2024/04/12(金) 08:41:58.82ID:dWqcXhet
∅への写像は定義域が∅のときのみ存在するから
p→∅がpの否定を表すのね
p→∅がpの否定を表すのね
2024/04/12(金) 09:44:04.06ID:sBlCiCbm
背理法って、Falseをreturnしたら全部示されるんじゃないの
2024/04/12(金) 11:38:22.83ID:VfOiBAdh
>>24
False型の値を返すと、Falseが証明される
False型の値はない(FalseはType型の値)ので、真の命題からは返すことはできない
唯一返すことができるのは、仮定もFalseである場合のみ
これはXから∅への写像の集合
∅^X := {f: X -> ∅}
が、X = ∅のときのみ元を1個持ち、その他の時は空集合であることに対応
False型の値を返すと、Falseが証明される
False型の値はない(FalseはType型の値)ので、真の命題からは返すことはできない
唯一返すことができるのは、仮定もFalseである場合のみ
これはXから∅への写像の集合
∅^X := {f: X -> ∅}
が、X = ∅のときのみ元を1個持ち、その他の時は空集合であることに対応
2024/04/12(金) 12:30:58.16ID:Kw0ACNUt
boolean main()
{returnFALSE);};
{returnFALSE);};
2024/04/12(金) 12:47:01.19ID:trEYbdGK
「∅を返す」と「a∈∅となるaを返す」の違いがわからないのか?
2024/04/12(金) 15:02:42.13ID:/hR1sMGb
>>26
ここのFalseはブーリアン型ではない
ここのFalseはブーリアン型ではない
2024/04/19(金) 11:16:47.49ID:fuxAiCc1
何がしたいのかよくわからんけど、計算に時間がかかっていいなら色々と自動化できるんじゃね
プログラミング言語で細かく指示するのは欲しい結果以外の計算をはぶくためでもあるからな
そしてユーザーが欲しがる結果を言語を設計する時点で特定することはできない
プログラミング言語で細かく指示するのは欲しい結果以外の計算をはぶくためでもあるからな
そしてユーザーが欲しがる結果を言語を設計する時点で特定することはできない
2024/04/19(金) 12:06:54.47ID:0YEF9E1Q
2024/04/19(金) 12:59:19.99ID:wsMDWrIu
その平凡なアイデア思いついたのお前が初めてだと思うか?
2024/04/19(金) 13:58:03.23ID:3z6RQVPy
「自分が初めて思いついた」という話題はどこから出てきたの?
2024/06/10(月) 22:10:57.74ID:TCmEQru+
>>9
同意
同意
2025/04/27(日) 16:18:53.10ID:rRExk4WB
日本語と英語と同じスレがあるのか
重複だからどっちか削除汁
重複だからどっちか削除汁
レスを投稿する
ニュース
- 「レーダー照射」なぜ中国は素直に謝罪しないのか 非を認めず反論、逆ギレ「ごめんなさい」と言えない国情★3 [七波羅探題★]
- 【サッカー】Jリーグ、43億円の赤字予算を承認 ★2 [鉄チーズ烏★]
- 松村沙友理、スタバは好きだけど「やっぱコーヒーに700円800円が…」「家でお湯わかしてやったらタダやん」 [muffin★]
- 40代教員、1億8600万円分の暗号資産だまし取られる 「警察手帳のような物」見せられ−滋賀県草津市 [蚤の市★]
- 上野動物園の双子パンダ、1月末に中国に返還へ 国内でパンダ不在に ★4 [蚤の市★]
- 【ラブホ】小川晶前市長、出直し立候補意向 周囲に伝達 群馬・前橋市長選 [ぐれ★]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★8
- 配達員って底辺職なのに妙にプライド高い奴多いよな
- ブレイキングダウンの試合前挑発タイムでくも膜下出血 朝倉未来の責任は [279254606]
- 上野動物園の空いたパンダの檻に今後、展示すべきもの [153736977]
- ボカロとかボイロ増えすぎ
- 串カツ田中の代表取締役
