~/bend-docscommunity

proofs/lib/lemmas/src/cache.bend checks

raw source on the hub · import bend-collections-laws-containers@1.0.0.0/proofs/lib/lemmas/src/cache.bend as Cache

3 imports
import Base
import ../types/model.bend as T
import ./time.bend as Time

Laws

law without provedsource · line 43 · raw

@xs:List<&2, String> -> @+key:String -> List<&2, String>

Types

type Cache source · line 6 · raw

@-K:Data -> @-V:Data -> Data

The list is oldest first; it contains only encoded keys, never values.

type Step source · line 9 · raw

@-K:Data -> @-V:Data -> Data

Definitions

def init source · line 12 · raw

@-K:Data -> @-V:Data -> @capacity:Nat -> Cache<K, V>

def new_checked source · line 15 · raw

@-K:Data -> @-V:Data -> @capacity:Nat -> @valid:Bool -> Result<&2, &2, String, Cache<K, V>>

def construct source · line 22 · raw

@-K:Data -> @-V:Data -> @capacity:U32 -> @size:U32 -> @zero:Bool -> @reserved:Bool -> @small:Bool -> Result<&2, &2, String, Cache<K, V>>

def new_with_size source · line 33 · raw

@-K:Data -> @-V:Data -> @+capacity:U32 -> @+size:U32 -> Result<&2, &2, String, Cache<K, V>>

def new source · line 36 · raw

@-K:Data -> @-V:Data -> @+capacity:U32 -> Result<&2, &2, String, Cache<K, V>>

def len source · line 39 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> Nat

def without_keep source · line 48 · raw

@h:String -> @tail:List<&2, String> -> @eq:Bool -> List<&2, String>

def events source · line 62 · raw

@-K:Data -> @-V:Data -> @cb:Bool -> @e:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V> -> List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.LruEvent<K, V>>

def removal_counts source · line 70 · raw

@m:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Metrics -> @capacity_eviction:Bool -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Metrics

def lookup_result source · line 78 · raw

@-K:Data -> @-V:Data -> @result:Pair(Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>>>, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>>) -> Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>>

def lookup source · line 82 · raw

@-K:Data -> @-V:Data -> @c:Cache<K, V> -> @code:String -> Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>>

def remove_present source · line 86 · raw

@-K:Data -> @-V:Data -> @c:Cache<K, V> -> @+key:String -> @evict:Bool -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V> -> Step<K, V>

def remove_found source · line 90 · raw

@-K:Data -> @-V:Data -> @c:Cache<K, V> -> @key:String -> @evict:Bool -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>> -> Step<K, V>

def remove_encoded source · line 97 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> @+key:String -> @evict:Bool -> Step<K, V>

def remove source · line 100 · raw

@-K:Data -> @-V:Data -> @encode:(@_:K -> String) -> @+c:Cache<K, V> -> @key:K -> Step<K, V>

def oldest_remove source · line 103 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> @order:List<&2, String> -> @evict:Bool -> Step<K, V>

def remove_oldest source · line 110 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> @evict:Bool -> Step<K, V>

def store source · line 114 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> @+code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @flag:Bool -> @evs:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.LruEvent<K, V>> -> Step<K, V>

def store_after_evict source · line 119 · raw

@-K:Data -> @-V:Data -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @step:Step<K, V> -> Step<K, V>

def add_room source · line 123 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @full:Bool -> Step<K, V>

def capacity source · line 130 · raw

@-K:Data -> @-V:Data -> @c:Cache<K, V> -> Nat

def add_found source · line 134 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> @code:String -> @key:K -> @value:V -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>> -> Step<K, V>

def add_with_lifetime source · line 141 · raw

@-K:Data -> @-V:Data -> @encode:(@_:K -> String) -> @+c:Cache<K, V> -> @+key:K -> @value:V -> @ns:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> Step<K, V>

def add source · line 145 · raw

@-K:Data -> @-V:Data -> @encode:(@_:K -> String) -> @+c:Cache<K, V> -> @key:K -> @value:V -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> Step<K, V>

def hit_counts source · line 149 · raw

@m:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Metrics -> @+tracked:Bool -> @hit:Bool -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Metrics

def counted source · line 159 · raw

@-K:Data -> @-V:Data -> @step:Step<K, V> -> @+tracked:Bool -> @hit:Bool -> Step<K, V>

def miss_after_remove source · line 163 · raw

@-K:Data -> @-V:Data -> @step:Step<K, V> -> @+tracked:Bool -> Step<K, V>

def touch_order source · line 167 · raw

@order:List<&2, String> -> @+code:String -> @touch:Bool -> List<&2, String>

def read_live source · line 174 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> @code:String -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V> -> @+tracked:Bool -> Step<K, V>

def read_expiry source · line 178 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> @code:String -> @entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V> -> @+tracked:Bool -> @expired:Bool -> Step<K, V>

def read_found source · line 185 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> @code:String -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @+tracked:Bool -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>> -> Step<K, V>

def read_encoded source · line 192 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> @+code:String -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @+tracked:Bool -> Step<K, V>

def get source · line 195 · raw

@-K:Data -> @-V:Data -> @encode:(@_:K -> String) -> @+c:Cache<K, V> -> @key:K -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> Step<K, V>

def peek source · line 198 · raw

@-K:Data -> @-V:Data -> @encode:(@_:K -> String) -> @+c:Cache<K, V> -> @key:K -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> Step<K, V>

def refresh_present source · line 201 · raw

@-K:Data -> @-V:Data -> @c:Cache<K, V> -> @+code:String -> @+entry:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V> -> Step<K, V>

def refresh_found source · line 205 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> @+code:String -> @deadline:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @found:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>> -> Step<K, V>

def get_and_refresh source · line 213 · raw

@-K:Data -> @-V:Data -> @encode:(@_:K -> String) -> @+c:Cache<K, V> -> @key:K -> @ns:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> Step<K, V>

def set_lifetime source · line 217 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> @ns:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> Cache<K, V>

def metrics source · line 221 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Metrics

def reset_metrics source · line 225 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> Pair(Cache<K, V>, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Metrics)

def oldest_read source · line 229 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> @order:List<&2, String> -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> Step<K, V>

def get_oldest source · line 236 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> @now:0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Int64 -> Step<K, V>

def step_cache source · line 240 · raw

@-K:Data -> @-V:Data -> @s:Step<K, V> -> Cache<K, V>

def step_events source · line 244 · raw

@-K:Data -> @-V:Data -> @s:Step<K, V> -> List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.LruEvent<K, V>>

def clear_metrics source · line 248 · raw

@-K:Data -> @-V:Data -> @c:Cache<K, V> -> Cache<K, V>

def purge_loop source · line 253 · raw

@-K:Data -> @-V:Data -> @fuel:Nat -> @c:Cache<K, V> -> Step<K, V>

No accumulated event log is stored in the cache itself.

def purge source · line 262 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> Step<K, V>

def first_entry source · line 265 · raw

@-K:Data -> @-V:Data -> @c:Cache<K, V> -> @order:List<&2, String> -> Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>>

def oldest_entry source · line 272 · raw

@-K:Data -> @-V:Data -> @+c:Cache<K, V> -> Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>>

def finite_entry source · line 276 · raw

@-K:Data -> @-V:Data -> @e:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>> -> Bool

def purge_needs_clock source · line 284 · raw

@-K:Data -> @-V:Data -> @c:Cache<K, V> -> Bool

One oldest inspection. Immortal or empty means stop and consumes no clock read.

def collect_entry source · line 287 · raw

@-K:Data -> @-V:Data -> @entry:Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>> -> @rest:List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>> -> List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>>

def entries_go source · line 294 · raw

@-K:Data -> @-V:Data -> @order:List<&2, String> -> @+table:Map<&2, Maybe<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>>> -> List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>>

def entries source · line 302 · raw

@-K:Data -> @-V:Data -> @c:Cache<K, V> -> List<&2, 0x5c489f5d9646d7cc9aa3dd8137e9dc07/proofs/lib/lemmas/types/model.Entry<K, V>>

Raw enumeration. Public protocol Keys/Values first finish the oldest-only purge.

def map_size source · line 306 · raw

@-K:Data -> @-V:Data -> @c:Cache<K, V> -> Nat