/// Specifications of the `Table` module. spec extensions::table { // Make most of the public API intrinsic. Those functions have custom specifications in the prover. spec Table { pragma intrinsic; } spec new { pragma intrinsic; } spec destroy_empty { pragma intrinsic; } spec add { pragma intrinsic; } spec borrow { pragma intrinsic; } spec borrow_mut { pragma intrinsic; } spec length { pragma intrinsic; } spec empty { pragma intrinsic; } spec remove { pragma intrinsic; } spec contains { pragma intrinsic; } // Specification functions for tables spec native fun spec_table(): Table; spec native fun spec_len(t: Table): num; spec native fun spec_contains(t: Table, k: K): bool; spec native fun spec_add(t: Table, k: K, v: V): Table; spec native fun spec_remove(t: Table, k: K): Table; spec native fun spec_get(t: Table, k: K): V; }