úΘ6%      !"#$None #This function allows to generalize  and   to more arguments. 7You could achieve the same with nested applications of assignment3 (,). %&'()*+,-./ 0123456   %&'()*+,-./ 0123456None7  x=1  y=2  z=3  w=3  x+y=3  y*z=6  z=3  y^w=8 7   7None/An expression is defined by a set of equations #and the variable at the top-level. BThe value of the expression equals the value of the top variable. 6Make a constant expression of a simple numeric value. #This function allows to generalize  and  to more arguments using 8 combinators.  Example:   fromRule3 rule x y - = runApply $ liftA2 rule (arg x) (arg y) / = runApply $ pure rule <*> arg x <*> arg y Building rules with  provides more granularity than using auxiliary $ rules! "1We are not able to implement a full Ord instance )including Eq superclass and comparisons, but we need to compute maxima. $Construct or decompose a pair. 9:;< !"#$=>?@A !"#$! "#$9:;< !"#$=>?@AB       !"#$%&'()*+,-./01234567829:-.;unique-logic-0.2UniqueLogic.ST.SystemUniqueLogic.ST.RuleUniqueLogic.ST.ExpressionApplyMVariable localVariableglobalVariableconstantsolvequery assignment2 assignment3argrunApplygeneric2generic3equmaxpairaddmulsquarepowT fromVariable fromRule1 fromRule2 fromRule3sqrsqrt=!==:=maximumrunM dependsRefvalueRefliftobjectresolve updateIfNew readSTRefM _assignment2 _assignment3$fApplicativeApply$fFunctorApply$fMonadM$fApplicativeM $fFunctorM_examplebaseControl.Applicative ApplicativeCons _fromRule2 _fromRule3 $fFractionalT$fNumT