Standard Relational Operators
Standard relational operators are the core functionality of the AbstractLogic
package. They allow for comparison between variables and comparison between variables and constants.
Basic Operators
=
or==
checks that the left equals the right.!=
(or≠
not yet implemented) checks that the left does not equal the right.>
checks that the left is greater than the right.>=
checks that the left is greater than or equal to the right.<
checks that the right is greater than the left.<=
checks that the right is greater than or equal to the left.
Much Greater Than or Much Less Than
>>
checks that the left is greater than the right by at least 2eg. a >> b
.<<
checks that the right is greater than the left by at least 2eg. a << b
.
Even and Odd Operators
&
checks if one or both sides (when two sides are present) is odd. In the case of variables defined 0,1 this asserts that one or more variables is equal to 1.eg. &a
!
checks if one or both sides (when two sides are present) is even. In the case of variables defined 0,1 this asserts that one or more variables is equal to 0.eg. !a
^
checks if one side is odd and one side is even.eg. b ^ a
Grouping Syntax
,
on the left (or right) is treated as saying that anything on that side must conform to whatever operator follows.a, b = 1
forcesa
andb
to equal 1.|
on the left (or right) is treated as saying that at least one value on that side must conform to whatever operator follows.a | b = 1
forcesa
orb
or both to equal 1. Note:a, b |= 1
is equivalent toa | b = 1
but not preferred.
Grouping Constraints
{#,#}
or{#}
: it is often helpful to qualify the number of matchesor
syntax can make. Specifying{#}
at the end of a|
set will force a certain number of matches. Specifying{#1,#2}
will force a number of matches no less than#1
and no more than#2
.
For example: a|b|c|d = 1 {3}
will force at exactly three of the set a
, b
, c
, and d
to equal 1.
julia> logicalparse("a, b, c, d, e ∈ 1:6; a|b|c|d = 1 {3}")
a, b, c, d, e ∈ 1:6 feasible outcomes 7776 ✓ :2 5 6 6 1
a|b|c|d = 1 {3} feasible outcomes 120 ✓ :1 1 4 1 5
Math Operators
AbstractLogic
can take a number of standard math operators +
, -
, *
, and /
(or the rounding operator ÷
).