Slide 1

Slide 1 text

Egison ύλʔϯϚονʹΑΔ࠼৭ ക࡚௚໵@unaoyaʢגࣜձࣾ͢͏͕͘ͿΜ͔ʣ 2019 ೥ 11 ݄ 24 ೔ 1

Slide 2

Slide 2 text

ࣗݾ঺հ • ക࡚௚໵ • ೋ೥͙Β͍લ͔ΒָఱʢEgisonʣͰΞϧόΠτ • ਺ֶՊଔ • Egison journal vol1, vol2 ʹدߘ 2

Slide 3

Slide 3 text

಺༰ 1. ޒ৭ఆཧʹ͍ͭͯ 2. ϚονϟʔͷఆٛͱύλʔϯϚονͷྫ 3. ࠼৭ΞϧΰϦζϜͷ࣮૷ 4. ࣮ྫ 3

Slide 4

Slide 4 text

ޒ৭ఆཧʹ͍ͭͯ

Slide 5

Slide 5 text

࢛৭ఆཧ Theorem ஍ਤͷྡΓ߹͏ࠃ͸ҟͳΔ৭ͰృΔͱͯ͠ɺͲΜͳ஍ਤͰ΋ඞͣ ࢛৭Ҏ಺ͰృΓ෼͚Δ͜ͱ͕Ͱ͖Δɻ ূ໌͸೉͍͠ 4

Slide 6

Slide 6 text

ޒ৭ఆཧ Theorem ஍ਤͷྡΓ߹͏ࠃ͸ҟͳΔ৭ͰృΔͱͯ͠ɺͲΜͳ஍ਤͰ΋ඞ ͣޒ৭Ҏ಺ͰృΓ෼͚Δ͜ͱ͕Ͱ͖Δɻ ূ໌͸؆୯ 5

Slide 7

Slide 7 text

άϥϑ ஍ਤͷృΓ෼͚=ฏ໘άϥϑͷ௖఺ͷ࠼৭ ࠃ͕௖఺ɺ઀͍ͯ͠ΔࠃʹରԠͯ͠ลΛҾ͘ 6

Slide 8

Slide 8 text

ޒ৭ఆཧ Theorem ฏ໘άϥϑͷϊʔυΛྡ઀͢Δϊʔυͷ৭͕ҟͳΔΑ͏ʹޒ৭Ͱ ࠼৭͢Δ͜ͱ͕ՄೳͰ͋Δɻ 7

Slide 9

Slide 9 text

ূ໌ ϊʔυͷݸ਺ʹ͍ͭͯͷؼೲ๏ Lemma ฏ໘άϥϑʹ͸ඞͣ࣍਺ 5 ҎԼͷϊʔυ͕ଘࡏ͢Δ ิ୊ΑΓ࣍਺ 5 ҎԼ͕ଘࡏ͢ΔͷͰɺͦͷΑ͏ͳϊʔυ v ΛҰͭ બͿɻv Λআ͍ͨάϥϑ͸ϊʔυͷݸ਺͕ҰͭݮΔͷͰؼೲ๏ͷ Ծఆ͔Β৚݅Λຬͨ͢Α͏ʹ࠼৭Մೳɻ 8

Slide 10

Slide 10 text

ূ໌ ݩͷάϥϑͰϊʔυ v ͷ৭ΛృΓ·͢ɻ v ͷ࣍਺͸ 5 ҎԼͰ͕͢ɺपΓͷ৭͕ 4 ৭ҎԼͰ͋Ε͹࢒͍ͬͯ Δ৭Λ v ʹృΕ͹࠼৭׬ྃɻ 9

Slide 11

Slide 11 text

৔߹෼͚ v ͷपΓͷϊʔυͷ৭͕͢΂ͯҟͳΔ 5 ৭ʹͳͬͨ৔߹ɺҎԼͷ ೋͭͷ৔߹ʹ෼͚ͯपΓͷϊʔυͷ৭ΛృΓସ͑·͢ɻਤͷΑ͏ ʹ൪߸Λৼͬͯɺ1 ͱ 3 ʹ஫໨͠·͢ɻ 1. ৭ 1 ͱ 3 ͷΈΛ୧ͬͯͭͳ͙͜ͱ͕Ͱ͖ͳ͍৔߹ 2. ৭ 1 ͱ 3 ͷΈΛ୧ͬͯͭͳ͙͜ͱ͕Ͱ͖Δ৔߹ 10

Slide 12

Slide 12 text

1 ͱ 3 ͷΈΛ୧ͬͯͭͳ͙͜ͱ͕Ͱ͖ͳ͍৔߹ ϊʔυ 1 ͔Β৭ 3 ͱ৭ 1 ͷΈΛ௨ͬͯͰ͖Δ෦෼ʹ͍ͭͯ৭ 1 ͱ ৭ 3 ΛೖΕସ͑Δɻ͢ΔͱબΜͩϊʔυͷपΓͷ৭͕ 4 ৭ʹͳΔ ͷͰ࠼৭Մೳɻ 11

Slide 13

Slide 13 text

1 ͱ 3 ͷΈΛ୧ͬͯͭͳ͙͜ͱ͕Ͱ͖Δ৔߹ ฏ໘άϥϑͳͷͰϊʔυ 2 ͱϊʔυ 4 ͕৭ 2 ͱ৭ 4 ͷΈͰܨ͕Β ͳ͍ɻϊʔυ 2 ͔Β৭ 2 ͱ৭ 4 ͷΈΛ௨ͬͯͰ͖Δ෦෼ͷ৭ͷ 2 ͱ 4 ΛೖΕସ͑·͢ɻ͢ΔͱબΜͩϊʔυͷपΓͷ৭͕ 4 ৭ʹͳ ΔͷͰ࠼৭ՄೳͰ͢ɻ 12

Slide 14

Slide 14 text

άϥϑͷύλʔϯϚον

Slide 15

Slide 15 text

άϥϑσʔλͷྫ 1 (define $graph-data 2 {[[1 Nothing] {[2 Nothing]}] 3 [[2 Nothing] {[1 Nothing]}]}) 4 5 (define $graph-data2 6 {[[1 Nothing] {[2 (Just 1)]}] 7 [[2 (Just 1)] {[3 (Just 2)] [1 Nothing]}] 8 [[3 (Just 2)] {[4 (Just 1)] [2 (Just 1)]}] 9 [[4 (Just 1)] {[5 (Just 2)] [3 (Just 2)]}] 10 [[5 (Just 2)] {[4 (Just 1)]}]}) 13

Slide 16

Slide 16 text

node Ϛονϟʔ 1 (define $node [integer (maybe integer)]) 2 (define $graph (set [node (list node)])) node Ϛονϟʔ͸ integer ͱ maybe integer ͷ tuple ͱͯ͠ ఆٛ͠·͢ɻ࣮ࡍͷσʔλͱͯ͠͸ɺ࠷ॳͷ integer ͕ϊʔυͷ id ͰɺޙΖͷ maybe integer ͸ͦͷϊʔυͷ৭Ͱ͢ɻ৭ͷ໊લ Λ੔਺ʹ͓͖ͯ͠ɺ৭͕ృΒΕ͍ͯΔ৔߹ʹ͸ Just integer Ͱ ৭͕ృΒΕ͍ͯͳ͍৔߹͸ Nothing Ͱ͢ɻ 14

Slide 17

Slide 17 text

graph Ϛονϟʔ 1 (define $node [integer (maybe integer)]) 2 (define $graph (set [node (list node)])) graph Ϛονϟʔ͸্Ͱఆٛͨ͠ node ͱ node ͷ list ͷ tuple ͷ set ͱͯ͠ఆٛ͠·͢ɻάϥϑͷ֤ϊʔυ͔Βܨ͕͍ͬͯΔ ϊʔυͨͪͷ৘ใΛ list node ͱͯ͠ɺͦΕΛूΊͨ΋ͷ͕άϥ ϑͰ͢ɻ 15

Slide 18

Slide 18 text

Ϛονϟʔͷ࢖༻ྫ 1 (define $graph-data2 2 {[[1 Nothing] {[2 (Just 1)]}] 3 [[2 (Just 1)] {[3 (Just 2)] [1 Nothing]}] 4 [[3 (Just 2)] {[4 (Just 1)] [2 (Just 1)]}] 5 [[4 (Just 1)] {[5 (Just 2)] [3 (Just 2)]}] 6 [[5 (Just 2)] {[4 (Just 1)]}]}) 7 ৭ 1 ͷϊʔυ id ΛશͯऔΓग़͢ίʔυ͸ҎԼͷ௨ΓͰ͢ɻ 1 (define $c (Just 1)) 2 (match-all graph-data2 graph 3 [ id]) 4 ;{2 4} 5 16

Slide 19

Slide 19 text

Ϛονϟʔͷ࢖༻ྫ 1 (define $graph-data2 2 {[[1 Nothing] {[2 (Just 1)]}] 3 [[2 (Just 1)] {[3 (Just 2)] [1 Nothing]}] 4 [[3 (Just 2)] {[4 (Just 1)] [2 (Just 1)]}] 5 [[4 (Just 1)] {[5 (Just 2)] [3 (Just 2)]}] 6 [[5 (Just 2)] {[4 (Just 1)]}]}) 7 ϊʔυ id3 ͷ৘ใΛऔΓग़͢ίʔυ͸ҎԼͷ௨ΓͰ͢ɻ 1 (match graph-data2 graph 2 {[ node-info] 3 [_ 0]}) 4 ;{[4 {1}] [2 {1}]} 5 17

Slide 20

Slide 20 text

rewrite-node ؔ਺ id ͕ n ͷϊʔυΛࢦఆ͞Εͨ৭ c ʹॻ͖׵͑Δɻ 1 (define $node [integer (maybe integer)]) 2 node Ϛονϟʔ͸ id ͱ৭ͷ૊Λදݱ͢Δɻ 1 (match n node 2 {[[,id _] [id (Just c)]] 3 [_ n]}) 4 18

Slide 21

Slide 21 text

࢖༻ྫ 1 (match n node 2 {[[,id _] [id (Just c)]] 3 [_ n]}) 4 1 (define $n1 [1 Nothing]) 2 (define $n2 [2 (Just 1)]) 3 (rewrite-node 1 1 n1) 4 ;[1 {1}] 5 6 (rewrite-node 2 2 n2) 7 ;[2 {2}] 8 9 (rewrite-node 2 2 n1) 10 ;[1 {}] 11 19

Slide 22

Slide 22 text

assign-color ؔ਺ rewrite-node Λ map ͯ͠ɺάϥϑͷࢦఆ͞Εͨ id ͷϊʔυʹࢦ ఆ͞Εͨ৭ c ΛృΓ·͢ɻ άϥϑ͸ࡾ֯ܗͰϊʔυ id ͕ 1, 2, 3 ͰͦΕͧΕ৭͕͍͍ͭͯͳ ͍ঢ়ଶͰ͢ɻ͜ͷάϥϑͷ id ͕ 1 ͷϊʔυͷ৭Λ 2 ʹృΓ·͢ɻ 1 (define $graph-data 2 {[[1 Nothing] {[2 Nothing] [3 Nothing]}] 3 [[2 Nothing] {[1 Nothing] [3 Nothing]}] 4 [[3 Nothing] {[1 Nothing] [2 Nothing]}]}) 5 6 (assign-color 1 2 graph-data) 7 ;{[[1 {2}] {[2 {}] [3 {}]}] [[2 {}] {[1 {2}] [3 {}]}] → [[3 {}] {[1 {2}] [2 {}]}]} 8 20

Slide 23

Slide 23 text

loop ύλʔϯ ͋Δϊʔυ͔Βผͷϊʔυ΁ͷܦ࿏ΛऔΓग़͢ɻ 1 (match-all graph-data graph 2 [] 3 (loop $i [3 $n] 4 ] 5 ...> 6 ] _>)> id]) 7 21

Slide 24

Slide 24 text

flip-color ؔ਺ ࢦఆ͞Εͨೋ৭Ͱͭͳ͕͍ͬͯΔ෦෼ͷ৭ΛೖΕସ͑·͢ɻ͸͡ Ίϊʔυ id1 ͷ৭͕ c2 Ͱϊʔυ id2 ͕৭ c1 ͷঢ়ଶ͔Βɺid2 ͷ ৭Λ c2 ʹృΓɺid1 ͱٯํ޲ͷ৭ c2 ͷϊʔυΛ୳ͯͦ͠ΕΛ id3 ͱ͠࠶ؼతʹ࣮ߦ͠·͢ɻ 1 (define $flip-color 2 (lambda [$id1 $id2 $c1 $c2 $graph-data] 3 (match graph-data graph 4 {[>] 6 _> 7 (assign-color id2 c2 (flip-color id2 id3 c2 c1 graph → -data))] 8 [_ (assign-color id2 c2 graph-data)]}))) 22

Slide 25

Slide 25 text

࢖༻ྫ 1 (define $graph-data 2 {[[1 Nothing] {[2 (Just 1)]}] 3 [[2 (Just 1)] {[3 (Just 2)] [1 Nothing]}] 4 [[3 (Just 2)] {[4 (Just 1)] [2 (Just 1)]}] 5 [[4 (Just 1)] {[5 (Just 2)] [3 (Just 2)]}] 6 [[5 (Just 2)] {[4 (Just 1)]}]}) 7 8 (flip-color 1 2 1 2 graph-data) 9 ;{[[1 {}] {[2 {2}]}] [[2 {2}] {[3 {1}] [1 {}]}] [[3 {1}] → {[4 {2}] [2 {2}]}] [[4 {2}] {[5 {1}] [3 {1}]}] [[5 → {1}] {[4 {2}] [6 {3}]}] [[6 {3}] {[5 {1}]}]} 23

Slide 26

Slide 26 text

஫ҙ ࣮͸্ͷ࣮૷Ͱ͸͏·͍͍ͬͯ͘ͳ͍ʢଟ෼ loop ύλʔϯΛ ࢖͏ʣ ͋Δϊʔυ͔Βಉ͡৭ͷϊʔυʹ 3 ͭҎ্ܨ͕͍ͬͯΔ৔߹ 1 (define $graph-data2 2 {[[1 Nothing] {[2 (Just 1)]}] 3 [[2 (Just 1)] {[3 (Just 2)] [1 Nothing]}] 4 [[3 (Just 2)] {[4 (Just 1)] [2 (Just 1)]}] 5 [[4 (Just 1)] {[5 (Just 2)] [3 (Just 2)] [6 (Just 2) → ]}] 6 [[5 (Just 2)] {[4 (Just 1)]}] 7 [[6 (Just 2)] {[4 (Just 1)]}]}) 8 9 (flip-color 1 2 1 2 graph-data2) 10 ;{[[1 {}] {[2 {2}]}] [[2 {2}] {[3 {1}] [1 {}]}] [[3 → {1}] {[4 {2}] [2 {2}]}] [[4 {2}] {[5 {1}] [3 {1}] → [6 {2}]}] [[5 {1}] {[4 {2}]}] [[6 {2}] {[4 {2}]}]} 24

Slide 27

Slide 27 text

࠼৭ΞϧΰϦζϜͷ࣮૷

Slide 28

Slide 28 text

ΞϧΰϦζϜ ࣍਺ͷ 5 ҎԼͷϊʔυΛऔΓআ͍ͯ࠶ؼతʹ࠼৭͢Δɻ ࠷ޙͷϊʔυΛృΔͱ͖ʹɺ 1. पΓͷ৭͕ 4 ৭ҎԼͳΒ࢒͍ͬͯΔ৭ΛృΔ 2. पΓͷ৭͕ 5 ৭ͷ৔߹ɺ1 ͱ 3 ͕ͦͷೋ৭ͷΈͰܨ͕Δ͔ ൱͔ 2.1 ܨ͕Βͳ͍৔߹ɺ1 ͔Β 3 ΛͨͲͬͯ৭ΛೖΕସ͑Ε͹पΓ ͸ 4 ৭ʹͳΔ 2.2 ܨ͕Δ৔߹ɺ2 ͱ 4 ͕ܨ͕Βͳ͍ͷͰɺͲͪΒ͔ͷ৭ΛృΓ ସ͑Ε͹पΓ͸ 4 ৭ʹͳΔ 25

Slide 29

Slide 29 text

࣍਺͕ 5 ҎԼͷύλʔϯϚον 1 (match graph-data graph 2 {[ _) 5 >] $node-info) _> 6 (colorize id (add-node node-info (main (remove- → node id graph-data))))] 7 [_ graph-data]}))) 8 26

Slide 30

Slide 30 text

remove-node ؔ਺ ࢦఆ͞Εͨ id ͷϊʔυΛऔΓআ͘ 1 (match-all graph-data graph 2 [ 3 [nid (match-all edges (multiset node) 4 [ n])]]) 5 ,id ͸ value ύλʔϯɺ!͸ not ύλʔϯͰ node ͷ id ͕ࢦఆ͞Ε ͨ id ͱҟͳΔͱ͖Ϛονɺ&͸ and ύλʔϯͰม਺ nid ͱ edges ΁ͷଋറɺ͞Βʹͦͷϊʔυʹͭͳ͕͍ͬͯΔ෦෼͕༩͑ΒΕͨ id ͱҟͳΔϊʔυͷΈऔΓग़͢ɻ match-all ͳͷͰࢦఆ͞Εͨ id Ҏ֎ͷϊʔυΛશͯूΊͨ΋ͷ͕ ฦΔ 27

Slide 31

Slide 31 text

࢖༻ྫ 1 (define $graph-data 2 {[[1 Nothing] {[2 Nothing]}] 3 [[2 Nothing] {[1 Nothing]}]}) 4 5 (remove-node 1 graph-data) 6 ;{[[2 {}] {}]} 7 28

Slide 32

Slide 32 text

add-node ؔ਺ औΓআ͍ͨϊʔυͷ৘ใ node-info Λάϥϑ graph-data ʹ໭͢ 1 (define $add-node 2 (lambda [$node-info $graph-data] 3 {[(fst node-info) 4 (match-all [(snd node-info) graph-data] [(set node → ) graph] 5 {[[ ] [id c]] 6 [[ !] [id c → ]]})] 7 @(match-all [graph-data (snd node-info)] [graph (set → node)] 8 {[[ ] 9 [[id c] {(fst node-info) @edges}]] 10 [[ !] 11 [[id c] edges]]})})) 12 29

Slide 33

Slide 33 text

࢖༻ྫ ͜͜Ͱ͸ϊʔυ 1 ΛऔΓআ͍ͨޙɺϊʔυ 2 ʹ৭ 1 Λృͬͯɺ ϊʔυ 1 Λ໭͍ͯ͠·͢ɻ 1 (define $graph-data 2 {[[1 Nothing] {[2 Nothing]}] 3 [[2 Nothing] {[1 Nothing]}]}) 4 5 (add-node [[1 Nothing] {[2 Nothing]}] (main (remove- → node 1 graph-data))) 6 ;{[[1 {}] {[2 {1}]}] [[2 {1}] {[1 {}]}]} 7 30

Slide 34

Slide 34 text

पΓͷϊʔυʹ 5 ৭શͯ࢖ΘΕ͍ͯΔ͔ ͋ͨ͑ΒΕͨ id Λ΋ͭϊʔυͷपΓͷϊʔυʹ 5 ৭શͯ࢖ΘΕ ͍ͯΔ͔Ͳ͏͔ͷύλʔϯϚον colors ͸৭൪߸ͷ set ͱͯ͠ఆٛ͞Εͨ΋ͷɻ 1 (match [colors graph-data] [(set integer) graph] 2 {[[ >] _>] 3 (assign-color id c graph-data)] 4 [_ graph-data]}) 5 31

Slide 35

Slide 35 text

৭ 1 ͱ 3 ͷΈͰϊʔυ 1 ͱ 3 ͕ܨ͕Δ͔ ύλʔϯϚονͰม਺ͷଋറ 1 (match [colors graph-data] [(set integer) graph] 2 [[_ 6 )>] _>] 7 32

Slide 36

Slide 36 text

৭ 1 ͱ 3 ͷΈͰϊʔυ 1 ͱ 3 ͕ܨ͕Δ͔ 1 (match graph-data graph 2 {[>] 5 (loop $i [2 $n] 6 >] 9 ...> 10 >] → _>)> 33

Slide 37

Slide 37 text

࣮ྫ

Slide 38

Slide 38 text

࣮ྫ 1 (define $graph-data-colored 2 {[[0 Nothing] {[1 (Just 1)] [2 (Just 2)] [3 (Just 3) → ] [4 (Just 4)] [5 (Just 5)]}] 3 [[1 (Just 1)] {[2 (Just 2)] [0 Nothing] [5 (Just → 5)]}] 4 [[2 (Just 2)] {[3 (Just 3)] [0 Nothing] [1 (Just → 1)]}] 5 [[3 (Just 3)] {[4 (Just 4)] [0 Nothing] [2 (Just 34

Slide 39

Slide 39 text

࣮ྫ 1 (main graph-data-colored) 2 ;{[[0 {1}] {[1 {3}] [2 {2}] [3 {3}] [4 {4}] [5 {5}]}] → [[1 {3}] {[0 {1}] [2 {2}] [5 {5}]}] [[2 {2}] {[0 → {1}] [3 {3}] [1 {3}]}] [[3 {3}] {[0 {1}] [4 {4}] [2 → {2}]}] [[4 {4}] {[0 {1}] [5 {5}] [3 {3}]}] [[5 → {5}] {[0 {1}] [1 {3}] [4 {4}]}]} 3 35

Slide 40

Slide 40 text

೔ຊ஍ਤ 1 (define $graph-honshu 2 {[[2 Nothing] {[3 Nothing] [5 Nothing]}] 3 [[3 Nothing] {[2 Nothing] [4 Nothing] [5 Nothing]}] 4 [[4 Nothing] {[3 Nothing] [7 Nothing] [6 Nothing] [5 → Nothing]}] 5 [[5 Nothing] {[2 Nothgin] [3 Nothing] [4 Nothing] [6 → Nothing]}] 6 [[6 Nothing] {[5 Nothing] [4 Nothing] [7 Nothing] → [15 Nothing]}] 7 [[7 Nothing] {[4 Nothing] [8 Nothing] [9 Nothing] → [10 Nothing] [15 Nothing] [6 Nothing]}] 8 [[8 Nothing] {[7 Nothing] [12 Nothing] [11 Nothing] → [9 Nothing]}] 9 [[9 Nothing] {[7 Nothing] [8 Nothing] [11 Nothing] → [10 Nothing]}] 10 [[10 Nothing] {[7 Nothing] [9 Nothing] [11 Nothing] → [20 Nothing] [15 Nothing]}] 36

Slide 41

Slide 41 text

1 (main graph-honshu) 2 ;{[[2 {3}] {[3 {2}] [5 {1}]}] [[3 {2}] {[2 {3}] [4 → {4}] [5 {1}]}] [[5 {1}] {[2 {3}] [3 {2}] [4 {4}] [6 → {2}]}] [[4 {4}] {[3 {2}] [7 {3}] [6 {2}] [5 {1}]}] → [[6 {2}] {[4 {4}] [5 {1}] [7 {3}] [15 {1}]}] [[7 → {3}] {[4 {4}] [6 {2}] [8 {2}] [9 {1}] [10 {2}] [15 → {1}]}] [[15 {1}] {[6 {2}] [7 {3}] [10 {2}] [16 {2}] → [20 {3}]}] [[8 {2}] {[7 {3}] [9 {1}] [11 {4}] [12 → {1}]}] [[9 {1}] {[7 {3}] [8 {2}] [11 {4}] [10 → {2}]}] [[10 {2}] {[7 {3}] [9 {1}] [11 {4}] [20 {3}] → [15 {1}]}] [[11 {4}] {[8 {2}] [9 {1}] [10 {2}] [12 → {1}] [13 {2}] [19 {1}] [20 {3}]}] [[12 {1}] {[8 → {2}] [11 {4}] [13 {2}]}] [[20 {3}] {[10 {2}] [11 → {4}] [15 {1}] [16 {2}] [19 {1}] [23 {1}] [21 {4}] → [22 {2}]}] [[13 {2}] {[11 {4}] [12 {1}] [14 {3}] → [19 {1}]}] [[19 {1}] {[11 {4}] [13 {2}] [14 {3}] → [20 {3}] [22 {2}]}] [[14 {3}] {[13 {2}] [22 {2}] → [19 {1}]}] [[22 {2}] {[14 {3}] [19 {1}] [20 {3}] → [23 {1}]}] [[16 {2}] {[15 {1}] [17 {1}] [21 {4}] 37

Slide 42

Slide 42 text

೔ຊ஍ਤ Figure 1: ຊभͷ৭ృΓ 38