How to do Math in programming

2024/03/21(木) 09:41:43.97ID:85WuJ+Bw
What is "mathematics in programming?"

Some well-known facts in mathematics are difficult to prove using a computer.
For example, the Leibniz series

1 - 1/3 + 1/5 - 1/7 + ...

is exactly equal to π/4, but calculating this series directly is impossible because it requires infinite computation.
However, from the theorems of analysis, this equality can be shown. Thus, if all these theorems are formulated in terms of logic symbols, the proof is reduced to a finite algorithm.

Some might say that a "proof assistant" or "theorem prover" would make this possible.
However, the language of proof assistants is too complicated to describe proofs of non-fundamental theorems, so proof assistants are used only to check proofs that have already been solved.
This is far from doing mathematics.

My question is where do mathematical ideas come from and whether programming can help yield them?
2024/03/26(火) 01:22:14.15ID:D7UVXJYK
LEAN
https://lean-lang.org/

SageMath
https://www.sagemath.org/


今ならこの2つだな
2024/04/01(月) 00:51:33.03ID:1WSos/bD
>>14
数学を表現するための概念のサブセットも選ばないといけない
現代数学が公理的集合論で記述されることは誰でも知ってるけど、具体的な対象(たとえば実数など)を扱う時に、それが∅から始めてZFCで構成可能かどうかなんてことを意識している人はいない
おそらく多倍長整数と浮動小数点数くらいはあったほうがいい
2024/04/01(月) 00:58:01.06ID:1WSos/bD
あと、近年のスクリプト言語における型チェッカやJITコンパイラなどと同様に、
言語は同じでも、プログラミングをする処理系と、証明をする処理系をわけたほうがいいと思う

同じだと、たとえば自然数の2を、数値として評価するか、「0の後者の後者」のように展開するか、プログラマが書き分けないといけない
2024/04/08(月) 20:17:45.51ID:lvukj15+
パターンマッチングの構文もかなり柔軟じゃないと書きづらいだろうね

複素関数をf = u + ivと分解するとか、V^nの既定v_1, ..., v_nを取るとか、そういうのが頻繁にある
2024/04/08(月) 21:50:38.81ID:azze6O2m
>>10
必要なら小さく取り直す、とか
a ≠ 0としても一般性を失わない、とか
そういうの簡潔に書けるといいよね
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の否定を表すのね
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個持ち、その他の時は空集合であることに対応
2024/04/12(金) 12:30:58.16ID:Kw0ACNUt
boolean main()
{returnFALSE);};
2024/04/12(金) 12:47:01.19ID:trEYbdGK
「∅を返す」と「a∈∅となるaを返す」の違いがわからないのか?
2024/04/12(金) 15:02:42.13ID:/hR1sMGb
>>26
ここのFalseはブーリアン型ではない
2024/04/19(金) 11:16:47.49ID:fuxAiCc1
何がしたいのかよくわからんけど、計算に時間がかかっていいなら色々と自動化できるんじゃね
プログラミング言語で細かく指示するのは欲しい結果以外の計算をはぶくためでもあるからな
そしてユーザーが欲しがる結果を言語を設計する時点で特定することはできない
2024/04/19(金) 12:06:54.47ID:0YEF9E1Q
まず代数計算は自動化したいよね

ほぼ定義を再掲するだけみたいな証明は自動で演繹できるようにしたい
全部が全部そうできなくてもいいけど、書き方に若干のルールを設ければ自動で証明できる範囲は広がるはず

型駆動でも、OOPでいうとこのデザインパターンを発見して、
>>10>>19みたいな微妙に命題を変形するようなのは楽に書けるようにしたい
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
日本語と英語と同じスレがあるのか
重複だからどっちか削除汁
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況