Merge branch 'contractive' into 'master'
New definition of contractive. The current notion of `Contractive` does not allow one to deal with functions with multiple arguments, for example, binary functions that are contractive in both arguments (like `lft_vs` in lambdarust), or binary functions that are contractive in one of their arguments. To that end, I propose I reformulate the notion of `Contractive` so that we can express being contractive using a `Proper`. The new definition is: Definition dist_later {A : ofeT} (n : nat) (x y : A) : Prop := match n with 0 => True | S n => x ≡{n}≡ y end. Notation Contractive f := (∀ n, Proper (dist_later n ==> dist n) f). Also, it turns out that using this definition we can implement a `solve_contractive` tactic in the same way as the `solve_proper` tactic. Unfortunately, the new tactic does not quite work for the weakest precondition connective in Iris because the proof involves induction, and the induction hypothesis does not quite fit into the new `solve_contractive` tactic. See merge request !32
No related branches found
No related tags found
Showing
- algebra/ofe.v 43 additions, 18 deletionsalgebra/ofe.v
- algebra/sts.v 1 addition, 1 deletionalgebra/sts.v
- base_logic/lib/boxes.v 6 additions, 6 deletionsbase_logic/lib/boxes.v
- base_logic/lib/fractional.v 1 addition, 3 deletionsbase_logic/lib/fractional.v
- base_logic/lib/wsat.v 3 additions, 4 deletionsbase_logic/lib/wsat.v
- base_logic/primitive.v 5 additions, 6 deletionsbase_logic/primitive.v
- base_logic/upred.v 2 additions, 2 deletionsbase_logic/upred.v
- prelude/gmultiset.v 2 additions, 2 deletionsprelude/gmultiset.v
- prelude/tactics.v 14 additions, 20 deletionsprelude/tactics.v
- program_logic/weakestpre.v 7 additions, 11 deletionsprogram_logic/weakestpre.v
Loading
Please register or sign in to comment