SlideShare une entreprise Scribd logo
1  sur  19
Coq GC

  id:mzp




        2010-08-08 GC
    1
•        :

    • http://twitter.com/mzp
    • http://d.hatena.ne.jp/mzp/
•        :     SE

•                              Coq

                        2
:
                    GC
•
•   :



•       :


                    2010(c) nari3
            3
4
2010(c) nari3
5
M&S

•
•
•


          6
Coq



7
Coq

•
•

    •

              8
Coq                          (1)

•

    • OCaml,Haskell,Scheme
•

                     9
Coq                      (2)
•
• Twitter        reply



• Coq       20




            10
•   GC

•   (Safety)[1]




             [1]Burdy Gemplus Avenue ,  L. Burdy “B vs. Coq to prove
             a Garbage Collector” 2001

                  11
•
      •

  •   “ ”


Record Mem   {A : Type} :=
 mkMem {
  nodes :    set A;
  roots :    set A;
  frees :    set A;
  next   :   A -> option A;
  marker :   A -> mark;
 }.
                        12
GC
 •
 •
                  :
                 (*                  m1 m2            *)
         Definition       MarkPhase (m1 m2 : Mem) : Prop :=
            roots m1      = roots m2 ∧ nodes m1 = nodes m2 ∧
            frees m1      = frees m2 ∧ next m1 = next m2 ∧
            Included      (closuresM m2) (marksM Marked m2).
         (*                             ⊆                   *)

                      :
 (   )

                                      13
•
•
              Safety


Lemma MarkPhase_Safety:∀(m1 m2: Mem),
  MarkPhase m1 m2 -> (* m1        m2    *)
  Safety m1 -> (* m1 Safety    *)

  Safety m2 ∧ MarksAll m2. (* m2 Safety      *)


               Safety         (   )
                        14
•
•                       OCaml

    Definition mark_phase (m : Mem) : Mem :=
        mkMem A (nodes m) (roots m)(frees m)
                (fun x =>
                    if In_dec x (closuresM m) then
                      Marked
                    else
                      Unmarked)
                (next m).

                (   )

                            15
•
•

    Lemma mark_phase_correct: ∀ m1 m2,
      m2 = mark_phase m1 ->
      MarkPhase m1 m2.

          (   )


                     16
•   OCaml

•           OCaml

•   GC

     GC                  GC




                    17
...
•       Coq           - Coq

•   8/29 13:00                    @

•   http://atnd.org/events/6022




                           18
•

• Burdy Gemplus Avenue ,  L. Burdy “B vs.
    Coq to prove a Garbage Collector” 2001




                     19

Contenu connexe

Tendances

CoqでGCの証明をしてみたよ(LT)
CoqでGCの証明をしてみたよ(LT)CoqでGCの証明をしてみたよ(LT)
CoqでGCの証明をしてみたよ(LT)Hiroki Mizuno
 
Purely Functional Data Structures ex3.3 leftist heap
Purely Functional Data Structures ex3.3 leftist heapPurely Functional Data Structures ex3.3 leftist heap
Purely Functional Data Structures ex3.3 leftist heapTetsuro Nagae
 
Sombat kimatsu3
Sombat kimatsu3Sombat kimatsu3
Sombat kimatsu3xbatboy
 
Magento Meetup Wroclaw Date And Time In Magento With Multistore (Maciej Harbu...
Magento Meetup Wroclaw Date And Time In Magento With Multistore (Maciej Harbu...Magento Meetup Wroclaw Date And Time In Magento With Multistore (Maciej Harbu...
Magento Meetup Wroclaw Date And Time In Magento With Multistore (Maciej Harbu...Magento Meetup Wrocław
 
Sombat kimatsu2
Sombat kimatsu2Sombat kimatsu2
Sombat kimatsu2xbatboy
 
Answer to selected_miscellaneous_exercises
Answer to selected_miscellaneous_exercisesAnswer to selected_miscellaneous_exercises
Answer to selected_miscellaneous_exercisespaufong
 
8.1 angle meas in polygons
8.1 angle meas in polygons8.1 angle meas in polygons
8.1 angle meas in polygonsjgbou812
 
Sumatorias Numéricas - RM
Sumatorias Numéricas - RMSumatorias Numéricas - RM
Sumatorias Numéricas - RMJoaquinMontoro
 
Report Qsn 8 CA asn 3
Report Qsn 8 CA asn 3Report Qsn 8 CA asn 3
Report Qsn 8 CA asn 3SangramNavale
 

Tendances (20)

CoqでGCの証明をしてみたよ(LT)
CoqでGCの証明をしてみたよ(LT)CoqでGCの証明をしてみたよ(LT)
CoqでGCの証明をしてみたよ(LT)
 
A
AA
A
 
Purely Functional Data Structures ex3.3 leftist heap
Purely Functional Data Structures ex3.3 leftist heapPurely Functional Data Structures ex3.3 leftist heap
Purely Functional Data Structures ex3.3 leftist heap
 
Voronoi Diagrams
Voronoi DiagramsVoronoi Diagrams
Voronoi Diagrams
 
Bitcoin:Next
Bitcoin:NextBitcoin:Next
Bitcoin:Next
 
C coroutine
C coroutineC coroutine
C coroutine
 
Ch25 17
Ch25 17Ch25 17
Ch25 17
 
Sombat kimatsu3
Sombat kimatsu3Sombat kimatsu3
Sombat kimatsu3
 
Magento Meetup Wroclaw Date And Time In Magento With Multistore (Maciej Harbu...
Magento Meetup Wroclaw Date And Time In Magento With Multistore (Maciej Harbu...Magento Meetup Wroclaw Date And Time In Magento With Multistore (Maciej Harbu...
Magento Meetup Wroclaw Date And Time In Magento With Multistore (Maciej Harbu...
 
Sombat kimatsu2
Sombat kimatsu2Sombat kimatsu2
Sombat kimatsu2
 
June 2010 1
June 2010 1June 2010 1
June 2010 1
 
windshield defrost
windshield defrostwindshield defrost
windshield defrost
 
Answer to selected_miscellaneous_exercises
Answer to selected_miscellaneous_exercisesAnswer to selected_miscellaneous_exercises
Answer to selected_miscellaneous_exercises
 
8.1 angle meas in polygons
8.1 angle meas in polygons8.1 angle meas in polygons
8.1 angle meas in polygons
 
Sumatorias Numéricas - RM
Sumatorias Numéricas - RMSumatorias Numéricas - RM
Sumatorias Numéricas - RM
 
Report Qsn 8 CA asn 3
Report Qsn 8 CA asn 3Report Qsn 8 CA asn 3
Report Qsn 8 CA asn 3
 
110617 lt
110617 lt110617 lt
110617 lt
 
Co-orinate Geometry
Co-orinate Geometry Co-orinate Geometry
Co-orinate Geometry
 
12.2 notes
12.2 notes12.2 notes
12.2 notes
 
12.2 notes
12.2 notes12.2 notes
12.2 notes
 

En vedette

Typeclass
TypeclassTypeclass
Typeclasstmiya
 
Cbug function Presentation
Cbug function PresentationCbug function Presentation
Cbug function Presentationosamu kimura
 
Coq setoid 20110129
Coq setoid 20110129Coq setoid 20110129
Coq setoid 20110129tmiya
 
Coq Tutorial at Proof Summit 2011
Coq Tutorial at Proof Summit 2011Coq Tutorial at Proof Summit 2011
Coq Tutorial at Proof Summit 2011tmiya
 
Proofsummit2011a
Proofsummit2011aProofsummit2011a
Proofsummit2011atmiya
 
Coq for ML users
Coq for ML usersCoq for ML users
Coq for ML userstmiya
 
Type based termination for recursive definitions
Type based termination for recursive definitionsType based termination for recursive definitions
Type based termination for recursive definitionsrodrigogribeiro
 
Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Coq to Rubyによる証明駆動開発@名古屋ruby会議02Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Coq to Rubyによる証明駆動開発@名古屋ruby会議02Hiroki Mizuno
 

En vedette (8)

Typeclass
TypeclassTypeclass
Typeclass
 
Cbug function Presentation
Cbug function PresentationCbug function Presentation
Cbug function Presentation
 
Coq setoid 20110129
Coq setoid 20110129Coq setoid 20110129
Coq setoid 20110129
 
Coq Tutorial at Proof Summit 2011
Coq Tutorial at Proof Summit 2011Coq Tutorial at Proof Summit 2011
Coq Tutorial at Proof Summit 2011
 
Proofsummit2011a
Proofsummit2011aProofsummit2011a
Proofsummit2011a
 
Coq for ML users
Coq for ML usersCoq for ML users
Coq for ML users
 
Type based termination for recursive definitions
Type based termination for recursive definitionsType based termination for recursive definitions
Type based termination for recursive definitions
 
Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Coq to Rubyによる証明駆動開発@名古屋ruby会議02Coq to Rubyによる証明駆動開発@名古屋ruby会議02
Coq to Rubyによる証明駆動開発@名古屋ruby会議02
 

Plus de Hiroki Mizuno

TypeSafe OSの試み
TypeSafe OSの試みTypeSafe OSの試み
TypeSafe OSの試みHiroki Mizuno
 
OCamlでWebアプリケーションを作るn個の方法
OCamlでWebアプリケーションを作るn個の方法OCamlでWebアプリケーションを作るn個の方法
OCamlでWebアプリケーションを作るn個の方法Hiroki Mizuno
 
#NGK2012B Excelによる設計書について
#NGK2012B Excelによる設計書について#NGK2012B Excelによる設計書について
#NGK2012B Excelによる設計書についてHiroki Mizuno
 
Scala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性について
Scala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性についてScala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性について
Scala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性についてHiroki Mizuno
 
Coq for Moblie Phone @ ML名古屋
Coq for Moblie Phone @ ML名古屋Coq for Moblie Phone @ ML名古屋
Coq for Moblie Phone @ ML名古屋Hiroki Mizuno
 
Darcs紹介@20120423-scmbc
Darcs紹介@20120423-scmbcDarcs紹介@20120423-scmbc
Darcs紹介@20120423-scmbcHiroki Mizuno
 
Gallinaによる証明駆動開発の魅力
Gallinaによる証明駆動開発の魅力Gallinaによる証明駆動開発の魅力
Gallinaによる証明駆動開発の魅力Hiroki Mizuno
 
CoqによるMsgPackの証明
CoqによるMsgPackの証明CoqによるMsgPackの証明
CoqによるMsgPackの証明Hiroki Mizuno
 
「Frama-Cによるソースコード検証」 (mzp)
「Frama-Cによるソースコード検証」 (mzp)「Frama-Cによるソースコード検証」 (mzp)
「Frama-Cによるソースコード検証」 (mzp)Hiroki Mizuno
 
20110424 action scriptを使わないflash勉強会
20110424 action scriptを使わないflash勉強会20110424 action scriptを使わないflash勉強会
20110424 action scriptを使わないflash勉強会Hiroki Mizuno
 
証明駆動開発のたのしみ@名古屋reject会議
証明駆動開発のたのしみ@名古屋reject会議証明駆動開発のたのしみ@名古屋reject会議
証明駆動開発のたのしみ@名古屋reject会議Hiroki Mizuno
 
Coqによる証明駆動開発
Coqによる証明駆動開発Coqによる証明駆動開発
Coqによる証明駆動開発Hiroki Mizuno
 
NGK忘年会 2010 / CoqからRubyへ
NGK忘年会 2010 / CoqからRubyへNGK忘年会 2010 / CoqからRubyへ
NGK忘年会 2010 / CoqからRubyへHiroki Mizuno
 
From Coq to Ruby / CoqからRubyへ
From Coq to Ruby / CoqからRubyへFrom Coq to Ruby / CoqからRubyへ
From Coq to Ruby / CoqからRubyへHiroki Mizuno
 
OCamlAPISearchの紹介
OCamlAPISearchの紹介OCamlAPISearchの紹介
OCamlAPISearchの紹介Hiroki Mizuno
 

Plus de Hiroki Mizuno (20)

TypeSafe OSの試み
TypeSafe OSの試みTypeSafe OSの試み
TypeSafe OSの試み
 
OCamlでWebアプリケーションを作るn個の方法
OCamlでWebアプリケーションを作るn個の方法OCamlでWebアプリケーションを作るn個の方法
OCamlでWebアプリケーションを作るn個の方法
 
#NGK2012B Excelによる設計書について
#NGK2012B Excelによる設計書について#NGK2012B Excelによる設計書について
#NGK2012B Excelによる設計書について
 
Scala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性について
Scala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性についてScala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性について
Scala基礎勉強会: Featherweight Scalaの紹介および型付け規則の決定可能性について
 
Java基礎
Java基礎Java基礎
Java基礎
 
Sml#探検隊
Sml#探検隊Sml#探検隊
Sml#探検隊
 
どこでもCoq
どこでもCoqどこでもCoq
どこでもCoq
 
Coq for Moblie Phone @ ML名古屋
Coq for Moblie Phone @ ML名古屋Coq for Moblie Phone @ ML名古屋
Coq for Moblie Phone @ ML名古屋
 
Darcs紹介@20120423-scmbc
Darcs紹介@20120423-scmbcDarcs紹介@20120423-scmbc
Darcs紹介@20120423-scmbc
 
Gallinaによる証明駆動開発の魅力
Gallinaによる証明駆動開発の魅力Gallinaによる証明駆動開発の魅力
Gallinaによる証明駆動開発の魅力
 
CoqによるMsgPackの証明
CoqによるMsgPackの証明CoqによるMsgPackの証明
CoqによるMsgPackの証明
 
「Frama-Cによるソースコード検証」 (mzp)
「Frama-Cによるソースコード検証」 (mzp)「Frama-Cによるソースコード検証」 (mzp)
「Frama-Cによるソースコード検証」 (mzp)
 
20110424 action scriptを使わないflash勉強会
20110424 action scriptを使わないflash勉強会20110424 action scriptを使わないflash勉強会
20110424 action scriptを使わないflash勉強会
 
証明駆動開発のたのしみ@名古屋reject会議
証明駆動開発のたのしみ@名古屋reject会議証明駆動開発のたのしみ@名古屋reject会議
証明駆動開発のたのしみ@名古屋reject会議
 
Coqによる証明駆動開発
Coqによる証明駆動開発Coqによる証明駆動開発
Coqによる証明駆動開発
 
NGK忘年会 2010 / CoqからRubyへ
NGK忘年会 2010 / CoqからRubyへNGK忘年会 2010 / CoqからRubyへ
NGK忘年会 2010 / CoqからRubyへ
 
From Coq to Ruby / CoqからRubyへ
From Coq to Ruby / CoqからRubyへFrom Coq to Ruby / CoqからRubyへ
From Coq to Ruby / CoqからRubyへ
 
SacalaZa #1
SacalaZa #1SacalaZa #1
SacalaZa #1
 
CoqUn2010
CoqUn2010CoqUn2010
CoqUn2010
 
OCamlAPISearchの紹介
OCamlAPISearchの紹介OCamlAPISearchの紹介
OCamlAPISearchの紹介
 

Coq GC Document Discusses Proving Garbage Collector Correctness

  • 1. Coq GC id:mzp 2010-08-08 GC 1
  • 2. : • http://twitter.com/mzp • http://d.hatena.ne.jp/mzp/ • : SE • Coq 2
  • 3. : GC • • : • : 2010(c) nari3 3
  • 4. 4
  • 8. Coq • • • 8
  • 9. Coq (1) • • OCaml,Haskell,Scheme • 9
  • 10. Coq (2) • • Twitter reply • Coq 20 10
  • 11. GC • (Safety)[1] [1]Burdy Gemplus Avenue ,  L. Burdy “B vs. Coq to prove a Garbage Collector” 2001 11
  • 12. • • “ ” Record Mem {A : Type} := mkMem { nodes : set A; roots : set A; frees : set A; next : A -> option A; marker : A -> mark; }. 12
  • 13. GC • • : (* m1 m2 *) Definition MarkPhase (m1 m2 : Mem) : Prop := roots m1 = roots m2 ∧ nodes m1 = nodes m2 ∧ frees m1 = frees m2 ∧ next m1 = next m2 ∧ Included (closuresM m2) (marksM Marked m2). (* ⊆ *) : ( ) 13
  • 14. • • Safety Lemma MarkPhase_Safety:∀(m1 m2: Mem), MarkPhase m1 m2 -> (* m1 m2 *) Safety m1 -> (* m1 Safety *) Safety m2 ∧ MarksAll m2. (* m2 Safety *) Safety ( ) 14
  • 15. • • OCaml Definition mark_phase (m : Mem) : Mem := mkMem A (nodes m) (roots m)(frees m) (fun x => if In_dec x (closuresM m) then Marked else Unmarked) (next m). ( ) 15
  • 16. • • Lemma mark_phase_correct: ∀ m1 m2, m2 = mark_phase m1 -> MarkPhase m1 m2. ( ) 16
  • 17. OCaml • OCaml • GC GC GC 17
  • 18. ... • Coq - Coq • 8/29 13:00 @ • http://atnd.org/events/6022 18
  • 19. • • Burdy Gemplus Avenue ,  L. Burdy “B vs. Coq to prove a Garbage Collector” 2001 19

Notes de l'éditeur