Heat-Hazeの日記

ネット上で様々の有益な情報を発信する人に感謝。

見やすいプレゼン資料の作り方 - リニューアル増量版

こんどパワーポイントの資料を作成する機会があったら参考にしようと思うのでメモしておく。

一生使える 見やすい資料のデザイン入門

一生使える 見やすい資料のデザイン入門

QT4の参考書

C++ GUI Programming with Qt 4 (First Edition)
英語だけど一通りのサンプルが揃っていて参考になる。 今さらQT4だけどPysideでちょっとGUIを作るときの参考に。 ちなみに2nd Editionもある。こちらは有料。

C++ GUI Programming with Qt4 (2nd Edition)

C++ GUI Programming with Qt4 (2nd Edition)

JythonでJavaのパッケージのimportが失敗

standalone版JythonJavaのパッケージのimportが失敗したのでメモ。

Why does Jython refuse to find my Java package?

What is Package Scanning

どうもパッケージスキャンというものが関係しているらしい。 インストーラからJythonをインストールした場合は上記のパッケージスキャンが働くためimprtにアスタリスク(*)を指定しても問題ないらしいが、standalone版Jythonではパケージスキャンが動かないのでパッケージを見つけることができずエラーとなる。回避するにはパッケージをクラス名まで指定すればOK。ちょっと面倒だがJythonがインストールされていない他のパソコンへstandalone版Jythonと一緒に自作のJythonプログラムをもっていく可能性がある場合は注意した方がよさそうだ。

# -*- coding: utf-8 -*-

from __future__ import print_function

#パッケージスキャナーが動いてない場合、下記のインポートはエラーとなる
#from javax.imageio import *
from javax.imageio import ImageIO

def main():
    Formats = ImageIO.getReaderFormatNames()
    for name in Formats :
        print(name)

if __name__ == "__main__":
    main()

Wordにて「はがき印刷」がグレーアウトされる

Windows10をクリーンインストールし、その後Office2010のWordにて年賀状の宛名印刷をしようとしたところWordの「はがき印刷」がグレーアウトされ、印刷ウィザードが起動できない状態となってハマった。解決方法がわかったのでメモしておく。以下のサイトが参考になった。

Word(Office ProPlus 2013)にて「はがき印刷」がグレーアウトし選択できない

結論としては自分のPC環境では以下の操作で解決された。

  • 「コントロールパネル」を開き、「プログラムと機能」から「Windowsの機能の有効化または無効化」を選択。

  • .NET Framework 3.5 (.NET2.0および3.0を含む)」にチェックをする。

グレーアウトされた状態では、Wordの[オプション]-[アドイン] にてはがき印刷に使われる mscoree.dll (アドイン) は「COMアドインの読み込み中に実行時エラーが発生しました。」と表示されていた。.NET2.0の機能を使っているため上記のような現象になっていたようだ。

入門!論理学

形式手法における検証法は2通りある。

  1. 仕様を「定理」とみなし、「公理」と「推論規則」を使って証明する方法。
  2. 仕様を「モデル」として構築し、要求として与えられる条件を満たす可能性を計算機上で探索する方法。

1つめの方法に用いるツールは「定理証明系」と呼ばれ、Event-Bも定理証明系のツールである。2つめの方法はモデル検査ともよばれる。ソフト開発者にとってモデル検査は理解しやすいと思う。モデルの構築はプログラムを作るのに近い。その形式手法の言語を覚え、ツールを使いこなすことさえできるようになれば割と習得しやすいと思う。
それに対し、1つめ「定理証明系」は形式手法言語やツールを使いこなすことの難しさに加え、数理論理学の知識が求められる。命題論理、述語論理、証明とはなんぞや、集合論といったことについて知っていることが前提として求められている。
現場のソフト開発者が、このようなスキルをサブセットとして持っていることはあまりないだろう。実際、自分も大学でProlog論理回路の講座でかじった程度でしかない。そのような知識を持っていなくともソフトウェアを作ることはできる。定理証明系のツールが流行らないのはこの点が問題なんだろうな。
というわけで今更ながら論理学からおさらいしている。コンピュータサイエンス自体は数理論理学の恩恵を多大に受けているのに、そこでソフトを作っている人は数理論理学をあまりわかってないとは何とも皮肉な話。

入門!論理学 (中公新書)

入門!論理学 (中公新書)

上記の本は論理学の本。論理学なのに記号がほとんど出てこない。しかも、縦読みである。入門と書いてあるが実際に初心者が読むにはハードルが高いと思う。お堅い本で勉強しようとしたが押し寄せる記号の波にうちのめされてしまった人にこそ読んでほしい本。お堅い本の隣にこの本をおいて併せて読み進めていくと互いに補い合い理解が深まると思う。 ちなみに、数理論理学については以下のサイトが参考になる。

Introduction to Mathematical Logic

Who killed Aunt Agatha?

Who killed Aunt Agatha?

Event-Bのハンドブックを読み進めているのだが、アガサパズルというチュートリアルが2.6章にある。

Someone in Dreadsbury Mansion killed Aunt Agatha.
Agatha, the butler, and Charles live in Dreadsbury Mansion and are the only ones to live there.
A killer always hates, and is no richer than his victim.
Charles hates no one that Agatha hates.
Agatha hates everybody except the butler.
The butler hates everyone not richer than Aunt Agatha.
The butler hates everyone whom Agatha hates.
No one hates everyone.
Who killed Agatha?

上記のような問題なんだけれど肝心の証明がいきなり「殺人者はアガサ」となっていて、どうしてアガサなのかわからない。日本語に訳すとこんな感じ。

Dreadbury Mansionに住んでいるだれかが、アガサおばさんを殺しました。
アガサ、執事、およびチャールズは、Dreadbury Mansionに住んでいて、そこに住んでいる唯一の人々です。
殺人者は、彼の犠牲者がいつも嫌いであり、彼の犠牲者より決して金持ちではありません。
チャールズはアガサおばさんが嫌いである人をだれも嫌いではありません。
アガサは執事以外の皆が嫌いです。
執事はアガサおばさんより金持ちでない人は皆嫌いです。
執事はアガサおばさんが嫌いな人は皆嫌いです。
だれも全員を嫌いではありません。

以下のように考えたけど正しいのだろうか。

  • アガサは執事以外の皆が嫌い。

アガサは自分を含め執事以外は嫌いであることがわかる(アガサ自身は執事ではない)。

  • チャールズはアガサおばさんが嫌いである人をだれも嫌いではありません。

アガサ自身がアガサを嫌っていることからチャールズはアガサを嫌いではない。

  • 殺人者は、彼の犠牲者がいつも嫌いであり、彼の犠牲者より決して金持ちではありません。

殺人者はアガサを嫌っていることがわかる。チャールズはアガサを嫌いではないから殺人者ではない。残るのはアガサと執事。そして殺人者は犠牲者より金持ちではない。

  • 執事はアガサおばさんほど金持ちでない人は皆嫌いです。

殺人者はアガサより金持ちではないことから執事が嫌っている人物となる。

  • アガサは執事以外の皆が嫌い。
  • 執事はアガサおばさんが嫌いな人は皆嫌いです。

執事は執事自身のことは嫌いではない(執事はチャールズとアガサが嫌いなので自分自身も嫌いだとすべての人が嫌いとなってしまう。なので自分自身は嫌いではないとなる)。執事が自分自身を嫌いではないこと、アガサほど金持ちでない人は嫌いであることから執事自身はアガサより金持ちであること(!)になり殺人者にはならない(殺人者はアガサほど金持ちではない)。よって殺人者はアガサとなる(アサガは自分自身より金持ちではない)。

ASCII表記一覧

数学記号をEvent-Bで入力するためのASCII表記一覧表。

記号論理における記号

記号 LaTex 英語 ASCII表記 意味 補足
\top \top False true
\bot \bot True false
\wedge \wedge Conjunction & 論理積または連言 P \wedge Q (PかつQ)
\vee \vee Disjunction or 論理和または選言 P \vee Q (PまたはQ)
\neg \neg Negation not 否定
\Rightarrow \Rightarrow Implication => 含意 P \Rightarrow Q (PならばQ)
\Leftrightarrow \Leftrightarrow Equivalence <=> 同値 真偽が必ず一致することを意味する。
\forall \forall Universal quantication ! 全称限量記号 \forall x (すべてのxについて)
\exists \exists Existential quantication # 存在限量記号 \exists x (あるxが存在する)
= = Equality = 等号
\neq \neq Inequality /= 不等号

集合論における記号

S,Tは任意の集合を表す。

記号 LaTex 英語 ASCII表記 意味 補足
[tex:] Set-builder notation (Set comprehension) 集合の内包定義
x \in S \in Set membership x : S 集合に属すること xが集合Sに属することを示す。
x \notin S \notin Set non-membership x /: S 集合に属さないこと

包含関係

記号 LaTex 英語 ASCII表記 意味 補足
S \subseteq T \subseteq Subset S <: T 部分集合
S \not\subseteq T \not\subseteq Not a subset S /<: T 部分集合ではない
S \subset T \subset Proper subset S <<: T 真部分集合
S \not\subset T \not\subset Not a proper subset S /<<: T 真部分集合ではない

集合演算

記号 LaTex 英語 ASCII表記 意味 補足
S \cup T \cup Union S \/ T 和集合 集合Sと集合Tの和集合を表す。
S \cap T \cap Intersection S /\ T 共通部分 集合 S と集合 T の共通部分を表す。
S \setminus T \setminus Difference S \ T 差集合 集合 S から集合 T を除いた差集合を表す。
S \times X \times Cartesian product S ** T 直積集合
[tex:]

関係(写像)

いくつかの記号のLaTexでの書き方がわからない。amsmathというパッケージにも含まれていない記号のようだ。 こちらLaTexのコードが記載されている。が、はてなブログの機能では表示できない。

記号 LaTex 英語 ASCII表記 意味 補足
\mapsto \mapsto Ordered pair |-> 順序対
\leftrightarrow \leftrightarrow Relations <-> 関係
[tex:] Total relation <<-> 全域関係
[tex:] Surjective relation <->> 全射関係
[tex:] Total surjective relation <<->> 全域全射関係

特定の集合

記号 LaTex 英語 ASCII表記 意味 補足
\emptyset \emptyset Empty set {} 空集合
\mathbb{Z} \mathbb{Z} The set of integer numbers INT 整数
\mathbb{N} \mathbb{N} The set of natural numbers NAT 自然数
\mathbb{N}_1 \mathbb{N}_1 The set of positive natural numbers NAT1 0を除いた自然数
\mathbb{P}(S) \mathbb{P}(S) The set of all subsets (Powerset) POW(S) べき集合
\mathbb{P}_1(S) \mathbb{P}_1(S) Non-empty subsets POW1(S) 空ではない部分集合の集合

とりあえず、ここまで。 時間があれば後から加筆する予定。

以下参考にしたサイト。

http://www002.upp.so-net.ne.jp/latex/kigou_all.html

http://hooktail.sub.jp/tex/symbol/amsmathsymbols.html

http://wiki.event-b.org/index.php/Rodin_Keyboard_User_Guide