Skip to content
Snippets Groups Projects
Forked from Iris / stdpp
1062 commits behind the upstream repository.
  • Robbert Krebbers's avatar
    39e479ce
    Refactor. · 39e479ce
    Robbert Krebbers authored
    1. Improve naming
    2. Make `wf_` proofs of `gmap` and `pmap` opaque
    3. Avoid `bind` and `fmap` combinators for `SProp`
    4. Drop `simpl` tests
    
    Items 2-3 are crucial for performance, otherwise each operation checks if the map
    is still well-formed, which destroys log(n) complexity of map operations.
    
    Why 3 is needed is subtle: The `bind` and `fmap` lemmas for `SProp` contain Booleans
    as implicit arguments, which are eagerly evaluated by `vm_compute`.
    
    As a result of 2-3, `simpl` will not normalize proofs to `stt`, and `simpl` tests
    do not give a desirable result.
    39e479ce
    History
    Refactor.
    Robbert Krebbers authored
    1. Improve naming
    2. Make `wf_` proofs of `gmap` and `pmap` opaque
    3. Avoid `bind` and `fmap` combinators for `SProp`
    4. Drop `simpl` tests
    
    Items 2-3 are crucial for performance, otherwise each operation checks if the map
    is still well-formed, which destroys log(n) complexity of map operations.
    
    Why 3 is needed is subtle: The `bind` and `fmap` lemmas for `SProp` contain Booleans
    as implicit arguments, which are eagerly evaluated by `vm_compute`.
    
    As a result of 2-3, `simpl` will not normalize proofs to `stt`, and `simpl` tests
    do not give a desirable result.