定義は存在に先立つ(のか?)

実存は本質に先立つ、と言ったのはサルトルであったと思いますが、サルトルが言ったかどうかのその真偽はともかく、それをパクった表題であることは事実であります。

ただこのような言明に出くわした時、「実存」とは何かとか、ここで申し述べられている「本質」というものは何かとてつもなく深遠なるものなのではあるまいかわたくしごときがおいそれと近寄ってはならぬのではないか、という、絶壁の前に立ちすくした際に感じる畏怖の念が生じてしまうのでもあります。

数学についてもしかり。

以前、関数の停留、極大極小などについてなんとはなしに書き綴ったこんなもの、の中で、わたくしは
数学的な概念やタームを説明する場合,まず始めににその対象の定性的性質を描き,その性質を満たすも のを「『何某』であると定義する」という形がとられることが多いと思う.対象の定性的性質がわかりやす い場合には有効な形式であるけれども,いろいろ込み入ってくるとなかなかそうもいかない.そして往往に して,定性的性質を描く際には,その「『何某』の定義」が暗黙に前提され背景化されている場合が多く, 初めて学ぶうぶな時には定性的性質を把握しづらいというのも事実である
などと生意気にも書き記し、さらに、
イメージ豊かに生き生きとその定性的性質を思い描ける,というのが「才能」であるのだろう.そこで我々 のような凡人は,定性的性質の不完全なイメージと実際の定義をあわせもって微修正しつつ,自らのイメー ジを作成するという方法をとる.それが学習というものなんだろうと思ったりする.
ある場合には,その『何某』であるという定義を先に認めてしまい,そこから定性的性質をイメージする努 力をするということも効果的な方法なのだ,と考えたりもする.なにより「はっきり」と論が進められるよ うな気になれるのがよい.
などとグダ沼化した言い訳めいたものをも書き殴っていたのでありました。

でも無限集合にまつわる一連のものや、微分積分、そんな感じで会得してきたのではないのでしょうかね。ま、もちろんわたくしの「才能」については棚上げお手上げでありますけれども。

ささやかだけれど大切な 1

数学の世界には特徴のある「数」が色々とあるけれど、その中で $1$ には、なんというのか、とくべつ地味な味わいが感じられる。

どんな数に $1$ 掛けても値は変わらないという「掛け算の群の単位元」という位置取りや、全ての数の約数であるという位置、さらに、ある自然数に $1$ を足すと次の自然数が得られる(整数でも同じか)という、なんとなくあたりまえで「ふむ、はいそうですか」としか言いようがない感じが、$1$ の地味さ加減をかもし出しているような気がする。

そして $1$ は $1$ 以外の約数を持たないのに、素数の仲間に入れてもらえていない。素因数分解の一意性てなものに仁義を切ったがために、素数から除外されてしまった。気の毒である。このような軽い扱い(?)をされてしまうことも地味さを感じる一因なのかもしれない。

そんな健気な $1$ であるけれど、局面局面に置いていろんな形態で用いられる、という特徴もある。例えば、$1 = \{\phi\} $ とか、$1 = 0\,!, \quad 1 = p^0, \quad 1 = \log_e{e}$ などであったり。この最後の対数の形は、
$$
\log_e{a} - 1 = \log_e{a} - \log_e{e} = \log_e\Big(\frac{a}{e}\Big)
$$
などと働いて、重要な結果を導き出す時の手助けにもなる(スターリングの近似公式など)。

ある時、思いもかけない場面でこの $1$ の働きに気づき、ハッとさせられた。$f(x)$ が単調増加関数である場合には

$$ \int_{t-1}^t f(x)\,dx \leq f(t) \leq \int_t^{t+1} f(x)\,dx $$
が成り立つということの説明と、量子力学のアクロバッター(という言い方は失礼かもしれないけれどご容赦)の Dirac の
$$e^{\pm \frac{i\Theta}{\hbar}} \psi(N) = \psi(N \pm 1)$$
の導出においての $1$ の効用についてである。実際に計算もしてみたので、ちょっとそれを記してみた(上記の数式のところからリンクを貼った。しかし、この説明、自慢になるのか?)。

きっと、色々なところで、$1$ は地味に働いているんだろう。

ハイライトのぐあいはどうだ?

ハイライトを少し試して見る。まずはふざけた C 言語プログラム。こんなコードは書いてはいけない。

#include <string.h>
#include <stdio.h>

int
main(int argc, char *argv[])
{
    char c;
    char *p;
    int i;

    c = "string"[3];
    printf("%c\n", c);

    c = 3["string"];
    printf("%c\n", c);

    p = "string";
    for (i = 0; i < strlen(p); i++) {
        c = i[p];
        printf("%c\n", c);
    }
}


次に Makefile。もう少しハイライトされるといいんだけど、default ではこんな感じのようだ。js を追加すれば見栄えはもっと良くなるのだろうとは思う。

NAME = noname

#.SUFFIXES: .pdf .gplt

all: $(NAME).ps

$(NAME).ps: $(NAME).tex \
                relation.tex \
                real-explow.tex
        platex $(NAME).tex
        pbibtex $(NAME)
        platex $(NAME).tex
        dvips $(NAME).dvi
        dvipdfmx $(NAME).dvi

.PRECIOUS: %.pdf
%.xbb: %.pdf
        extractbb $*.pdf
%.pdf: %.gplt
        $<
        epstopdf $*.ps


.PHNOY: clean
clean:
        rm -f *.ps *.pdf *.dvi *.log *.pic *.gpic *.gif *.aux *.toc *.xbb *.bbl *.blg *~

pandoc:
        pandoc --mathjax -s $(NAME).tex -o $(NAME).pandoc.html

pandoc2:
        pandoc --mathjax --template=./template.html -s $(NAME).tex -o $(NAME).pandoc.html

最後は sh。どうしてこういうコードになっているかはもはや思い出せない(タイムスタンプ見たら、Jun 15 1992 だった…)。

#! /bin/sh
#
# $Id: chkdef,v 1.1 1992/06/15 01:43:52 hisasima Exp hisasima $
#
# $Author: hisasima $
#
# Check multiple define symbol in C source files.
#
TMP=/tmp/aho.$$
IDFILE=/tmp/id.$$
trap '/bin/rm -f $TMP $IDFILE; exit 1' 1 2 9 15

egrep '^#[  ]*define' "$@" /dev/null | \
 sed 's:#[  ]*define:#define' | sort > $TMP

cat $TMP | while read DUMMY1 IDENT DUMMY2
do
 IDENT=`echo $IDENT | sed 's:(.*::'`
 echo $IDENT
done | sort | uniq > $IDFILE

cat $IDFILE | while read IDENT
do
 LOTS=`egrep $IDENT $TMP | wc -l`
 if [ $LOTS -ne 1 ]
 then
  egrep $IDENT $TMP
 fi
done

/bin/rm -fr $TMP $IDFILE


お試しアゲイン

やり方を忘れていたので、試してみる。そして code のハイライトができていなかったので、再度テンプレートにそれ用のものを書いた。

#! /usr/bin/env perl

use strict;
use warnings;

while (<>) {
    chomp;
    my @plist = split(/\s+/);
    print "$plist[1], $plist[2]\n";
}

<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
      tex2jax: {
        inlineMath: [ ['$','$'], ["\\(","\\)"] ],
        displayMath: [ ['$$','$$'], ["\\[","\\]"] ]
      }
    });
</script>
<script type="text/javascript"
   src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">
</script>
<meta http-equiv="X-UA-Compatible" CONTENT="IE=EmulateIE7" />

<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.0.0/styles/default.min.css">
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.0.0/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
ハイライトについては、
https://highlightjs.org/static/demo/
https://blue-leaf81.net/archives/1010/
にお世話になった。