[ANN]: Abstract Logic Solver for Julia - AbstractLogic.jl

@StevenSiew in case I did not answer your question properly.

Search looks for outcome set in which the search criteria is held to be true. In the simple case search {{i}}=1 it will place each variable in the place of {{i}} in your feasible set and see if any of them will equal 1.

Search is always in reference to either {{i}} or {{j}} which when there is no attributes specified, are equivalent. Also, they both can’t be present in a single queiry. It is important to note that they {{i}} location is always in reference to the current variable. If you say searched for {{i+1}}==1 then you are searching for variable in which the variable to its immediate right takes the value 1.

In a solution space there is no guarantee that any variable will take the value 1. That is why the search returns the number of outcomes out of the feasible space in which the value 1 is taken by the variable {{i}}.

The example of {{i}} > {{!i}} is basically asking for every i is it the case that for all variables not i, the value of i greater.

Right now there are three wildcards i, j, and J but J might get deprecated as I have not yet found a problem in which it is necessary. These wildcard are treated special and cannot be substituted for {{k}} or {{n}} as they have no special association. That being said, if you have a variable such as b defined in your set you can create a wildcard that references it.

abstractlogic> t(1)
abstractlogic> clear;; a,b,c ∈ 1:4; a|c = 1; a > b; b > c
Activeset Already Empty

a,b,c ∈ 1:4              Feasible Outcomes: 64   Perceived Outcomes: 64 ✓        :3 1 1
a|c = 1                          Feasible Outcomes: 28   Perceived Outcomes: 64 ✓        :4 2 1
a > b                    Feasible Outcomes: 6    Perceived Outcomes: 9 ✓         :4 3 1
b > c                    Feasible Outcomes: 3    Perceived Outcomes: 4 ✓         :4 2 1

abstractlogic> {{>=:b}} != 4
{{>=:b}} != 4  >>> b != 4 >>> c != 4
                 Feasible Outcomes: 3    Perceived Outcomes: 4 ✓         :4 2 1

The above code generated a wildcard which took on variable names equal to or to the right of b (b,c) and forced their values not not equal 4.

Not sure if I have answered your question.

By the way, I have put a lot of time into documenting everything… Most of your questions relate to the topic titled wildcards: https://github.com/EconometricsBySimulation/AbstractLogic.jl/blob/master/docs/src/man/wildcards.md

Hopefully that will answer most of your questions.

As for search specifically, I am working on a new section which will give more information but if you look here
You will find the following:

Searches for a possible match among a LogicalCombo in which the wildcard term is true. Search requires the use of a wildcard. In the event that a wildcard is missing, search will insert a {{i}} to the left of the command. {{i+1}} can be used to search for relationships between the ith column and the column one step to the right.

I apologize, Documenter.jl does not support builds on windows and I have not yet figured out a workaround.

Thank you. This was helpful.