Lines Matching refs:LHS
19 // to keep track of whether LHS and RHS are negated.
20 static bool implies(const LExpr *LHS, bool LNeg, const LExpr *RHS, bool RNeg) {
29 return implies(LHS, LNeg, A->left(), RNeg) &&
30 implies(LHS, LNeg, A->right(), RNeg);
39 return implies(LHS, LNeg, A->left(), RNeg) ||
40 implies(LHS, LNeg, A->right(), RNeg);
61 // to return !implies(LHS, RHS).
62 return implies(LHS, LNeg, cast<Not>(RHS)->exp(), !RNeg);
69 switch (LHS->kind()) {
75 return LNeg ? LeftAndOperator(cast<And>(LHS))
76 : LeftOrOperator(cast<And>(LHS));
82 return LNeg ? LeftOrOperator(cast<Or>(LHS))
83 : LeftAndOperator(cast<Or>(LHS));
86 // to return !implies(LHS, RHS).
87 return implies(cast<Not>(LHS)->exp(), !LNeg, RHS, RNeg);
99 return cast<Terminal>(LHS)->expr() == cast<Terminal>(RHS)->expr();
106 bool implies(const LExpr *LHS, const LExpr *RHS) {
107 // Start out by assuming that LHS and RHS are not negated.
108 return ::implies(LHS, false, RHS, false);