ブログ「サイバー少年」

ブログ「サイバー少年」へようこそ!
小学六年生ごろからプログラミングを趣味にしている高校生のブログです。
勉強したことについての記事などを書いています。フリーソフトも制作、公開しています。
(当ブログについて詳しくは「ブログ概要紹介」を参照)

サイバー少年が作ったフリーソフトは「サイバー少年の作品展示場」へ

哲学ってどうなのよ

数学をやっていると、とくに数理論理学にぶつかったあたりで哲学との関連性を意識させられるわけですが、
哲学がどのようなことをやっているのか、よく知りません。

論理学が哲学者と数学者によって共に形成されたことは確かだと思いますが。


私は情報科学から移行して数学にハマってしまったように、より根源的なほうの学問(情報科学は数学の上で成り立っている)に興味を持つ傾向があるのですが、

それならば数学は哲学の上で成り立っているじゃないか、という話になると思います。
具体的にいえば数学が論理学の上で成り立っていて、論理学の基礎となるのが哲学です。

ただ、ここまでで述べたとおり論理学は数学の上で成り立っていて、数学は論理学の上で成り立っている、みたいな部分はあるんですよね。

これだけだと循環しているので、やっぱり哲学が最終的な根源となると思います。


ただ、完全にイメージですが、哲学より数学のほうが頭を使う印象がありますね。
私は前述のとおり、より根源的な学問を求める一方で、頭を使いたい欲がありますから、そうなると数学のほうが魅力的に見える。

ただ哲学って何やってるのかがまったく分からないので、哲学は頭を使わないと思い込んでいるのかも知れません。

しかも哲学って数学者が数学に近いアプローチでやっていたり、ぜんぜん違うアプローチで哲学をやってる人がいたりで、範囲が広いですね。


最後に、昔もこのブログで触れましたが、数学者は数学的な事実を宇宙的な真理だと思っていますが、哲学者は数学者が彼らの脳みそで考えられることを考えているだけのゲームみたいなものだと思っているっぽいです。

私も哲学者のほうの意見を支持すると言いました。

あと現代数学の公理主義と相まって、なおさら数学というのは人間の思考の限界に挑戦する究極の頭の体操であり、そうでしかないと思います。


ただ考えてみれば人間風情が自分は神になれると勘違いしてこの世の真理を突き詰めようだなんて、間違いではないでしょうか。

人間はしょせん、哲学なんかせずに、数学というゲームをやっておけばいいんだと思います。

もちろん、数学の基盤となる哲学は重要ですけどね。
ただ、数学の基盤となる哲学は論理学にカテゴライズできると思うので、哲学自体は不要ではないかと。


しかし、もし哲学も決してこの世の真理を突き詰めるものではなく、あくまで人間が見ているこの世界における事実(人間が感じること)を研究する学問であるなら、数学とは違う領域を研究していて面白いと思いますけどね~。

数学は形式科学ですが、哲学は自然科学じゃないの?と思います。


さて、こう言ってきましたが今回の記事は哲学しているんでしょうか。
ただ単に勝手なイメージを書いているだけですが…。

tag: 哲学 論理学 数学 公理 考察

ペアノの公理と特殊な数学的帰納法

今回は、あんまり深く考えないで数学について記事にしようということで、以前の記事で数学的帰納法を使ったときに思ったことを書きます。

あんまり考えて書いていないので、特に新たな発見をしたわけではないのですが、ちょっとしたアイデアとして。


数学的帰納法は、なにも0や1(自然数の最初の数)から始まって1つ後ろの数、その1つ後ろの数というふうにドミノ倒しされるとは限らず、

0や1でない自然数から始まって、1つ後ろでないところの数へとドミノ倒しされることがあります。

数学的帰納法の応用ですね。
我らがWikipediaにも書いてあります。

数学的帰納法 - Wikipedia
https://ja.wikipedia.org/wiki/%E6%95%B0%E5%AD%A6%E7%9A%84%E5%B8%B0%E7%B4%8D%E6%B3%95


そんでもって、数学的帰納法は形式論理で扱うときにどのようになるかというと、自然数に関する公理のひとつとなります。

ペアノの公理というやつで、それの一番最後の公理が数学的帰納法を正当化するための公理となります。

ペアノの公理 - Wikipedia
https://ja.wikipedia.org/wiki/%E3%83%9A%E3%82%A2%E3%83%8E%E3%81%AE%E5%85%AC%E7%90%86


余談ですが、こういうふうに自然数はどんな性質なんだろうと突き詰めて公理を発見するのではなく、自然数とはこういうものなんだという性質を、神ではない我々が定義することができるというのは、なんか数学の面白さのひとつですよね~。

まあ、私が定義できるほど実力はないのですが…。
ただ、こういう公理主義的な考えの上での数学は、自分で作れるという意味でプログラミングと似ていると思います。

続きを読む

tag: 数学 論理学 論理式 自然数 考察 命題 形式 帰納法

近況報告というか話題のちゃんぽん

ただいま、記事「F#の基礎勉強まとめ (前編)」の後編を執筆中であります。
途中つなぎの記事を書くほど大規模なブログ記事を書くのは久しぶりですね。

現在、リスト、配列、タプル、レコードまで書き終わったのですが、判別共用体、パターンマッチ、例外を書いて手短に終わろうと思います。

ただし、パターンマッチが本当に内容的に濃い!
大変ですね。

さて、上記リンクの記事でも書いてあるように、F#の文法は解説しても、実際にプログラム書いたことがほぼ無いんですよね~。

というわけで、ちょっと前ですが、なにかプログラムを書こうということで、なんともベタなじゃんけんのプログラムを書きました。

せっかくなのでYahoo!ボックスに上げておきましたから、ご覧ください。
なにせF#の経験が浅いので、変な箇所があるかもしれませんが、ぷぷぷ~と笑ってないでコメントにてご指摘下さいませ。

Janken.txt (Yahoo!ボックス)
http://yahoo.jp/box/_9_RYk


このプログラムを書きながら思ったのですが、関数に引数として別の関数の戻り値を渡してもいいし、
関数に直接、別の関数を渡しちゃって、むこうの関数で引数を与えて戻り値を作ってもいい、というこの関数と値の区別のルーズさは特徴的ですね。

今回の場合は逆にそれがややこしくなって、変なプログラムになってしまったかもしれませんが…。

続きを読む

tag: プログラミング F# 数学 証明 論理学 勉強 群環体 結合法則 Nexus iPad

コンピュータは数学をできるか

あのアインシュタインは「本で調べればわかるものを暗記する必要はない」と言っていたそうです。

たしかに暗記というのは、まあ人間のすごいところで現在置かれている状況と記憶を照らし合わせて最適な知識を引き出す、みたいな人間の検索能力も合わせて考えれば価値のある行為だと思うんですが、

ただ覚えるだけという暗記自体の価値はあんまり…ないかなという印象を持ちますね。
それは、メモ帳などのツールを使えばいいじゃん、という話で済むからです。


一方で、物事を考えるという行為はなかなかツールで代替するということができませんでした。

たとえば私の好きな数学も論理的思考をするというのが基本ですので、これは機械にはこなせない仕事だということで数学者たちは誇りをもって数学をやっていたと思います。

まあ時にそれは、以前もブログに書いたかもしれませんが、記憶力、知識力メインでやってる学問に従事する人を見下すというか、
「覚えてないことは本とかネットで調べればいいじゃん。まあ数学は俺らにしかできないけどねー君たちは本やネットで代用できる能力身に付けて嬉しいの?」(私の若干の悪意によって誇張されてしまったセリフですが…)
と思ってる側面があるんですけどね。まあそれはいいとして。


しかしながら、この頃はコンピュータを使用してAI(人工知能)のプログラムを走らせることによって、コンピュータに物事を考えさせるということが可能になってきました。

たとえば将棋なんかもコンピュータがだいぶ強くなってきましたよね。

そして機械にはできない学問の代表格であった数学でさえも、まだ遠い未来の話ではあると思うんですが、思うにオワコン化が始まっているというか、コンピュータにその仕事を奪われる時代が到来するのではないかと感じました。

私はAIに詳しくないので、細かいことはよくわからないのですが、コンピュータに定理を証明させることが可能です。

たとえばCoqとかいうやつを使えば証明させられるんじゃないですかねぇ。
(意識低い系発言。Coqもやってみるべきだろうか…)

実は数理論理学によって論理の仕組みをかなり機械的に考察できるようになったことで、数学みたいな論理を軸にした学問はコンピュータによる代替の恰好の餌食になっている、と思います。


ただ、コンピュータに難しそうなのは数学の中で得られた知見を現実世界の何に応用できるか考えることや、逆にそもそも現実世界に応用することを目的にして数学の研究をすることですね。

現実世界も論理で割り切れないということは決して無いと思うんですが、なんにせよ複雑ですから、数学の中だけでゲームみたいにやるほうがよほど簡単だと思いますね。

あとプログラミングも、計算機科学の枠組みだけでやるならコンピュータにも簡単になる時代が来ると思うんですが、人間にわかりやすいシステムを作るとなると機械には理解できないことが多くて難しいのではないでしょうか。


やはり人間の気持ちを理解するというのはコンピュータには難しいでしょうね。
ですから、数学がコンピュータに仕事を奪われてもなお、カウンセラーみたいな職業は人間が担当することになると思います。

心理学も統計ゲーみたいなところがあるようですので、一部をコンピュータで代替するというのも不可能ではないと思いますけどね。

というわけで、まともな記事を書くにはあまりにも知識がなさすぎる状態でこんな記事を書いて、やっぱりまともな記事を書くことはできませんでした。


しかし、私のようにプログラミングだとか数学をやってる人も機械に仕事を奪われると思うと、安心できませんよね~。

まあ遠い未来だとは思うので、少なくとも我々が死ぬまでこういう職業が人間にしかこなせない高貴な職業であれば嬉しいんですけどね。

tag: コンピュータ 人工知能 論理学 プログラミング 数学 証明 暗記 クソ記事

数理論理学の些細な気づきごと

数理論理学の勉強はもう終わらせてやめましたが、最近ふと気づいてしまったメチャメチャどうでもいい発見があったので、たいしたことではないですから短くまとめます。

すごく小さな発見を、今回は2点ほど用意しております。

(追記ですが、ちっとも短く書けませんでした…)


まず1つ目ですが、xor演算についてです。
数学というより、プログラミングで論理演算をするときに知っとくとためになるかもしれませんね。

xorは、a xor bだったら、どういう意味かといえば、

aとbが両方ともfalseなら結果もfalse、aかbのどちらかだけがtrueなら結果はtrue、aとbが両方ともtrueなら結果はfalse、ですよね。


じゃあ、これがa xor b xor cと3つになったらどうなるでしょうか。
ちなみに左結合、つまり(a xor b) xor cです。

これは、感覚的には2項バージョンの拡張として、a,b,c全てがfalseなら結果はfalse、a,b,cのどれか1つだけがtrueなら結果はtrue、a,b,cのうち2つ以上がtrueなら結果はfalseになる演算だとみなしたいわけですが、そうはならないようなんですね。

反例としては、a,b,cが全てtrueだとしたら結果はfalseになってもらいたいわけですが、a xor bの時点で一回falseになってしまうので、そのfalseとcつまりtrueをxorして、結果はtrueになってしまうと。

ちなみに情報工学ではメジャーな話ですが、x xor trueをかけるとxの反転が得られますから、a xor b xor c xor dのa,b,c,dが全てtrueならa xor b xor c = trueの反転でfalseですね。

偶数個の項なら反例になりませんが奇数個のとき反例になることになります。


また、補足しておくと、ブール代数での話ですが、2項バージョンのときa,bの片方がtrueならtrueというのは、この“片方がtrue”というのが、
「1つだけtrueで残りはfalse」ということなのか、「1つ以上trueがあるが1つ以上falseがある(確実にすべてfalseではないが確実に1つはfalseがある)」ということなのか、という二つの捉え方があって、

これらは2項バージョンにおいては同値ですから違いが曖昧なのですが、3項以上になると違う命題になるので、後者のほうの捉え方も3項以上バージョンでは、また別個に考えられます。

つまり後者の捉え方で、a xor b xor cを、
a,b,c全てがfalseなら結果はfalse、a,b,cのうち1つ以上trueがあって1つ以上falseがあれば結果はtrue、a,b,c全てがtrueなら結果はfalseになる演算だとみなすこともできるわけですね。


さらに、trueでなくfalseの個数に着目した場合、つまりtrueとfalseが出てくる箇所をひっくり返した場合に後者では同値となりますが、前者では違う命題になるので、前者の捉え方のtrueとfalseをひっくり返した捉え方も論理的にはありますが、
まあa xor b xor cを感覚的に捉えるならばfalseの個数で考えるという発想はないと思いますので、この場合は無視しましょう。

だとすれば、上の話での後者の捉え方はどうなのかというのは考えなければなりませんが、このときも前者のときと同様にa,b,cが全てtrueという反例があって、感覚的なものとは違う真理値になります。


感覚的に捉えたものと同じ真理値にしたい場合はどういう論理式を書けばいいのかというと、後者の捉え方の場合は単純に、
(a or b or c) and not (a and b and c)みたいに全ての項をorでつなげたものと、andでつなげたものの否定の論理積をとるだけです。

むしろ、2項の場合はa xor bは(a or b) and not (a and b)と同値なのに、3項以上の場合は同値でなかったことに驚きますね。


前者の捉え方では、2つ以上の項がtrueにならないことを表現するために、あらゆる2つの項の組み合わせについて論理積がtrueにならないことを言わなければならないわけで、

a,b,cなら(a or b or c) and not (a and b) and not (a and c) and not (b and c)みたいに、長いですね。

全ての項をorでつなげたもののあとに、n項ならばnC2個の2つの項の組み合わせの論理積の否定を付けて、論理積でつなげなければなりません。
nandを使えば(a or b or c) and (a nand b) and (a nand c) and (b nand c)みたいに若干、短くなるか…。


というわけで、イメージ通りにやりたい場合はxorでつなげるのでは駄目で、地味に大変な論理式を書かなければならない、という話でした。

そうそう、上記の論理式を書く以外にも、真理値表をもとに論理式の標準形を書くという手段も、一応ありますね。

続きを読む

tag: 数学 論理学 論理式 論理演算 写像 集合 同値 組み合わせ 考察 クソ記事

2017年 新年のご感想

あけましておめでとうございます!!!!!!


新年のご感想を記事にします!!
天皇陛下かよ!!

昨年末の記事でも同じネタを書いて使いまわしですが、時事ネタを今年は記事タイトルに使ってみました。

新年の記事は1月3日までに書きたいと姉妹ブログ「サイバー少年のつまらない事ですが」に書きましたが、ほんのちょっと遅れてしまいましたね。

まあこの記事を書き始めた時刻はギリギリ3日なので、セーフでしょう。


新年、2017年が始まりましたね~。
あらためまして、あけましておめでとうございます。

去年を振り返るというのは昨年末の記事でやりましたし、近況報告というか最近に興味のある物事を書くというのも、昨年12月の記事「何番煎じだ!?近況報告」でやってしまったので、今回書くことがないんですよね。

記事にするネタのなさから近況報告を記事にしてしまいましたが、頑張って他のネタでつなぐべきだったな~。


こうなってしまうと新年の抱負を書いてネタにするかとも思うのですが、去年と同じように特に抱負を設定しないというスタンスを踏襲したいんですけどね。
(記事「2016年 新年のご挨拶&去年の抱負大懺悔式典」を参照)

まあ、軽い目標程度は書きますか。

続きを読む

tag: 新年 目標 数学 F# 論理学 自然演繹 プログラミング コンピュータ 勉強 モチベーション

気がつけば年の暮れ 2016

こんばんは。真夜中ですね~。
生活リズムがぐちゃぐちゃですね~。
よろしいことではない…。

今年も終わりますね~。
今年は本当に早かったですね。

最近、なんとも年寄りじみた発言ですが、目まぐるしく時が過ぎていくので今年が西暦何年とかすぐに答えられるかと問われますと、危うくなってきました。

西暦はまだいいですが、和暦なんてもう出ないですね。
その西暦優位の感覚はちょっと若いのかな。
そうそう、あと、自分の年齢も同じように、すぐに出ないですよね。


当記事の本題に入る前にざっと年末の近況報告をしますが、前回記事「何番煎じだ!?近況報告」で書いた群・環・体のモチベーションが上がらないというのが、なんとまだ続いております。

さすがにヤバいですね…。
まあ上記記事でも書いた(さらに前の記事を引用した)のですが、ダラダラが続いてヤバいなと思い始めるのが、次の勉強を頑張る時期へと突入する原動力になるんですけどね。


一方でF#は、上記記事で書いたとおり勉強の頻度が少ないことを無視すれば順調…かと思われるのですが、姉妹ブログにも書きましたが最近なんか難しくなってきました。

次は判別共用体というのを勉強するんですが以前に内容をざっと見てみたら、今までで一番、難しそうでしたので理解できるかどうか不安ですね。

ただまあ、もし順調に事が運べば本年末に勉強したことまとめを書いて、来年に新年の挨拶記事なんかを書いて、来年の通常の記事の一発目はF#の勉強内容をまとめる記事になるんじゃないですかねぇ(他人事)。

続きを読む

tag: 数学 プログラミング 論理学 F# 群環体 勉強 パソコン 新年 目標

論理学の勉強コンプリート!!!

この記事書くの2回目です。

姉妹ブログにも書きましたが(記事「書いてた記事が…」を参照)
この前、同じ内容の記事を書いていて2時間半ぐらいかけてもうすぐ終わりそうってとこまで来たのに、急にブラウザが固まってリロードされてしまいまして、書いていた内容が消えてしまいました。

Edgeで書いてたんですけど、Edgeが駄目なんですかね。
IEと比べて不安定な気がします。

キクチモモコ学生じゃないけど、ほんと使えないっ!って思いましたね。
今からまた同じこと書かないといけないのか…だるい。



さて、去年の十二月に読んだ数学のページから始まり、京都大学の教授の方のウェブサイトを読み続けて数理論理学の勉強を続けてまいりましたが、

とうとう一昨日、最後の最後まで読み終わりました!

はい拍手!
パチパチパチパチパチパチ…


全部で10ヶ月、長かったですね。

まあ、今年度の勉強したことまとめをご覧いただければわかりますが、そのうちの5ヶ月はずっと最後の章のシークエント計算についてダラダラと勉強していたんですけどね…。

なんというか今回の論理学の勉強を振り返ってみると、頑張って勉強する時期、燃え尽きて怠ける時期、さすがに怠け過ぎだなと思ってまた頑張る時期、を繰り返している感じでした。

シークエント計算の前の章の自然演繹は頑張って勉強していたので、例に漏れずシークエント計算は最初のほうは怠け気味でして、それで長引いて5ヶ月も掛かってしまったわけですね。

ただ、こちらも例に漏れず、怠け過ぎだなと思ったのでシークエント計算の勉強の最後のほう、つまり最近は頑張って勉強していました。


あと、もうひとつの長引いた理由として、これも勉強したことまとめに書いてありますが、述語論理に関する推論規則の、固有変数条件の理解に苦戦していたのもあります。

自然演繹のほうの固有変数条件は理解できたんですけどね。

前者は時間かけても理解できなかったので、飛ばして先に進んでしまったんですよ。
数学ってひとつひとつ着実に理解して進むのが筋だと思うので、あんまり良くないことだとは思いますが。

まあでも、数学もゲームと同じようなもので、難しすぎてクリアできないとつまらないので、モチベーションを確保するためには多少は諦めるのも仕方ないかなとも思いますけどね~。

飛ばしたのは唯一、この固有変数条件だけですしね。

今後しばらくは例によって燃え尽きているので、これの理解にリトライする気はないですが、いつかやってみてもいいかもしれないですね。

続きを読む

tag: 数学 論理学 勉強 能力 証明 モチベーション ブラウザ 数学者 論理

屁理屈という言葉が屁&正しい日本語が嫌い

あまりにもネタがないので、今回は日本語について思ったことのネタを書こうと思います。
二つのネタを用意したのですが、まずひとつめ。

たまになんか「それは屁理屈だ」なんて言う人いますよね。

しかし屁理屈ってなんだよと。
ちゃんと論理的に物事を考察して話しているのに、屁という言われようはなんでしょうか。

この屁理屈という言葉こそ、論理的な会話が出来ない奴が相手の論理的主張を無理やり押しのけるための逃げではないのか!

それこそ屁ではないのかァ!!!


まあたしかに、あまり正しいとは思えない屁みたいな理屈は実際にあると思うので、そういうものに対しては“屁理屈”と呼んでしまっていいと思うんですが、

それ以外にも上記のように論理的な議論から逃げるための言葉として屁理屈という言葉を使う人間がいるのが問題であると思いますね。


そもそも日本ではとくに、多数派が主張していることや、昔から伝承されてきたこと、年長者が言ってることが問答無用で正しいとされる雰囲気がありますよね。

それに対して論理的に文句つけることが、なぜかたいした根拠もねえくせに悪とされますよね。

理屈をこねる、みたいな否定的なニュアンスの言葉もありますし、論理的であることが悪、という風潮があるのがあまり理解できないです。


というわけなのですが、まあ実際に屁理屈なものもあるということですから、ここであらためて屁理屈という言葉を定義しましょう。

屁理屈とは、屁みたいな理屈のことである。

…そのままやないかい!

まあようするに、“屁みたいな理屈”というのが曖昧だからいけないわけですね。
誤謬である主張、つまり明確に反論できる主張だけが屁理屈であるということにしたらいいと思います。


正しい屁理屈という言葉の使い方

たかし「ねえお母さん、お金持ちの家は回転寿司なんて行かないんだったよね?ということは我が家はお金持ちじゃないから、回転寿司に行くってことだね!」

J( 'ー`)し「たかし、その推論は前件否定であって妥当ではないじゃない。つまりあなたの言ってることは屁理屈よ。」

続きを読む

tag: 意見 クレーム 言語 日本語 論理学 言葉

形式論理と自然演繹の紹介

論理学の勉強で自然演繹を学んだので、とうとうご紹介したいと思います。

論理学といえば自然演繹、自然演繹といえば論理学ですね。
いや、そんなにでもないか…。


自然演繹を紹介するとは言っても正直なところ、健全性や完全性の証明とかそんな深入りして紹介するのは大規模過ぎて難しいので、
さらっと規則を紹介したり、具体例を示したり、で済まそうと思いますが。

あと、述語論理での扱いも入れたかったのですが、面倒なのと、固有変数条件あたり熱弁して空回りするクソ解説を生産しそうなので、命題論理にとどめておきました。


自然演繹は論理学の形式的証明の方法のひとつで、自然演繹の他には、
ヒルベルト式と呼ばれる矢印だらけの気色の悪い、仕組みは単純だけど使うのが難しいものとか、

シークエント計算という、これはまだ勉強中なのでコメントしづらいんですが、シークエントというものに対してゴニョゴニョしていくものなどがあります。

ちなみに、自然演繹とシークエント計算は、同じゲンツェンという人が発明したそうです。


さて、今回の記事は前編と後編ではなく、ひとつの記事で完結しますが、執筆には2日間かけています。

続きを読む

tag: 数学 論理学 構文論 論理式 証明 命題論理 直観主義 自然演繹 形式 勉強

次のページ

当ブログをご利用(閲覧等)になる場合は必ず「当ブログの利用規定」をお守りください。