Divide-by-zero Exception Raising
via Branch Coverage
Neelesh Bhattacharya, Abdelilah Sakti, Giuliano Antoniol
Yann-Ga¨el Gu´eh´eneuc, and Gilles Pesant
Department of Computer and Software Engineering
Ecole Polytechnique de Montr´eal, Qu´ebec, Canada ´
{neelesh.bhattacharya,abdelilah.sakti,giuliano.antoniol,yann-gael.
gueheneuc,gilles.pesant}@polymtl.ca
Abstract. In this paper, we discuss how a search-based branch coverage
approach can be used to design an effective test data generation approach,
specifically targeting divide-by-zero exceptions. We first propose
a novel testability transformation combining approach level and branch
distance. We then use different search strategies, i.e., hill climbing, simulated
annealing, and genetic algorithm, to evaluate the performance of
the novel testability transformation on a small synthetic example as well
as on methods known to throw divide-by-zero exceptions, extracted from
real world systems, namely Eclipse and Android. Finally, we also describe
how the test data generation for divide-by-zero exceptions can be formulated
as a constraint programming problem and compare the resolution
of this problem with a genetic algorithm in terms of execution time. We
thus report evidence that genetic algorithm using our novel testability
transformation out-performs hill climbing and simulated annealing and
a previous approach (in terms of numbers of fitness evaluation) but is
out-performed by constraint programming (in terms of execution time).
Keywords: Exception raising, test input data generation, evolutionary testing.
1 Introduction
Consequences of uncaught or poorly-managed exception may be dire: program
crashes and/or security breaches. For embedded systems, an exception can be
caused by, for example, unexpected values read from a sensor and can cause
catastrophic effects. Indeed, poorly-managed exceptions are at the root of the
1996 Arianne 5 incident during which an uncaught floating-point conversion exception
led to the rocket self-destruction 40 seconds after launch. In aerospace, as
in other domains requiring highly-dependable systems such as medical systems,
poorly-managed exceptions may have severe consequences to human beings or
lead to great economic losses.
In software engineering, testing have traditionally been one of the main activities
to obtain highly-dependable systems. Testing activities consume about
50% of software development resources [15] and any technique reducing testing
2 N. Bhattacharya, A. Sakti, G. Antoniol, Y.-G. Gu´eh´eneuc, G. Pesant
costs is likely to reduce the software development costs as a whole. Although,
exhaustive and thorough testing is often infeasible because of the possibly infi-
nite execution-space and its high costs with respect to tight budget limitations,
other techniques, such as code inspection are even costlier, though more effective.
Therefore, testing activities should focus on the kinds of defects that, if
were to slip into some deployed safety or mission-critical systems, may lead the
systems to crash with possibly catastrophic consequences.
Consequently, we follow the work by Tracey et al. [18] on the generation of
test data to raise exceptions and by others [14, 21, 3] on branch coverage criteria
to propose a novel approach to generate test data for raising divide-by-zero
exceptions for integers. In [18], the authors proposed to transform a target system
so that the problem of generating test data to raise some exceptions becomes
equivalent to a problem of branch coverage. They transform statements possibly
leading to exceptions into branches with sufficient guard conditions. They then
applied evolutionary testing to the transformed system to generate test data by
traversing the branches and firing the exceptions. However, in their proposal, the
search was solely guided by its branch distance [12], i.e., the number of traversed
control nodes, which may lead the search to behave like a random search.
In this paper, we propose to apply both branch distance as well as approach
level [12] to generate test data to raise divide-by-zero exceptions for integers.
The use of both guiding criteria, i.e., branch distance and approach level, in
an additive fitness function similar to previous work [21], to fire divide-by-zero
exceptions yields to a reduction of the number of fitness evaluations needed to
reach a given target statement [14, 12]. To the best of our knowledge, this paper
presents the first use of such a fitness function to generate test data to raise
divide-by-zero exceptions.
We apply the novel testability transformation to generate test input data
leading to divide-by-zero exceptions on the exemplary code presented in [18] and
on two methods extracted from Eclipse and Android. We report the comparison
of several meta-heuristic search techniques, i.e., hill climbing (HC), simulated
annealing (SA), and genetic algorithm (GA), with a random search (RND) and
with constraint programming (CSP) on the three exemplary code samples. We
thus show that the GA technique out-performs the other techniques but performs
worse than the CSP technique.
Thus, the contributions of this paper are as follows:
– We propose to adopt both branch distance and approach level to generate
test input data to fire divide-by-zero exceptions.
– We report the performance of HC (in three variants), SA, GA, and CSP on
three systems, one synthetic and two real-world, from which we extracted
three and two divide-by-zero exception-prone methods respectively.
The remainder of the paper is organized as follows: Section 2 describes the
novel testability transformation. Section 3 describes the empirical study along
with its settings. Sections 4 and 5 describe and discuss the results of the study.
Section 6 summarizes related work. Section 7 concludes with some future work.
Divide-by-zero Exception Raising via Branch Coverage 3https://pdfs.semanticscholar.org/38dc/862dc630901f62ebfb3b839698f65e6a7d8a.pdf
再生核研究所声明 148(2014.2.12) 100/0=0, 0/0=0 - 割り算の考えを自然に拡張すると ― 神の意志
100割る0 の意味を質問されたが(なぜ 100÷0は100ではないのか? なぜ 100÷1は100なのか… 0とは何...aitaitokidakenimoさん)、これは、定義によれば、その解、答えが有るとして、a と仮に置けば、 100=a x0 = 0 で矛盾、すなわち、解は、答えは存在しないとなる。
方程式 a x0= b は b=0 でなければ 解は無く、答えが求まらない。(特に、bが0ならば、解 a は 何でも良いと言うことに成る。)
解が、存在しなかったり、沢山の解が有ったりすると言う、状況である。
そこで、何時でも解が存在するように、しかも唯一つに定まるように、さらに 従来成り立っていた結果が そのまま成り立つように(形式不変の原理)、割り算の考えを拡張できないかと考えるのは、数学では よくやることである。数学の世界を 美しくしたいからである。
実際、文献の論文で 任意関数で割る概念を導入している。
現在の状況では、b 割るa の意味を ax – b の2乗を最小にする x で、しかも x の2乗を最小にする数 x で定義する。後半の部分が無いと、a が0の場合 x が定まらない。後半が有ると0として、唯一つに定まる。この意味で割り算の意味を考えれば、100割る0は 0 であるとなる。
上記で もちろん、2乗を最小にする の最小値が0である場合が、 普通の割り算の解、
b 割るa を与える。
もちろん、我々の意味で、0割る0は 曖昧なく、解は唯一つに定まって、0となる。
f 割る g を ロシアの著名な数学者 チコノフの考えた正則化法 と 再生核の理論 を併用すると 一般的な割り算を 任意関数g で定義できて、上記の場合は、100割る0は 0 という解に成る。
すなわち、解が存在しなかった場合に、割り算の意味を 自然に拡張すると 唯一つに解は存在して それは0であると言う、結果である。
上記で、ax – b の2乗を最小にする x で、と考えるのは、近似の考え方から、極めて自然と考えられるが、さらに、x の2乗を最小にする数 x とは、神は、最も簡単なものを選択する、これはエネルギー最小のもの、できれば横着したい という 世に普遍的に存在する 神の意志 が現れていると考えられる(光は、最短時間で到達するような経路で進むという ― フェルマーの原理)、神が2を愛している、好きだ とは 繰り返し述べてきた(神は 2を愛し給う)(http://www.jams.or.jp/kaiho/kaiho-81.pdf)。
これで、0で割るときの心配が無くなった。この考えの 実のある展開と応用は多い。
― 哲学とは 真智への愛 であり、真智とは 神の意志 のことである。哲学することは、人間の本能であり、それは 神の意志 であると考えられる。愛の定義は 声明146で与えられ、神の定義は 声明122と132で与えられている。―
以 上
文献:
Castro, L.P.; Saitoh, S. Fractional functions and their representations. Complex Anal. Oper. Theory 7, No. 4, 1049-1063 (2013).
ゼロの発見には大きく分けると二つの事が在ると言われています。
一つは数学的に、位取りが出来るということ。今一つは、哲学的に無い状態が在るという事実を知ること。http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1462816269
世界中で、ゼロ除算は 不可能 か
可能とすれば ∞ だと考えられていたが・・・
しかし、ゼロ除算 はいつでも可能で、解は いつでも0であるという意外な結果が得られた。
原点を中心とする単位円に関する原点の鏡像は、どこにあるのでしょうか・・・・
∞ では
無限遠点はどこにあるのでしょうか・・・・・
無限遠点は存在するが、無限大という数は存在しない・・・・
ゼロ除算(1/0=0)は、ピタゴラスの定理(a2 + b2 = c2 )を超えた基本的な結果であると考えられる。
地球平面説→地球球体説
天動説→地動説
何年かかったでしょうか????
1/0=∞若しくは未定義 →1/0=0
何年かかるでしょうか????
Title page of Leonhard Euler, Vollständige Anleitung zur Algebra, Vol. 1 (edition of 1771, first published in 1770), and p. 34 from Article 83, where Euler explains why a number divided by zero gives infinity.
https://notevenpast.org/dividing-nothing/
もし1+1=2を否定するならば、どのような方法があると思いますか? http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12153951522 #知恵袋_
一つの無限と一つの∞を足したら、一つの無限で、二つの無限にはなりません。
割り算のできる人には、どんなことも難しくない
世の中には多くのむずかしいものがあるが、加減乗除の四則演算ほどむずかしいものはほかにない。
ベーダ・ヴェネラビリス
数学名言集:ヴィルチェンコ編:松野武 山崎昇 訳大竹出版1989年
数学で「A÷0」(ゼロで割る)がダメな理由を教えてください。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1411588849 #知恵袋_
割り算を掛け算の逆だと定義した人は、誰でしょう???
0×0=0・・・・・・・・・だから0で割れないと考えた。
唯根拠もなしに、出鱈目に言っている人は世に多い。
multiplication・・・・・増える 掛け算(×) 1より小さい数を掛けたら小さくなる。 大きくなるとは限らない。
ビッグバン宇宙論と定常宇宙論について、http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1243254887 #知恵袋_
ゼロ除算(100/0=0, 0/0=0)が、当たり前だと最初に言った人は誰でしょうか・・・・ 1+1=2が当たり前のように
『ゼロをめぐる衝突は、哲学、科学、数学、宗教の土台を揺るがす争いだった』 ⇒ http://ameblo.jp/syoshinoris/entry-12089827553.html … … →ゼロ除算(100/0=0, 0/0=0)が、当たり前だと最初に言った人は誰でしょうか・・・ 1+1=2が当たり前のように、
1÷0=0 1÷0=∞・・・・数ではない 1÷0=不定・未定義・・・・狭い考え方をすれば、できない人にはできないが、できる人にはできる。
アラビア数字の伝来と洋算 - tcp-ip
明治5年(1872)
http://www.tcp-ip.or.jp/~n01/math/arabic_number.pdf
ゼロ除算の証明・図|ysaitoh|note(ノート) https://note.mu/ysaitoh/n/n2e5fef564997
Q)ピラミッドの高さを無限に高くしたら体積はどうなるでしょうか??? A)答えは何と0です。 ゼロ除算の結果です。
ゼロ除算は1+1より優しいです。 何でも0で割れば、0ですから、簡単で美しいです。 1+1=2は 変なのが出てくるので難しいですね。
∞÷0はいくつですか・・・・・・・
∞とはなんですか・・・・・・・・
分からないものは考えられません・・・・・
1人当たり何個になるかと説いていますが、1人もいないのですから、その問題は意味をなさない。
よってこれは、はじめから問題になりません。
ついでですが、これには数学的に確定した解があって それは0であるという事が、最近発見されました。
Reality of the Division by Zero z/0 = 0
http://www.ijapm.org/show-63-504-1.html
http://okmr.yamatoblog.net/
Einstein's Only Mistake: Division by Zero
http://refully.blogspot.jp/2012/05/einsteins-only-mistake-division-by-zero.html
再生核研究所声明171(2014.7.30)
掛け算の意味と割り算の意味 ― ゼロ除算100/0=0は自明である?
(2014.7.11小柴誠一、山根正巳氏との会合で、道脇裕氏の 割り算と掛け算は別であり、ゼロ除算100/0=0は自明であるとの考えを分析して得た考えを纏めたものである。)
ゼロ除算100/0=0は2014.2.2 偶然に論文出筆中に 原稿の中で発見したものである。チコノフ正則化法の応用として、自然に分数、割り算を拡張して得られたものであるが、歴史上不可能であるとされていること、結果がゼロであると言う意味で、驚嘆すべきことであること、さらに、高校生から小学生にも分る内容であると言う意味で、極めて面白い歴史的な事件と言える。そればかりか、物理学など世界の理解に大きな影響を与えることも注目される。詳しい経過などは 一連の声明を参照:
再生核研究所声明148(2014.2.12)100/0=0, 0/0=0 - 割り算の考えを自然に拡張すると ― 神の意志
再生核研究所声明154(2014.4.22)新しい世界、ゼロで割る、奇妙な世界、考え方
再生核研究所声明157(2014.5.8)知りたい 神の意志、ゼロで割る、どうして 無限遠点と原点が一致しているのか?
再生核研究所声明161(2014.5.30)ゼロ除算から学ぶ、数学の精神 と 真理の追究
再生核研究所声明163(2014.6.17)ゼロで割る(零除算)- 堪らなく楽しい数学、探そう零除算 ― 愛好サークルの提案
再生核研究所声明166(2014.6.20)ゼロで割る(ゼロ除算)から学ぶ 世界観
しかるに いろいろな人たちと広く議論しているところであるが、世界の指導的な数学者でさえ、高校生でも理解できる発表済みの論文 その後の結果について、現代数学の常識を変えるものであり、受け入れられない、と言ってきている。まことに不思議なことであり、如何に驚くべき結果であるかを示していると言える。
多くの数学者は、内容を理解せず、100/0=0 は100=0 x 0 =0 で矛盾であると即断している。しかるに論文は 100/0 は 割り算の意味を自然に拡張するとゼロの結果を得るのであって、ゼロ除算の結果は 100=0 x 0 =0を意味しないと説明している。 逆に、無限大、無限遠点は数と言えるかと問うている。
ところが面白いことに 既に3月18日付文書で、道脇裕氏は 掛け算と割り算は別であり、ゼロ除算100/0は 自明であると述べていた。しかし、その文書は、一見すると
矛盾や間違いに満ちていたので、詳しく分析してこなかった。しかるに上記7月11日の会合で、詳しい状況を聞いて、道脇氏の文書を解読して、始めて道脇氏の偉大な考えに気づいた。結論は、ゼロ除算100/0は分数、割り算の固有の意味から、自明であると言うことである。これはチコノフ正則化法や一般逆とは関係なく、分数、割り算の意味から、自明であるというのであるから、驚嘆すべき結果である。千年を越えて、未明であった真実を明らかにした意味で、極めて面白い知見である。またそれは、割り算が掛け算の逆であり、ゼロ除算は不可能であるという長い囚われた考えから、解放した考えであると評価できる。
原理は日本語の表現にあるという、掛け算は 足し算で定義され、割り算は 引き算で定義されるという。割り算を考えるのに 掛け算の考えは不要であるという。
実際、2 x3 は 2+2+2=6と繰り返して加法を用いて計算され、定義もできる。
割り算は、問題になっているので、少し詳しく触れよう。
声明は一般向きであるから、本質を分かり易く説明しよう。 そのため、ゼロ以上の数の世界で考え、まず、100/2を次のように考えよう:
100-2-2-2-,...,-2.
ここで、2 を何回引けるかと考え、いまは 50 回引いてゼロになるから分数は50であると考える。100を2つに分ければ50である。
次に 3/2 を考えよう。まず、
3 - 2 = 1
で、余り1である。そこで、余り1を10倍して、 同様に
10-2-2-2-2-2=0
であるから、10/2=5 となり
3/2 =1+0.5= 1.5
とする。3を2つに分ければ、1.5である。
これは筆算で割り算を行うことを 減法の繰り返しで考える方法を示している。a がゼロでなければ、分数b/aは 現代数学の定義と同じに定義される。
そこで、100/0 を上記の精神で考えてみよう。 まず、
100 - 0 = 100,
であるが、0を引いても 100は減少しないから、何も引いたことにはならず、引いた回数は、ゼロと解釈するのが自然ではないだろうか (ここはもちろん数学的に厳格に そう定義できる)。ゼロで割るとは、100を分けないこと、よって、分けられた数もない、ゼロであると考えられる。 この意味で、分数を定義すれば、分数の意味で、
100割るゼロはゼロ、すなわち、100/0=0である。(ここに、絶妙に面白い状況がある、0をどんどん引いても変わらないから、無限回引けると解釈すると、無限とも解釈でき、ゼロ除算は 0と無限の不思議な関係を長く尾を引いている。)
同様に0割る0は ゼロであること0/0=0が簡単に分かる。
上記が千年以上も掛かったゼロ除算の解明であり、 ニュートンやアインシュタインを悩ましてきたゼロ除算の簡単な解決であると 世の人は、受けいれられるであろうか?
いずれにしても、ゼロ除算z/0=0は 既に数学的に確定している と考えられる。そこで、結果の 世への影響 に関心が移っている。
以 上
文献:
M. Kuroda, H. Michiwaki, S. Saitoh, and M. Yamane,
New meanings of the division by zero and interpretations on 100/0=0 and on 0/0=0,
Int. J. Appl. Math. Vol. 27, No 2 (2014), pp. 191-198, DOI: 10.12732/ijam.v27i2.9.
S. Saitoh, Generalized inversions of Hadamard and tensor products for matrices, Advances in Linear Algebra \& Matrix Theory. Vol.4 No.2 (2014), 87-95.http://www.scirp.org/journal/ALAMT/
再生核研究所声明200(2015.1.16) ゼロ除算と複素解析の現状 ―佐藤超関数論との関係が鍵か?
正確に次のように公開して複素解析とゼロ除算の研究を開始した:
特異点解明の歩み100/0=0,0/0=0 関係者:
複素解析学では、1/0として、無限遠点が存在して、美しい世界です。しかしながら、1/0=0 は 動かせない真実です。それで、勇気をもって進まざるを得ない:― 哲学とは 真智への愛 であり、真智とは 神の意志 のことである。哲学することは、人間の本能であり、それは 神の意志 であると考えられる。愛の定義は 声明146で与えられ、神の定義は 声明122と132で与えられている。― 再生核研究所声明148.
私には 無理かと思いますが、世の秀才の方々に 挑戦して頂きたい。空論に付き合うのはまっぴらだ と考える方も多いかと思いますが、面白いと考えられる方で、楽しく交流できれば幸いです。宜しくお願い致します。 添付 物語を続けたい。2014.4.1.11:10
上記で、予想された難問、 解析関数は、孤立特異点で確定値をとる、が 自分でも予想しない形で解決でき、ある種の実体を捉えていると考えたのであるが、この結果自体、世のすべての教科書の内容を変える事件であるばかりではなく、確立されている無限遠点の概念に 新しい解釈を与えるもので、1次変換の美しい性質が、ゼロ除算の導入によって、任意の1次変換は 全複素平面を全複素平面に1対1 onto に写すという美しい性質に変わるが、 極である1点において不連続性が現れ、ゼロ除算は、無限を 数から排除する数学になっている。
6月、帰国後、気に成っていた、金子晃先生の 30年以上前に購入した超函数入門の本に 極めて面白い記述があり、佐藤超関数とゼロ除算の面白い関係が出てきた。さらに 特異積分におけるアダマールの有限部分や、コーシーの主値積分は、弾性体やクラック、破壊理論など広い世界で、自然現象を記述するのに用いられているが、面白いのは 積分が、もともと有限部分と発散部分に分けられ、 極限は 無限たす、有限量の形になっていて、積分は 実は、普通の積分ではなく、そこに現れる有限量を便宜的に表わしている。ところが、その有限量が実は、 ゼロ除算にいう、 解析関数の孤立特異点での 確定値に成っていることが分かった。これはゼロ除算の結果が、広く、自然現象を記述していることを示している。
現在まで、添付21ページの論文原稿について 慎重に総合的に検討してきた。
そこで、問題の核心、ゼロ除算の発展の基礎は、次の論点に有るように感じられてきた:
We can find many applicable examples, for example, as a typical example in A. Kaneko (\cite{kaneko}, page 11) in the theory of hyperfunction theory: for non-integers $\lambda$, we have
\begin{equation}
x_+^{\lambda} = \left[ \frac{-(-z)^{\lambda}}{2i \sin \pi \lambda}\right] =\frac{1}{2i \sin \pi \lambda}\{(-x + i0)^{\lambda}- (-x - i0)^{\lambda}\}
\end{equation}
where the left hand side is a Sato hyperfunction and the middle term is the representative analytic function whose meaning is given by the last term. For an integer $n$, Kaneko derived that
\begin{equation}
x_+^{n} = \left[- \frac{z^n}{2\pi i} \log (-z) \right],
\end{equation}
where $\log$ is a principal value: $ \{ - \pi < \arg z < +\pi \}$. Kaneko stated there that by taking a finite part of the Laurent expansion, the formula is derived.
Indeed, we have the expansion, for around $ n$, integer
$$
\frac{-(-z)^{\lambda}}{2i \sin \pi \lambda}
$$
\begin{equation}
= \frac{- z^n}{2\pi i} \frac{1}{\lambda -n} - \frac{z^n}{2\pi i} \log (-z )
- \left( \frac{\log^2 (-z) z^n}{2\pi i\cdot 2!} + \frac{\pi z^n}{2i\cdot 3!}
\right)(\lambda - n) + ...
\end{equation}
(\cite{kaneko}, page 220).
By our Theorem 2, however, we can derive this result (4.3) from the Laurant expansion (4.4), immediately.
上記ローラン展開で、\lambda に n を代入したのが ちょうど n に対する佐藤の超関数になっている。それは、ゼロ除算に言う、 孤立特異点における解析関数の極における確定値である。これはゼロ除算そのものと殆ど等価であるから、ローラン展開に \lambda = n を代入した意味を、上記の佐藤超関数の理論は述べているので 上記の結果を分析すれば、ゼロ除算のある本質を捉えることができるのではないかと考えられる。
佐藤超関数は 日本で生まれた、基本的な数学で 優秀な人材を有している。また、それだけ高級、高度化しているが、このような初歩的、基本的な問題に関係がある事が明らかになってきた。そこで、佐藤超関数論の専門家の方々の研究参加が望まれ、期待される。また、関係者の助言やご意見をお願いしたい。
ゼロ除算における新現象、驚きとは Aristotélēs の世界観、universe は連続である を否定して、強力な不連続性を universe の現象として示していることである。
以 上
ゼロの発見には大きく分けると二つの事が在ると言われています。
一つは数学的に、位取りが出来るということ。今一つは、哲学的に無い状態が在るという事実を知ること。http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1462816269
もし1+1=2を否定するならば、どのような方法があると思いますか? http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12153951522 #知恵袋_
一つの無限と一つの∞を足したら、一つの無限で、二つの無限にはなりません。
0 件のコメント:
コメントを投稿