- Compatibility with Coq 8.20 and Paco 4.2.1-4.2.3
- Compatibility with Coq 8.19
- Add
Hint ModeonMonadIter, avoiding some infinite instance resolution loops - Rename
ITree.Basics.TacstoITree.Basics.Utils
- Compatibility with Coq 8.18
- Compatibility with Coq 8.16, 8.17, and paco 4.2.0
- Remove redundant
RelDec_stringinstances
-
In
ITree.Extra:- Refactor
IForestto reuseITree.Props.Leaf.
- Refactor
-
Add
Eq.RuttFacts: properties ofrutt. -
Add more lemmas about
euttandLeaf.
-
Create
coq-itree-extra. Under the namespaceITree.Extra:ITrace: ITrees as sets of tracesDijkstra: Dijkstra monads forever (POPL 2021)Secure: Indistinguishability relation on ITreesIForest: The "sets of itrees" monad
-
Add
Hint ModeonReSum, preventing some infinite loops in instance resolution. -
Add
rutt, a generalization ofeuttrelating trees with different event types,rutt RE RA RS : itree E R -> itree F S -> Prop. -
Add
Props.DivergenceandProps.Finite, with predicates (may_diverge,must_diverge,BoxFinite,DiamondFinite) about infinite and finite itrees. -
Add
Props.HasPost, a predicate transformer semantics for itree. -
Add
Props.Leaf, a membership relation on trees;Leafcan be seen as a dual tohas_post. -
Add classes for cartesian closed categories in
Basics.CategoryTheory. -
Add
Axioms, collecting all axioms used by this library and associated tactics. -
Add
Events.ExceptionFacts.
-
Change
ITree.bindfrom a notation to a function. This may break some proofs.- After simplifications, if there is
ITree.substin the goal, use the tacticITree.fold_substto change it back toITree.bind - After applying
eqit_bind, the goals are reversed.
- After simplifications, if there is
-
Reduce dependency on axioms. Basically, we require UIP for one inversion lemma
ITree.Eq.Eq.eqit_inv_Vis(and one notable corollary of it isITree.Eq.UpToTaus.eutt_conj). -
Fixed: scopes are not opened globally anymore; add
Local Open Scope itree_scope(alsocat_scope,monad_scope(from ext-lib)) to use those scopes. -
Drop support for Coq 8.8 and 8.9. (This version technically still builds with Coq 8.9 using
make, or Dune 2.8.4) -
Change the build system from
maketodune. -
Add modules:
ITree.Basics.HeterogeneousRelationsITree.Basics.CategoryRelations(the category of relations between types)ITree.Events.FailFacts
-
Add constructs for cartesian categories (i.e., categories with products) in
ITree.Basics.CategoryTheory.
-
Change
eqit_Visfrom<->to->; the converse iseqit_inv_Vis. -
Rename theorems in
ITree.Eq.Eq(trying to make them more consistent; mostly, uppercase initial of constructors, and lowercasel/r):eqitree_inv_Reteqitree_inv_Ret_reqitree_inv_Vis_reqitree_inv_Tau_reqit_inv_Reteqit_inv_Viseqit_inv_Taueqit_inv_Tau_leqit_inv_Tau_reqit_Tau_leqit_Tau_reutt_inv_Ret- Contradiction lemmas (where the two sides in an
eqitequation don't match) are refactored intoeqit_inv.
-
Add functions and theorems:
ITree.Basics.liftStateITree.Core.KTreeFacts.cat_iterITree.Eq.UpToTaus.eutt_conj,eutt_disj_l,eutt_disj_r,eutt_equiv,eutt_Proper_R
-
Add theorems in
ITree.Eq.Eq:eqit_inv_Vis_weakandeqit_Vis_gen, generalizingeqit_inv_Visandeqit_Vis.eq_itree_inv_bind_Viseqit_inv_bind_Taueutt_inv_bind_Taueqitree_inv_bind_Tau
-
Add module
ITree.Basics.MonadProp: the nondeterminism monad (_ -> Prop) -
Rename concepts related to monad-specific equivalence:
EqM->Eq1eqm->eq1EqMProps->Eq1EquivalenceMonadLaws->MonadLawsE(to avoid confusion with coq-ext-lib)
-
Fix the definition of
iterto be more extractable. It no longer loops when the body always evaluates to a simpleRet _. -
Add some inversion lemmas
-
Add
handleandhandlingto convert explicitly betweenHandlerand_ ~> itree _ -
In
Simple.v, fix the precedence level of the infix notation foreuttto 70.
- Require coq-ext-lib >= 0.11.1
- Change precedence of
>>=to level 58 (previously at level 50). - Add
tau_euttandtau_euttge(the latter was actually renamed fromtau_eutt).
-
Add compatibility with Coq 8.10 and 8.11
-
Require coq-ext-lib 0.10.3 (only this one version, not 0.10.2 or 0.11.0!) for notation compatibility.
-
Notation changes
-
Notation convention (from coq-ext-lib, PR 68): odd is right, even is left.
-
Change precedence of monad notations in
ITreeNotations.x <- t1 ;; t2,t1 ;; t2,' p <- t1 ;; t2,>=>at level 61 (previously level 60).
-
Change precedence of notation
-<at level 92 (previously level 90, but it is currently used by math-classes with right associativity). -
Remove notations
KTree.iterandKTree.loop(useiter (C := ktree _)instead for example).
-
-
Add
pure_inl,pure_inr. -
Add
eutt_interp_stateandeutt_interp_state_eq(the latter was actually renamed fromeutt_interp_state).
The previous release was not that stable... Too many changes to count.
Version 2.0.0 corresponds to our POPL20 paper.
First stable release