úÎ$ÌH      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG None #This function allows to generalize  and   to more arguments. 7You could achieve the same with nested applications of assignment3 (,). HIJKLMNOPQRST UVWXY   HIJKLMNOPQRST UVWXYNone    None ZZNone[\  [\None You might be tempted to use the  rule to collect parameters *for rules with more than three arguments. GThis is generally not a good idea since this way you lose granularity. 3For building rules with more than three arguments, (please build according assignments with  and  'and bundle these assignments to rules. This is the way,  and  work.  !"#  !"#  !"#  !"#None%/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 ] 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 3 rules! 11We are not able to implement a full Ord instance )including Eq superclass and comparisons, but we need to compute maxima. 3Construct or decompose a pair. $^%_&'()*+,`a-./0123bcde$%&'()*+,-./0123%&'()*$+,0/-.123$^%_&'()*+,`a-./0123bcdeNoneD  x=1  y=2  z=3  x+y=3  y*z=6  z=3 456789:;<=>?@ABCDEfg456789:;<=>?@ABCDE@A?5>=<;:98764BCDE 45 >=<;:9876?@ABCDEfgNoneF  x=1  y=2  z=3  w=3  x+y=3  y*z=6  z=3  y^w=8 FFFF NoneGGGGh         !"#$%&'()*+,-./0123455678 8 9:; <=>?@ABCDEFGHI IJKL 9MNOPDEQRSunique-logic-0.3UniqueLogic.ST.SystemLogUniqueLogic.ST.RuleLogUniqueLogic.ST.SystemUniqueLogic.ST.SystemLabelUniqueLogic.ST.RuleUniqueLogic.ST.ExpressionUniqueLogic.ST.Example.LabelUniqueLogic.ST.Example.Rule!UniqueLogic.ST.Example.ExpressionApplyTVariable localVariableglobalVariableconstantsolvequery assignment2 assignment3argrunApplygeneric2generic3Var plainVariableequmaxpairaddmulsquarepow fromVariable fromRule1 fromRule2 fromRule3sqrsqrt=!==:=maximumNameTermSignumAbsDivMulSubAddMaxConstAssignsAssignrule expressionexampleConsrunUpdate dependsRefvalueRefliftobjectresolvemw updateIfNew readSTRefM$fApplicativeApply$fFunctorApply$fMonadT$fApplicativeT $fFunctorT $fVarVariablebaseControl.Applicative Applicative _fromRule2 _fromRule3 $fFractionalT$fNumT$fFractionalTerm $fNumTerm