Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CQL2/AT1.6: {p2} and {p3} contribute nothing to result #768

Closed
jerstlouis opened this issue Sep 27, 2022 · 4 comments · Fixed by #792
Closed

CQL2/AT1.6: {p2} and {p3} contribute nothing to result #768

jerstlouis opened this issue Sep 27, 2022 · 4 comments · Fixed by #792

Comments

@jerstlouis
Copy link
Member

jerstlouis commented Sep 27, 2022

In Conformance Test 6 for Basic CQL2 Abstract Test, the {p2} and {p3} predicates cannot possibly influence the results.
This may not be intended.
The truth table is like so:

            (NOT ({p1}) AND {p2}) OR ({p3} and NOT ({p4})) or not ({p1} AND {p4}))

 {p1} |  {p2} |  {p3} |  {p4} | (NOT ({p1}) AND {p2}) | ({p3} and NOT ({p4})) | not ({p1} AND {p4})) | result
=============================================================================================================
false | false | false | false |        false          |         false         |        true          | true
false | false | false | true  |        false          |         false         |        true          | true
false | false | true  | false |        false          |         true          |        true          | true
false | false | true  | true  |        false          |         false         |        true          | true
false | true  | false | false |        true           |         false         |        true          | true
false | true  | false | true  |        true           |         false         |        true          | true
false | true  | true  | false |        true           |         true          |        true          | true
false | true  | true  | true  |        true           |         false         |        true          | true
true  | false | false | false |        false          |         false         |        true          | true
true  | false | false | true  |        false          |         false         |        false         | false
true  | false | true  | false |        false          |         true          |        true          | true
true  | false | true  | true  |        false          |         false         |        false         | false
true  | true  | false | false |        false          |         false         |        true          | true
true  | true  | false | true  |        false          |         false         |        false         | false
true  | true  | true  | false |        false          |         true          |        true          | true
true  | true  | true  | true  |        false          |         false         |        false         | false

which shows that the final result is identical to the last part of the logical expression: not ({p1} AND {p4})

Perhaps having the AND outside and the OR inside instead would make the test more useful.

It would also be highly valuable to include actual features matched count for specific results of the datasets to make testing logical operators easier to implement.

@cportele cportele added the CQL2 label Sep 28, 2022
@cportele cportele self-assigned this Sep 28, 2022
@cportele
Copy link
Member

Thanks, @jerstlouis. All suggestions make sense to me. I will assign this to me.

@cportele cportele moved this from To do to To be drafted in Part 3: Filtering / Common Query Language (CQL2) Sep 28, 2022
@jerstlouis
Copy link
Member Author

Thanks @cportele . I quickly put together this truth table for my suggestion to switch AND / OR , and unfortunately it seems that it is not any better :(
Logic has interesting properties ;)
We would need different combinations.

            (NOT ({p1}) OR {p2}) AND ({p3} or NOT ({p4})) and not ({p1} OR {p4}))

 {p1} |  {p2} |  {p3} |  {p4} | (NOT ({p1}) OR {p2}) | ({p3} or NOT ({p4})) | not ({p1} OR {p4})) | result
=============================================================================================================
false | false | false | false |        true          |         true         |        true         | true
false | false | false | true  |        true          |         false        |        false        | false
false | false | true  | false |        true          |         true         |        true         | true
false | false | true  | true  |        true          |         true         |        false        | false
false | true  | false | false |        true          |         true         |        true         | true
false | true  | false | true  |        true          |         false        |        false        | false
false | true  | true  | false |        true          |         true         |        true         | true
false | true  | true  | true  |        true          |         true         |        false        | false
true  | false | false | false |        false         |         true         |        false        | false
true  | false | false | true  |        false         |         false        |        false        | false
true  | false | true  | false |        false         |         true         |        false        | false
true  | false | true  | true  |        false         |         true         |        false        | false
true  | true  | false | false |        true          |         true         |        false        | false
true  | true  | false | true  |        true          |         false        |        false        | false
true  | true  | true  | false |        true          |         true         |        false        | false
true  | true  | true  | true  |        true          |         true         |        false        | false

@cportele
Copy link
Member

Thanks for your efforts, I will have a look and see if I can come up with something that works better...

@jerstlouis
Copy link
Member Author

jerstlouis commented Feb 15, 2023

A Karnaugh map might be relevant / helpful ?

https://www.youtube.com/watch?v=RO5alU6PpSU

Actually sounds really fun to try to come up with something for this. Must resist.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

Successfully merging a pull request may close this issue.

2 participants