Probably 4.0.0 includes changes from Prodigy, which will be presented at CAV 2022. Thanks to all contributors, especially @Legotier for working on this merge (PR #3).
This release contains a number of breaking changes.
Breaking Changes
- Probably now requires Python 3.9.
- Renamed
Binop.LE
toBinop.LT
. - The multiplication operator
*
now has the same precedence as/
. This means that:
now binds less strongly than*
. - Renamed
FloatLitExpr
toRealLitExpr
andFloatType
toRealType
. - Renamed
UniformExpr
toDUniformExpr
. - Renamed
Assoc.Left
/Assoc.Right
toAssoc.LEFT
/Assoc.RIGHT
. - Compared to prodigy's implementation, the type checker now allows non-constant expressions as distribution expression parameters.
Added
- Added parameters: These can be used and declared like variables, but cannot be assigned to. See
ParameterDecl
. - Added new binops:
GT
,GEQ
,POWER
, andMODULO
. - New support for variables of
RealType
. - Added
ObserveInstr
. - Added
OptimizationQuery
. - Added
ProbabilityQueryInstr
. - Added
PrintInstr
. - Added
PlotInstr
. - Added
LoopInstr
. - Added
ExpectationInstr
. - Added more distribution expressions:
CUniformExpr
,GeometricExpr
,BernoulliExpr
,PoissonExpr
,LogDistExpr
,BinomialExpr
,IidSampleExpr
andDistrExpr
.
Fixed
TickInstr
are now type-checked.
Known Issues
- We currently rely on undocumented behavior of an old version of networkx. See #3 (comment)