Abstract
This development provides an efficient, extensible, machine checked collections framework. The library adopts the concepts of interface, implementation and generic algorithm from object-oriented programming and implements them in Isabelle/HOL. The framework features the use of data refinement techniques to refine an abstract specification (using high-level concepts like sets) to a more concrete implementation (using collection datastructures, like red-black-trees). The code-generator of Isabelle/HOL can be used to generate efficient code.
License
History
- April 25, 2012
- New iterator foundation by Tuerk. Various maintenance changes.
- October 10, 2011
- SetSpec: Added operations: sng, isSng, bexists, size_abort, diff, filter, iterate_rule_insertP
MapSpec: Added operations: sng, isSng, iterate_rule_insertP, bexists, size, size_abort, restrict,
map_image_filter, map_value_image_filter
Some maintenance changes
- December 1, 2010
- New Interfaces: Priority Queues, Annotated Lists. Implemented by finger trees, (skew) binomial queues.
- October 8, 2010
- New Interfaces: OrderedSet, OrderedMap, List.
Fifo now implements list-interface: Function names changed: put/get --> enqueue/dequeue.
New Implementations: ArrayList, ArrayHashMap, ArrayHashSet, TrieMap, TrieSet.
Invariant-free datastructures: Invariant implicitely hidden in typedef.
Record-interfaces: All operations of an interface encapsulated as record.
Examples moved to examples subdirectory.
Topics
Related publications
- Lammich, P., & Lochbihler, A. (2010). The Isabelle Collections Framework. Interactive Theorem Proving, 339–354. https://doi.org/10.1007/978-3-642-14052-5_24
Session Collections
- Sorted_List_Operations
- HashCode
- Code_Target_ICF
- SetIterator
- SetIteratorOperations
- Proper_Iterator
- It_to_It
- SetIteratorGA
- Gen_Iterator
- Idx_Iterator
- Iterator
- RBT_add
- Dlist_add
- Assoc_List
- Diff_Array
- Partial_Equivalence_Relation
- ICF_Tools
- Ord_Code_Preproc
- Record_Intf
- Locale_Code
- ICF_Spec_Base
- MapSpec
- Robdd
- Locale_Code_Ex
- DatRef
- SetAbstractionIterator
- GenCF_Chapter
- GenCF_Intf_Chapter
- Intf_Map
- Intf_Set
- Intf_Hash
- Intf_Comp
- GenCF_Gen_Chapter
- Gen_Set
- Gen_Map
- Gen_Map2Set
- Gen_Comp
- GenCF_Impl_Chapter
- Impl_Array_Stack
- Impl_List_Set
- Array_Iterator
- Impl_List_Map
- Impl_Array_Hash_Map
- Impl_RBT_Map
- Impl_Cfun_Set
- Impl_Array_Map
- Impl_Bit_Set
- Impl_Uv_Set
- Gen_Hash
- GenCF
- ICF_Chapter
- ICF_Spec_Chapter
- SetSpec
- ListSpec
- AnnotatedListSpec
- PrioSpec
- PrioUniqueSpec
- ICF_Gen_Algo_Chapter
- SetIteratorCollectionsGA
- MapGA
- SetGA
- SetByMap
- ListGA
- SetIndex
- Algos
- PrioByAnnotatedList
- PrioUniqueByAnnotatedList
- ICF_Impl_Chapter
- ListMapImpl
- ListMapImpl_Invar
- RBTMapImpl
- HashMap_Impl
- HashMap
- Trie_Impl
- Trie2
- TrieMapImpl
- ArrayHashMap_Impl
- ArrayHashMap
- ArrayMapImpl
- MapStdImpl
- ListSetImpl
- ListSetImpl_Invar
- ListSetImpl_NotDist
- ListSetImpl_Sorted
- RBTSetImpl
- HashSet
- TrieSetImpl
- ArrayHashSet
- ArraySetImpl
- SetStdImpl
- Fifo
- BinoPrioImpl
- SkewPrioImpl
- FTAnnotatedListImpl
- FTPrioImpl
- FTPrioUniqueImpl
- ICF_Impl
- ICF_Refine_Monadic
- ICF_Autoref
- ICF_Entrypoints_Chapter
- Collections
- CollectionsV1
- Collections_Entrypoints_Chapter
- Refine_Dflt
- Refine_Dflt_ICF
- Refine_Dflt_Only_ICF
- Userguides_Chapter
- Refine_Monadic_Userguide
- ICF_Userguide
Session Collections_Examples
- Examples_Chapter
- Collection_Autoref_Examples_Chapter
- Succ_Graph
- Coll_Test
- Simple_DFS
- ICF_Test
- ICF_Only_Test
- Nested_DFS
- Combined_TwoSat
- Collection_Autoref_Examples
- Refine_Monadic_Examples_Chapter
- Bfs_Impl
- Foreach_Refine
- Refine_Fold
- Refine_Monadic_Examples
- ICF_Examples_Chapter
- itp_2010
- Exploration
- Exploration_DFS
- PerformanceTest
- ICF_Examples
- Collection_Examples
Depends on
Used by
- Knuth–Morris–Pratt String Search
- Making Arbitrary Relational Calculus Queries Safe-Range
- A Sequent Calculus Prover for First-Order Logic with Functions
- Gale-Shapley Algorithm
- Kruskal’s Algorithm for Minimum Spanning Forest
- Transition Systems and Automata
- The Imperative Refinement Framework
- Algorithms for Reduced Ordered Binary Decision Diagrams
- Verified Construction of Static Single Assignment Form
- Deriving class instances for datatypes
- The CAVA Automata Library
- Abstract Completeness
- Light-weight Containers
- A Separation Logic Framework for Imperative HOL
- Ordinary Differential Equations
- Dijkstra’s Shortest Path Algorithm
- Executable Transitive Closures of Finite Relations
- Tree Automata
- Jinja with Threads