Merge branch 'jh/fractional' into 'master'
Fractional typeclass. A typeclass for fractional assertions, that is assertions that depend on a fraction and that can be split. This is used to derive generically a few other instances for framing , destructing, combining and spliting assertions of sums of fractions. I found it usefull when doing fraction-heavy proofs in LambdaRust. The Right Way To Do It would be to use a typeclass over the *predicate* itself. Unfortunately, the unification algorithm of typeclasses is not powerful enough to do the right beta-expansion that would expose the predicate applied to some fraction. Instead, the `Fractional` type class has as parameters both the predicate and the applied form that can be directly unified with the fractured assertion. Not very pretty. I wonder whether I should split this into two type classes: the first one would depend only on the predicate and would actually state the fractionality of it, and the second would do the beta-expansion job. What do you think? See merge request !23
No related branches found
No related tags found
Showing
- _CoqProject 1 addition, 0 deletions_CoqProject
- base_logic/lib/cancelable_invariants.v 8 additions, 9 deletionsbase_logic/lib/cancelable_invariants.v
- base_logic/lib/fractional.v 108 additions, 0 deletionsbase_logic/lib/fractional.v
- heap_lang/heap.v 23 additions, 32 deletionsheap_lang/heap.v
- heap_lang/proofmode.v 0 additions, 4 deletionsheap_lang/proofmode.v
Loading
Please register or sign in to comment