The document introduces Featherweight Scala, a calculus for a subset of Scala. It defines the grammar and evaluation rules of Featherweight Scala, including terms, types, classes, methods, and fields. It also defines type checking rules and proves they are deterministic, ensuring a type can be uniquely determined for any program.
The document discusses Coq and Gallina, the language used for formal proofs in Coq. It provides examples of proof goals, such as proving that reversing a list twice returns the original list, and that decoding and encoding with base64 returns the original string. It also lists several Coq-based projects, including CompCert for formally verified C code generation, and links to learning resources for Coq.
This document discusses using the Frama-C framework to formally verify C and C++ code. It provides examples of using Frama-C to verify functions that find the minimum of integer values, including abs(), min(), and min3(). Specifications for these functions are written using the ACSL specification language. Frama-C is then used to prove that the implementations satisfy the specifications. The document also discusses how concepts from Frama-C like LE (less than or equal) can be mapped to similar concepts in languages like Coq that are used for formal verification.
The document discusses ActionScript and the ActionScript Virtual Machine 2 (AVM2). It provides examples of ActionScript bytecode (ABC) and instructions. It compares AVM1 and AVM2, and explains how AVM2 improved performance through just-in-time compilation and garbage collection. Code examples demonstrate how to compile and disassemble ABC files using tools like Flex SDK and Tamarin.
The document discusses using the Coq proof assistant to implement and verify algorithms in Ruby. It mentions encoding a Base64 algorithm in Coq and extracting it to OCaml, Haskell, Scheme and potentially Ruby. It provides examples of defining and proving properties of a factorial function in Coq and extracting implementations to other languages. It also discusses using Coq to model and verify other algorithms like sorting before generating Ruby implementations.
The document discusses the benefits and challenges of proof-driven development using the Coq proof assistant. It describes how Coq can be used to formally prove properties about code during development. However, it also notes that Coq has limitations when dealing with large numbers, which can cause stack overflows. It also discusses using Coq to formally specify the MessagePack serialization format and prove properties about it.
The document discusses using the Coq proof assistant to develop verified programs and extracting them to other languages like Ruby. It mentions past Coq-related meetups and events held in Nagoya, Japan including a Coq party and Nagoya hackathon. Future plans include extracting a Coq-verified program to Ruby at an upcoming hackathon and a talk on Coq at the Nagoya Ruby conference in February 2011.
1) The document discusses Scala and type inference using the Hindley-Milner type system. It provides examples of type inference in Scala and compares it to other languages like OCaml and Haskell.
2) Hindley-Milner type inference allows Scala to infer types for variables and functions without needing explicit type annotations in many cases. This is illustrated through examples of integer increment functions.
3) Type inference in Scala 3.0 aims to improve on the current approach and make types even more implicit, bringing it closer to languages like OCaml.
- The document discusses garbage collection (GC) in Coq, including defining GC as a function that takes an initial and final memory state (m1 and m2) and exists an intermediate state (m) where the mark phase is applied to m1 and m and the sweep phase is applied from m to m2.
- Safety properties are defined for memory states including disjointness of free and closed elements, and lemmas are proved about the mark phase and sweep phase preserving safety and fully marking objects.
- Extraction from Coq to OCaml is briefly mentioned as a way to run GC implementations in OCaml.
This document discusses Hoogle, an API search tool for Haskell, and proposes creating a similar tool called OCaml Hoogle for the OCaml programming language. It notes that OCaml Hoogle would search OCaml library documentation and provide type signatures of functions to help with code completion, as Hoogle does for Haskell. The document provides details on the implementation and links to related projects.
This document discusses Coq GC (garbage collection). It provides an overview of Coq and how it can be used to formally prove properties of a garbage collector. It presents the definition of a Mem record to represent memory state and definitions for MarkPhase and Safety properties. It also discusses implementing mark phase in OCaml and proving it is correct using Coq.
Coq GC provides a formal specification and proof of a garbage collector in the Coq proof assistant. It defines:
1. Mark and sweep phases to mark reachable data and collect unreachable data
2. Proofs that the mark and sweep phases individually and the full GC preserve a safety property and mark all reachable data
3. An implementation of the GC using Coq's specification language to formally define the data structures and algorithms
The document introduces Featherweight Scala, a calculus for a subset of Scala. It defines the grammar and evaluation rules of Featherweight Scala, including terms, types, classes, methods, and fields. It also defines type checking rules and proves they are deterministic, ensuring a type can be uniquely determined for any program.
The document discusses Coq and Gallina, the language used for formal proofs in Coq. It provides examples of proof goals, such as proving that reversing a list twice returns the original list, and that decoding and encoding with base64 returns the original string. It also lists several Coq-based projects, including CompCert for formally verified C code generation, and links to learning resources for Coq.
This document discusses using the Frama-C framework to formally verify C and C++ code. It provides examples of using Frama-C to verify functions that find the minimum of integer values, including abs(), min(), and min3(). Specifications for these functions are written using the ACSL specification language. Frama-C is then used to prove that the implementations satisfy the specifications. The document also discusses how concepts from Frama-C like LE (less than or equal) can be mapped to similar concepts in languages like Coq that are used for formal verification.
The document discusses ActionScript and the ActionScript Virtual Machine 2 (AVM2). It provides examples of ActionScript bytecode (ABC) and instructions. It compares AVM1 and AVM2, and explains how AVM2 improved performance through just-in-time compilation and garbage collection. Code examples demonstrate how to compile and disassemble ABC files using tools like Flex SDK and Tamarin.
The document discusses using the Coq proof assistant to implement and verify algorithms in Ruby. It mentions encoding a Base64 algorithm in Coq and extracting it to OCaml, Haskell, Scheme and potentially Ruby. It provides examples of defining and proving properties of a factorial function in Coq and extracting implementations to other languages. It also discusses using Coq to model and verify other algorithms like sorting before generating Ruby implementations.
The document discusses the benefits and challenges of proof-driven development using the Coq proof assistant. It describes how Coq can be used to formally prove properties about code during development. However, it also notes that Coq has limitations when dealing with large numbers, which can cause stack overflows. It also discusses using Coq to formally specify the MessagePack serialization format and prove properties about it.
The document discusses using the Coq proof assistant to develop verified programs and extracting them to other languages like Ruby. It mentions past Coq-related meetups and events held in Nagoya, Japan including a Coq party and Nagoya hackathon. Future plans include extracting a Coq-verified program to Ruby at an upcoming hackathon and a talk on Coq at the Nagoya Ruby conference in February 2011.
1) The document discusses Scala and type inference using the Hindley-Milner type system. It provides examples of type inference in Scala and compares it to other languages like OCaml and Haskell.
2) Hindley-Milner type inference allows Scala to infer types for variables and functions without needing explicit type annotations in many cases. This is illustrated through examples of integer increment functions.
3) Type inference in Scala 3.0 aims to improve on the current approach and make types even more implicit, bringing it closer to languages like OCaml.
- The document discusses garbage collection (GC) in Coq, including defining GC as a function that takes an initial and final memory state (m1 and m2) and exists an intermediate state (m) where the mark phase is applied to m1 and m and the sweep phase is applied from m to m2.
- Safety properties are defined for memory states including disjointness of free and closed elements, and lemmas are proved about the mark phase and sweep phase preserving safety and fully marking objects.
- Extraction from Coq to OCaml is briefly mentioned as a way to run GC implementations in OCaml.
This document discusses Hoogle, an API search tool for Haskell, and proposes creating a similar tool called OCaml Hoogle for the OCaml programming language. It notes that OCaml Hoogle would search OCaml library documentation and provide type signatures of functions to help with code completion, as Hoogle does for Haskell. The document provides details on the implementation and links to related projects.
This document discusses Coq GC (garbage collection). It provides an overview of Coq and how it can be used to formally prove properties of a garbage collector. It presents the definition of a Mem record to represent memory state and definitions for MarkPhase and Safety properties. It also discusses implementing mark phase in OCaml and proving it is correct using Coq.
Coq GC provides a formal specification and proof of a garbage collector in the Coq proof assistant. It defines:
1. Mark and sweep phases to mark reachable data and collect unreachable data
2. Proofs that the mark and sweep phases individually and the full GC preserve a safety property and mark all reachable data
3. An implementation of the GC using Coq's specification language to formally define the data structures and algorithms