Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
福井大学 情報・メディア学科 学士 研究発表
Search
tyabu12
February 12, 2016
0
25
福井大学 情報・メディア学科 学士 研究発表
tyabu12
February 12, 2016
Tweet
Share
More Decks by tyabu12
See All by tyabu12
Git セミナー
tyabu12
0
46
Not a Number of Floating Point Problems
tyabu12
0
51
Type-Safe Modular Hash-Consing (Chapter 2)
tyabu12
0
49
Automating the Verification of Floating-Point Programs
tyabu12
0
45
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
246
12k
Six Lessons from altMBA
skipperchong
28
3.9k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
Art, The Web, and Tiny UX
lynnandtonic
301
21k
Build your cross-platform service in a week with App Engine
jlugia
231
18k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
182
54k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
19k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Building an army of robots
kneath
306
45k
Why Our Code Smells
bkeepers
PRO
337
57k
Embracing the Ebb and Flow
colly
86
4.8k
Transcript
ࣗಈతɾରతͳ ఆཧূ໌ثΛ༻͍ͨ ۠ؒԋࢉϥΠϒϥϦͷݕূ ଔۀݚڀൃද Ҫେֶ ֶ෦ ใɾϝσΟΞֶՊ ੴҪݚڀࣨ ൃදऀ༅ஐਔ ֶ੶൪߸
1
എܠ ۠ؒԋࢉ ܭࢉػ্Ͱߴ৴པʹܭࢉΛ͢Δํ๏ ۠ؒԋࢉϥΠϒϥϦ #PPTU $ LW #PPTUվྑ */5-"# ."5-"#
LWͷ࣮ྫ ۠ؒಉ࢜ͷֻ͚ࢉͷΞϧΰϦζϜͷൈਮ ∀ ", $ ∈ &(() " ≤ 0 → " > 0 → $ ≤ 0 → $ ≤ 0 → "×$ ≈ [1("×$), ∆("×$)] 2
എܠ ۠ؒԋࢉ ܭࢉػ্Ͱߴ৴པʹܭࢉΛ͢Δํ๏ ۠ؒԋࢉϥΠϒϥϦ #PPTU $ LW #PPTUվྑ */5-"# ."5-"#
LWͷ࣮ྫ ۠ؒಉ࢜ͷֻ͚ࢉͷΞϧΰϦζϜͷൈਮ ∀ ", $ ∈ &(() " ≤ 0 → " > 0 → $ ≤ 0 → $ ≤ 0 → "×$ ≈ [1("×$), ∆("×$)] 3 όάͷࠞೖՄೳੑ ϗϯτʹߴ৴པʁ
Ϟνϕʔγϣϯ ˠ ҆৺ͯ۠ؒ͠ԋࢉϥΠϒϥϦΛ͍͍ͨ ߴ৴པͳܭࢉ త ۠ؒԋࢉϥΠϒϥϦͷ࣮ͷਖ਼͠͞ͷݕূ 4
ఏҊख๏ 8IZʹΑΓࣗಈత ରతͳఆཧূ໌ث ΛΈ߹ΘͤͨϓϩάϥϜݕূ 5 ಛ • ༷͖ ϓϩάϥϜ͔Βݕূ݅ͷࣗಈੜ •
ॊೈͳূ໌ ·ͣࣗಈূ໌ ˠ ΓΛػցࢧԉͷରূ໌ • ূ໌ࡁΈϓϩάϥϜͷࣗಈΤϯίʔυ ˠ ূ໌ͨ͠ϓϩάϥϜΛͦͷ··࣮ߦͰ͖Δʂ
۠ؒԋࢉ ܭࢉػ্Ͱ ߴ৴པʹܭࢉΛ͢Δํ๏ දهͱఆٛ! = ! , ! ∶= %
∈ ℝ ! ≤ % ≤ ! } 6 •Լݶ ! ͱ ্ݶ ! ුಈখ ԼݶԼ͖ * ্ݶ্͖ ∆ ʹؙΊΔ ˠ ଘࡏ͢ΔͰ͋Ζ͏ਅͷղΛؚΈͳ͕Βܭࢉ •࣮ͷԋࢉಉ༷ʹ ࢛ଇԋࢉΛఆٛՄೳ Ճࢉͷఆٛͱ࣮ ! + - ≔ % + / % ∈ ! ∧ / ∈ -} ≈ [* ! + - , ∆( ! + - )] ࣮ͷܭࢉྫ 2,4 + −3,5 = [2 − 3, 4 + 5] = [−1,9]
ఆཧূ໌ث ཧֶʹج͖ͮఆཧͷଥੑΛఆ ఆཧͷྫ ∀", $ ∈ ℕ, " + $
= $ + " ަ๏ଇ 7 4.5ιϧόʔ ࣗಈఆཧূ໌ث • ιϧόʔ͕ࣗಈతʹݕূ • ۙͷϚγϯεϖοΫͷ্ˠ ੑೳ͕ඈ༂తʹ্ • ܭࢉ͕ݱ࣮త࣌ؒͰఀࢭ͠ͳ͍߹͕͋Δ ఆཧূ໌ࢧԉܥ $PR ରఆཧূ໌ث • ਓͷखʹΑΔରূ໌ • 4.5ιϧόʔͰূ໌Ͱ͖ͳ͍߹ʹ$PRΛ͏
ॳظ݅ Λຬͨ͢ ϓϩάϥϜ Λ࣮ߦͯ͠ఀࢭ ࣄޙ݅ Λຬͨ͢ ԋ៷త ϓϩάϥϜݕূ 8 ༷͖ϓϩάϥϜ͕ਖ਼͍͜͠ͱΛ
ԋ៷తͳਪ )PBSFཧ ʹΑΓূ໌ ॳظ݅ɺࣄޙ݅ཧࣜ ϓϩάϥϜஞ࣍ݴޠͷจ ϓϩάϥϜ͕ਖ਼͍͠
8IZϓϥοτϑΥʔϜ ༷͖ ϓϩάϥϜ ݕূ݅ͷ ܭࢉ ূ໌ثʹΑΔ ଥੑఆ 8IZݴޠ 9 ԋ៷త
ϓϩάϥϜݕূͷͨΊʹ։ൃ • ࣮ුಈখͳͲΛѻ͑Δඪ४ϥΠϒϥϦ • ෳͷఆཧূ໌ث 4.5ιϧόʔ $PR Λར༻Մೳ • (6*͑Δʂ ϓϩάϥϜͷਖ਼͠͞ͷূ໌Λ ΄΅ࣗಈԽʂ
ྫՃࢉԋࢉͷݕূ ࣮ͷΈ 10 type interval = { inf: double; sup:
double; } let add (X Y: interval) : interval = { inf = add_down X.inf Y.inf; sup = add_up X.sup Y.sup; } ! + # ≈ [&(! + #), ∆(! + Y)] ࣮
ྫՃࢉԋࢉͷݕূ ༷͖ 11 type interval = { inf: double; sup:
double; } invariant { inf ≤ sup } let add (X Y: interval) : interval = ensures { forall x y: real. (in x X ∧ in y Y) -> in (x + y) result } { inf = add_down X.inf Y.inf; sup = add_up X.sup Y.sup; } ᶃ ৗʹʮԼݶ ≤ ্ݶʯ ᶄʮ# ∈ % ∧ & ∈ ' → # + & ∈ % + 'ʯ
ྫՃࢉԋࢉͷݕূ ༷͖ ҙͷ۠ؒ 9 : ʹର͠ ࣮ͷܭࢉΛͨ͠ͱ͖ ݁Ռͷ۠ؒ ࣄޙ݅ᶄ Λຬ͔ͨ͢ʁ
·ͨ ۠ؒৗʹ ݅ᶃ Λຬ͔ͨ͢ʁ 12 type interval = { inf: double; sup: double; } invariant { inf ≤ sup } let add (X Y: interval) : interval = ensures { forall x y: real. (in x X ∧ in y Y) -> in (x + y) result } { inf = add_down X.inf Y.inf; sup = add_up X.sup Y.sup; } ᶃ ৗʹʮԼݶ ≤ ্ݶʯ ᶄʮ# ∈ % ∧ & ∈ ' → # + & ∈ % + 'ʯ ༷
Ճࢉԋࢉͷݕূ 4.5ιϧόʔ "MU&SHP Ͱূ໌Ͱ͖ͨ 13 4.5ιϧόʔʹΑΔՃࢉͷݕূ݁Ռ 8IZ (6*
ࢉԋࢉͷݕূ 4.5ιϧόʔ ͰҰ ෦ͷ߹Ͱ͔ࣗ͠ಈূ ໌Ͱ͖ͣ 14 4.5ιϧόʔʹΑΔׂޙͷݕ ূ݅ͷݕূ݁Ռ 8IZ (6*
ࢉԋࢉͷݕূ 4.5ιϧόʔ ͰҰ ෦ͷΈͰ͔ࣗ͠ಈূ໌ Ͱ͖ͣ ˠ $PRʹΑΔରূ ໌ 15 8IZ͕ࢉͷݕূϓϩάϥϜ͔Β
ࣗಈܭࢉͨ͠ $PR༻ͷݕূ݅ $PR*%&
ࢉԋࢉͷݕূ 4.5ιϧόʔ ͰҰ ෦ͷΈͰ͔ࣗ͠ಈূ໌ Ͱ͖ͣ ˠ $PRʹΑΔରূ ໌ ˠ ӈΛূ໌͢ΕΑ
͍ ্෦લఏͰԼ ͕ূ໌͖͢ఆཧ 16 ཧޙͷ $PR༻ͷݕূ݅ $PR*%&
ݕূ݁Ռ ۠ؒಉ࢜ͷ࢛ଇԋࢉͷ࣮Λݕূͨ͠ 17 ݕূ݁Ռ • Λ࣮ real ͱͨ۠ؒ͠ ˠ
શͯূ໌ • Λුಈখ double ͱͨ۠ؒ͠ ˠ Ճࢉͱݮࢉূ໌ ࢉҰ෦ আࢉূ໌Ͱ͖ͣ
18 ) ! $
+ 2 2 0 0 − 2 2 0 0 × 22 13 9 0 ÷ 8 0 8 0 : "% $$#&'( ࢛ଇԋࢉͷݕূ݁Ռ real
19 ) ! $
+ 2 2 - 0 − 2 2 - 0 × 30 16 - 14 ÷ 12 0 - 12 ࢛ଇԋࢉͷݕূ݁Ռ double : "% $$#&'( ؙΊಛघͳ ແݶେͳͲ ʹΑΓ ݕূ͕͔݅ͳΓෳࡶʹͳΓɺରূ໌Ͱ͖ͳ͔ͬͨ
۠ؒԋࢉͷݕূ ۠ؒಉ࢜ͷ࢛ଇԋࢉͷ࣮Λ༻͍ͨ ϓϩάϥϜΛݕূΛͨ͠ 20 ݕূ݁Ռ • ۠ؒͱͷੵ real double
ˠ ূ໌Ͱ͖ͨ • ྦྷ real double ˠ ূ໌Ͱ͖ͨ • ฏํࠜ real ˠ ূ໌Ͱ͖ͨ • ฏํࠜ double) ˠ ূ໌Ͱ͖ͳ͔ͬͨ
࢛ଇԋࢉͷ࣮Λ༻͍ͨ ϓϩάϥϜͷݕূ݁Ռ real 21 !
21 21 0 0 10 10 0 0 11 10 1 0
࢛ଇԋࢉͷ࣮Λ༻͍ͨ ϓϩάϥϜͷݕূ݁Ռ double 22 !
21 21 - 0 10 10 - 0 14 10 - 4
·ͱΊ ఆཧূ໌ثΛ༻͍ͨ۠ؒԋࢉϥΠϒϥϦͷ ݕূͷ֓ཁͱݕূ݁ՌΛࣔͨ͠ 23 ࠓճͷݕূʹΑΓূ໌Ͱ͖ͨͷ • ͕࣮ͷ۠ؒ • ۠ؒಉ࢜ͷ࢛ଇԋࢉ •
۠ؒಉ࢜ͷ࢛ଇԋࢉΛ༻͍ͨܭࢉϓϩάϥϜ • ͕ුಈখ۠ؒ • ۠ؒಉ࢜ͷՃࢉͱݮࢉ • ۠ؒಉ࢜ͷࢉͷ߹͚ͷҰ෦ • ۠ؒಉ࢜ͷ࢛ଇԋࢉΛ༻͍ͨܭࢉϓϩάϥϜ
ࠓޙͷ՝ •ුಈখͷ࢛ଇԋࢉͷূ໌ ݕূ݅ͷෳࡶԽ ˠ ରূ໌͔ͳΓ͍͠ ߟ͑ΒΕΔղܾҊ • ࣮Λิॿఆཧʹ༻͍ͨ4.5ιϧόʔʹΑΔূ໌ •Γͷ۠ؒԋࢉϥΠϒϥϦͷ࣮ͷݕূ •
ॳؔ ࡾ֯ؔͳͲ • ුಈখ ˠ จࣈྻ ͷม •ݕূࡁΈϓϩάϥϜ ˠ 0$BNM ͷΤϯίʔυ • 8IZʹුಈখ༻ͷΤϯίʔυυϥΠόʔ·ͩͳ͍ 24
ࢀߟจݙ • കଜߊ 4.5ιϧόɾ4.5ιϧόͷٕज़ͱԠ༻ ίϯϐϡʔλιϑτΣΞ QQ •
3BNPO&.PPSF FUBM Introduction to Interval Analysis 4*".1SFTT • :WFT#FSUPU BOE1JFSSF$BTUFSBO Interactive theorem proving and program develop-ment - Coq’art: The calculus of inductive constructions 4QSJOHFS7FSMBH 25