diff --git a/bip-0379.md b/bip-0379.md index 8241bded..a2b5d1fe 100644 --- a/bip-0379.md +++ b/bip-0379.md @@ -155,6 +155,10 @@ its type properties in function of those of their subexpressions. | `j:X` | X is Bn | B | o=oX; n; d; u=uX | `n:X` | X is B | B | z=zX; o=oX; n=nX; d=dX; u +The properties of a fragment assume that the conditions in its "Requires" column are met. They exist +only to reason about correctness, so they say nothing about an expression that does not meet them: +such an expression is not valid Miniscript. + #### Timelock Type Mixing There is one additional correctness property that Miniscript expressions must satisfy: @@ -207,6 +211,14 @@ The following table lists the malleability properties and requirement of each fr | `j:X` | | s=sX; e=fX | `n:X` | | s=sX; f=fX; e=eX +As in the correctness table, the properties of a fragment assume that the conditions in its +"Requires" column are met. They exist only to reason about malleability, so they say nothing about +an expression that does not meet them: such an expression is malleable, and so is every expression +containing it. + +Implementors of APIs which unconditionally return values for these properties should always return +false for malleable expressions. + ### Satisfaction The following table shows all valid satisfactions and dissatisfactions for every Miniscript, using