============ And vs Or 1 ============ from Foo f where f = f and f = f or f = f select f --- (ql (moduleMember (select (varDecl (typeExpr (className)) (varName (simpleId))) (disjunction (conjunction (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId)))) (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId))))) (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId))))) (asExprs (asExpr (variable (varName (simpleId)))))))) ============ And vs Or 2 ============ from Foo f where f = f or f = f and f = f select f --- (ql (moduleMember (select (varDecl (typeExpr (className)) (varName (simpleId))) (disjunction (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId)))) (conjunction (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId)))) (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId)))))) (asExprs (asExpr (variable (varName (simpleId)))))))) ============ Or vs implies ============ from Foo f where (f = f or f = f implies f = f) and (f = f implies f = f or f = f) select f --- (ql (moduleMember (select (varDecl (typeExpr (className)) (varName (simpleId))) (conjunction (par_expr (implication (disjunction (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId)))) (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId))))) (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId)))))) (par_expr (implication (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId)))) (disjunction (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId)))) (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId)))))))) (asExprs (asExpr (variable (varName (simpleId)))))))) ============ if then else ============ from Foo f where if f = f then f = f else f = f select f --- (ql (moduleMember (select (varDecl (typeExpr (className)) (varName (simpleId))) (if_term (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId)))) (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId)))) (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId))))) (asExprs (asExpr (variable (varName (simpleId)))))))) ========== and vs not ========== from Foo f where not f = f and f = f select f --- (ql (moduleMember (select (varDecl (typeExpr (className)) (varName (simpleId))) (conjunction (negation (not) (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId))))) (comp_term (variable (varName (simpleId))) (compop (eq)) (variable (varName (simpleId))))) (asExprs (asExpr (variable (varName (simpleId)))))))) ========== call vs plus ========== select a+(b) --- (ql (moduleMember (select (asExprs (asExpr (classless_predicate_call (aritylessPredicateExpr (literalId)) (closure (plus)) (variable (varName (simpleId))))))))) ========== cast vs subtract ========== select (A)-(b) --- (ql (moduleMember (select (asExprs (asExpr (prefix_cast (typeExpr (className)) (unary_expr (unop (minus)) (par_expr (variable (varName (simpleId)))))))))))