diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/FirDataFlowAnalyzer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/FirDataFlowAnalyzer.kt
index b20c3dd..b67d878 100644
--- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/FirDataFlowAnalyzer.kt
+++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/dfa/FirDataFlowAnalyzer.kt
@@ -391,6 +391,9 @@
             val constValue = const.value as Boolean
             val shouldInvert = isEq xor constValue
 
+            flow.addImplication((expressionVariable eq true) implies (operandVariable eq !shouldInvert))
+            flow.addImplication((expressionVariable eq false) implies (operandVariable eq shouldInvert))
+
             logicSystem.translateVariableFromConditionInStatements(
                 flow,
                 operandVariable,
@@ -968,6 +971,14 @@
         val rightVariable = variableStorage.getOrCreateVariable(flow, binaryLogicExpression.rightOperand)
         val operatorVariable = variableStorage.getOrCreateVariable(flow, binaryLogicExpression)
 
+        if (isAnd) {
+            flow.addImplication((operatorVariable eq true) implies (leftVariable eq true))
+            flow.addImplication((operatorVariable eq true) implies (rightVariable eq true))
+        } else {
+            flow.addImplication((operatorVariable eq false) implies (leftVariable eq false))
+            flow.addImplication((operatorVariable eq false) implies (rightVariable eq false))
+        }
+
         if (!node.leftOperandNode.isDead && node.rightOperandNode.isDead) {
             /*
              * If there was a jump from right argument then we know that we well exit from
@@ -1026,8 +1037,13 @@
         val previousFlow = node.previousFlow
         val booleanExpressionVariable = variableStorage.getOrCreateVariable(previousFlow, node.firstPreviousNode.fir)
         val variable = variableStorage.getOrCreateVariable(previousFlow, functionCall)
+        val flow = node.flow
+
+        flow.addImplication((variable eq true) implies (booleanExpressionVariable eq false))
+        flow.addImplication((variable eq false) implies (booleanExpressionVariable eq true))
+
         logicSystem.replaceVariableFromConditionInStatements(
-            node.flow,
+            flow,
             booleanExpressionVariable,
             variable,
             transform = { it.invertCondition() }
