Skip to content

Commit

Permalink
[P4-Symbolic] Remove disjointness check on set of tables that get eva…
Browse files Browse the repository at this point in the history
…luate in each branch of a conditional.
  • Loading branch information
kheradmandG authored and VSuryaprasad-HCL committed Nov 26, 2024
1 parent 161cec5 commit b4e7210
Show file tree
Hide file tree
Showing 12 changed files with 730 additions and 629 deletions.
8 changes: 4 additions & 4 deletions p4_symbolic/symbolic/conditional.cc
Original file line number Diff line number Diff line change
Expand Up @@ -66,10 +66,10 @@ absl::StatusOr<SymbolicTableMatches> EvaluateConditional(
data_plane, get_next_control_for_branch(conditional.else_branch()),
state, translator, else_guard));

// Now we have two traces that need merging. The two traces are guaranteed to
// contain different table matches (see go/optimized-symbolic-execution).
ASSIGN_OR_RETURN(SymbolicTableMatches merged_matches,
util::MergeDisjointTableMatches(if_matches, else_matches));
// Now we have two traces that need merging.
ASSIGN_OR_RETURN(
SymbolicTableMatches merged_matches,
util::MergeMatchesOnCondition(condition, if_matches, else_matches));

if (!conditional.optimized_symbolic_execution_info()
.continue_to_merge_point()) {
Expand Down
47 changes: 26 additions & 21 deletions p4_symbolic/symbolic/expected/basic.smt2
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
(declare-fun ipv4.dstAddr () (_ BitVec 32))
(declare-fun ipv4.$valid$ () Bool)
(assert
(let (($x123 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x123)))
(let (($x125 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x125)))
(assert
(let (($x45 (= ipv4.dstAddr (_ bv168427520 32))))
(let (($x46 (and true $x45)))
Expand Down Expand Up @@ -34,7 +34,8 @@
(let (($x45 (= ipv4.dstAddr (_ bv168427520 32))))
(let (($x46 (and true $x45)))
(let (($x60 (and $x42 $x46)))
(let ((?x112 (ite $x60 1 ?x102)))
(let ((?x120 (ite ipv4.$valid$ (ite $x60 1 ?x102) (- 1))))
(let (($x119 (ite ipv4.$valid$ $x42 false)))
(let (($x61 (not $x46)))
(let (($x65 (and $x61 (not (and true (= ((_ extract 31 16) ipv4.dstAddr) ((_ extract 31 16) (_ bv168427520 32))))))))
(let (($x69 (and $x65 (not (and true (= ((_ extract 31 16) ipv4.dstAddr) ((_ extract 31 16) (_ bv336855040 32))))))))
Expand All @@ -46,7 +47,7 @@
(let (($x63 (and (and $x42 $x61) $x50)))
(let ((?x113 (ite $x60 (_ bv1 9) (ite $x63 (_ bv0 9) (ite $x67 (_ bv1 9) (ite $x71 (_ bv1 9) ?x77))))))
(let (($x41 (= ?x113 (_ bv511 9))))
(and (and (not $x41) $x42) (= ?x112 (- 1)))))))))))))))))))))))
(and (and (not $x41) $x119) (= ?x120 (- 1))))))))))))))))))))))))
(check-sat)

;
Expand All @@ -56,8 +57,8 @@
(declare-fun ipv4.dstAddr () (_ BitVec 32))
(declare-fun ipv4.$valid$ () Bool)
(assert
(let (($x123 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x123)))
(let (($x125 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x125)))
(assert
(let (($x45 (= ipv4.dstAddr (_ bv168427520 32))))
(let (($x46 (and true $x45)))
Expand Down Expand Up @@ -85,7 +86,8 @@
(let (($x45 (= ipv4.dstAddr (_ bv168427520 32))))
(let (($x46 (and true $x45)))
(let (($x60 (and $x42 $x46)))
(let ((?x112 (ite $x60 1 ?x102)))
(let ((?x120 (ite ipv4.$valid$ (ite $x60 1 ?x102) (- 1))))
(let (($x119 (ite ipv4.$valid$ $x42 false)))
(let (($x61 (not $x46)))
(let (($x65 (and $x61 (not (and true (= ((_ extract 31 16) ipv4.dstAddr) ((_ extract 31 16) (_ bv168427520 32))))))))
(let (($x69 (and $x65 (not (and true (= ((_ extract 31 16) ipv4.dstAddr) ((_ extract 31 16) (_ bv336855040 32))))))))
Expand All @@ -97,8 +99,8 @@
(let (($x63 (and (and $x42 $x61) $x50)))
(let ((?x113 (ite $x60 (_ bv1 9) (ite $x63 (_ bv0 9) (ite $x67 (_ bv1 9) (ite $x71 (_ bv1 9) ?x77))))))
(let (($x41 (= ?x113 (_ bv511 9))))
(let (($x244 (and (not $x41) $x42)))
(and $x244 (= ?x112 0)))))))))))))))))))))))
(let (($x246 (and (not $x41) $x119)))
(and $x246 (= ?x120 0))))))))))))))))))))))))
(check-sat)

;
Expand All @@ -108,8 +110,8 @@
(declare-fun ipv4.dstAddr () (_ BitVec 32))
(declare-fun ipv4.$valid$ () Bool)
(assert
(let (($x123 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x123)))
(let (($x125 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x125)))
(assert
(let (($x45 (= ipv4.dstAddr (_ bv168427520 32))))
(let (($x46 (and true $x45)))
Expand Down Expand Up @@ -137,7 +139,8 @@
(let (($x45 (= ipv4.dstAddr (_ bv168427520 32))))
(let (($x46 (and true $x45)))
(let (($x60 (and $x42 $x46)))
(let ((?x112 (ite $x60 1 ?x102)))
(let ((?x120 (ite ipv4.$valid$ (ite $x60 1 ?x102) (- 1))))
(let (($x119 (ite ipv4.$valid$ $x42 false)))
(let (($x61 (not $x46)))
(let (($x65 (and $x61 (not (and true (= ((_ extract 31 16) ipv4.dstAddr) ((_ extract 31 16) (_ bv168427520 32))))))))
(let (($x69 (and $x65 (not (and true (= ((_ extract 31 16) ipv4.dstAddr) ((_ extract 31 16) (_ bv336855040 32))))))))
Expand All @@ -149,7 +152,7 @@
(let (($x63 (and (and $x42 $x61) $x50)))
(let ((?x113 (ite $x60 (_ bv1 9) (ite $x63 (_ bv0 9) (ite $x67 (_ bv1 9) (ite $x71 (_ bv1 9) ?x77))))))
(let (($x41 (= ?x113 (_ bv511 9))))
(and (and (not $x41) $x42) (= ?x112 1))))))))))))))))))))))
(and (and (not $x41) $x119) (= ?x120 1)))))))))))))))))))))))
(check-sat)

;
Expand All @@ -159,8 +162,8 @@
(declare-fun ipv4.dstAddr () (_ BitVec 32))
(declare-fun ipv4.$valid$ () Bool)
(assert
(let (($x123 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x123)))
(let (($x125 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x125)))
(assert
(let (($x45 (= ipv4.dstAddr (_ bv168427520 32))))
(let (($x46 (and true $x45)))
Expand Down Expand Up @@ -188,7 +191,8 @@
(let (($x45 (= ipv4.dstAddr (_ bv168427520 32))))
(let (($x46 (and true $x45)))
(let (($x60 (and $x42 $x46)))
(let ((?x112 (ite $x60 1 ?x102)))
(let ((?x120 (ite ipv4.$valid$ (ite $x60 1 ?x102) (- 1))))
(let (($x119 (ite ipv4.$valid$ $x42 false)))
(let (($x61 (not $x46)))
(let (($x65 (and $x61 (not (and true (= ((_ extract 31 16) ipv4.dstAddr) ((_ extract 31 16) (_ bv168427520 32))))))))
(let (($x69 (and $x65 (not (and true (= ((_ extract 31 16) ipv4.dstAddr) ((_ extract 31 16) (_ bv336855040 32))))))))
Expand All @@ -200,7 +204,7 @@
(let (($x63 (and (and $x42 $x61) $x50)))
(let ((?x113 (ite $x60 (_ bv1 9) (ite $x63 (_ bv0 9) (ite $x67 (_ bv1 9) (ite $x71 (_ bv1 9) ?x77))))))
(let (($x41 (= ?x113 (_ bv511 9))))
(and (and (not $x41) $x42) (= ?x112 2))))))))))))))))))))))
(and (and (not $x41) $x119) (= ?x120 2)))))))))))))))))))))))
(check-sat)

;
Expand All @@ -210,8 +214,8 @@
(declare-fun ipv4.dstAddr () (_ BitVec 32))
(declare-fun ipv4.$valid$ () Bool)
(assert
(let (($x123 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x123)))
(let (($x125 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x125)))
(assert
(let (($x45 (= ipv4.dstAddr (_ bv168427520 32))))
(let (($x46 (and true $x45)))
Expand Down Expand Up @@ -239,7 +243,8 @@
(let (($x45 (= ipv4.dstAddr (_ bv168427520 32))))
(let (($x46 (and true $x45)))
(let (($x60 (and $x42 $x46)))
(let ((?x112 (ite $x60 1 ?x102)))
(let ((?x120 (ite ipv4.$valid$ (ite $x60 1 ?x102) (- 1))))
(let (($x119 (ite ipv4.$valid$ $x42 false)))
(let (($x61 (not $x46)))
(let (($x65 (and $x61 (not (and true (= ((_ extract 31 16) ipv4.dstAddr) ((_ extract 31 16) (_ bv168427520 32))))))))
(let (($x69 (and $x65 (not (and true (= ((_ extract 31 16) ipv4.dstAddr) ((_ extract 31 16) (_ bv336855040 32))))))))
Expand All @@ -251,6 +256,6 @@
(let (($x63 (and (and $x42 $x61) $x50)))
(let ((?x113 (ite $x60 (_ bv1 9) (ite $x63 (_ bv0 9) (ite $x67 (_ bv1 9) (ite $x71 (_ bv1 9) ?x77))))))
(let (($x41 (= ?x113 (_ bv511 9))))
(and (and (not $x41) $x42) (= ?x112 3))))))))))))))))))))))
(and (and (not $x41) $x119) (= ?x120 3)))))))))))))))))))))))
(check-sat)

138 changes: 70 additions & 68 deletions p4_symbolic/symbolic/expected/conditional.smt2
Original file line number Diff line number Diff line change
Expand Up @@ -4,30 +4,31 @@
(declare-fun standard_metadata.egress_spec () (_ BitVec 9))
(declare-fun ethernet.dst_addr () (_ BitVec 48))
(assert
(let (($x59 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x59)))
(let (($x61 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x61)))
(assert
(let (($x31 (= standard_metadata.ingress_port (concat (_ bv0 8) (_ bv0 1)))))
(let (($x33 (and true $x31)))
(let (($x34 (and true (not $x31))))
(let ((?x45 (ite (and true (not (and true (= ethernet.dst_addr (_ bv1 48))))) (_ bv511 9) (ite $x34 (_ bv511 9) (ite $x33 (_ bv511 9) standard_metadata.egress_spec)))))
(let (($x40 (= ethernet.dst_addr (_ bv1 48))))
(let (($x41 (and true $x40)))
(let (($x42 (and true $x41)))
(let ((?x50 (ite $x42 (_ bv1 9) ?x45)))
(let (($x52 (= ?x50 (_ bv511 9))))
(or $x52 (or (or false (= ?x50 (_ bv0 9))) (= ?x50 (_ bv1 9))))))))))))))
(let ((?x47 (ite (and true (not (and true (= ethernet.dst_addr (_ bv1 48))))) (_ bv511 9) (ite $x34 (_ bv511 9) (ite $x33 (_ bv511 9) standard_metadata.egress_spec)))))
(let (($x42 (= ethernet.dst_addr (_ bv1 48))))
(let (($x43 (and true $x42)))
(let (($x44 (and true $x43)))
(let ((?x52 (ite $x44 (_ bv1 9) ?x47)))
(let (($x54 (= ?x52 (_ bv511 9))))
(or $x54 (or (or false (= ?x52 (_ bv0 9))) (= ?x52 (_ bv1 9))))))))))))))
(assert
(let (($x31 (= standard_metadata.ingress_port (concat (_ bv0 8) (_ bv0 1)))))
(let (($x33 (and true $x31)))
(let (($x39 (ite $x31 $x33 false)))
(let (($x34 (and true (not $x31))))
(let ((?x45 (ite (and true (not (and true (= ethernet.dst_addr (_ bv1 48))))) (_ bv511 9) (ite $x34 (_ bv511 9) (ite $x33 (_ bv511 9) standard_metadata.egress_spec)))))
(let (($x40 (= ethernet.dst_addr (_ bv1 48))))
(let (($x41 (and true $x40)))
(let (($x42 (and true $x41)))
(let ((?x50 (ite $x42 (_ bv1 9) ?x45)))
(let (($x52 (= ?x50 (_ bv511 9))))
(and (and (not $x52) $x33) (= (- 1) (- 1)))))))))))))
(let ((?x47 (ite (and true (not (and true (= ethernet.dst_addr (_ bv1 48))))) (_ bv511 9) (ite $x34 (_ bv511 9) (ite $x33 (_ bv511 9) standard_metadata.egress_spec)))))
(let (($x42 (= ethernet.dst_addr (_ bv1 48))))
(let (($x43 (and true $x42)))
(let (($x44 (and true $x43)))
(let ((?x52 (ite $x44 (_ bv1 9) ?x47)))
(let (($x54 (= ?x52 (_ bv511 9))))
(and (and (not $x54) $x39) (= (- 1) (- 1))))))))))))))
(check-sat)

;
Expand All @@ -36,30 +37,31 @@
(declare-fun standard_metadata.egress_spec () (_ BitVec 9))
(declare-fun ethernet.dst_addr () (_ BitVec 48))
(assert
(let (($x59 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x59)))
(let (($x61 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x61)))
(assert
(let (($x31 (= standard_metadata.ingress_port (concat (_ bv0 8) (_ bv0 1)))))
(let (($x33 (and true $x31)))
(let (($x34 (and true (not $x31))))
(let ((?x45 (ite (and true (not (and true (= ethernet.dst_addr (_ bv1 48))))) (_ bv511 9) (ite $x34 (_ bv511 9) (ite $x33 (_ bv511 9) standard_metadata.egress_spec)))))
(let (($x40 (= ethernet.dst_addr (_ bv1 48))))
(let (($x41 (and true $x40)))
(let (($x42 (and true $x41)))
(let ((?x50 (ite $x42 (_ bv1 9) ?x45)))
(let (($x52 (= ?x50 (_ bv511 9))))
(or $x52 (or (or false (= ?x50 (_ bv0 9))) (= ?x50 (_ bv1 9))))))))))))))
(let ((?x47 (ite (and true (not (and true (= ethernet.dst_addr (_ bv1 48))))) (_ bv511 9) (ite $x34 (_ bv511 9) (ite $x33 (_ bv511 9) standard_metadata.egress_spec)))))
(let (($x42 (= ethernet.dst_addr (_ bv1 48))))
(let (($x43 (and true $x42)))
(let (($x44 (and true $x43)))
(let ((?x52 (ite $x44 (_ bv1 9) ?x47)))
(let (($x54 (= ?x52 (_ bv511 9))))
(or $x54 (or (or false (= ?x52 (_ bv0 9))) (= ?x52 (_ bv1 9))))))))))))))
(assert
(let (($x34 (and true (not (= standard_metadata.ingress_port (concat (_ bv0 8) (_ bv0 1)))))))
(let (($x31 (= standard_metadata.ingress_port (concat (_ bv0 8) (_ bv0 1)))))
(let (($x33 (and true $x31)))
(let ((?x45 (ite (and true (not (and true (= ethernet.dst_addr (_ bv1 48))))) (_ bv511 9) (ite $x34 (_ bv511 9) (ite $x33 (_ bv511 9) standard_metadata.egress_spec)))))
(let (($x40 (= ethernet.dst_addr (_ bv1 48))))
(let (($x41 (and true $x40)))
(let (($x42 (and true $x41)))
(let ((?x50 (ite $x42 (_ bv1 9) ?x45)))
(let (($x52 (= ?x50 (_ bv511 9))))
(and (and (not $x52) $x34) (= (- 1) (- 1)))))))))))))
(let (($x40 (ite $x31 false $x34)))
(let ((?x38 (ite $x34 (_ bv511 9) (ite (and true $x31) (_ bv511 9) standard_metadata.egress_spec))))
(let ((?x47 (ite (and true (not (and true (= ethernet.dst_addr (_ bv1 48))))) (_ bv511 9) ?x38)))
(let (($x42 (= ethernet.dst_addr (_ bv1 48))))
(let (($x43 (and true $x42)))
(let (($x44 (and true $x43)))
(let ((?x52 (ite $x44 (_ bv1 9) ?x47)))
(let (($x54 (= ?x52 (_ bv511 9))))
(and (and (not $x54) $x40) (= (- 1) (- 1))))))))))))))
(check-sat)

;
Expand All @@ -68,31 +70,31 @@
(declare-fun standard_metadata.egress_spec () (_ BitVec 9))
(declare-fun ethernet.dst_addr () (_ BitVec 48))
(assert
(let (($x59 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x59)))
(let (($x61 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x61)))
(assert
(let (($x31 (= standard_metadata.ingress_port (concat (_ bv0 8) (_ bv0 1)))))
(let (($x33 (and true $x31)))
(let (($x34 (and true (not $x31))))
(let ((?x45 (ite (and true (not (and true (= ethernet.dst_addr (_ bv1 48))))) (_ bv511 9) (ite $x34 (_ bv511 9) (ite $x33 (_ bv511 9) standard_metadata.egress_spec)))))
(let (($x40 (= ethernet.dst_addr (_ bv1 48))))
(let (($x41 (and true $x40)))
(let (($x42 (and true $x41)))
(let ((?x50 (ite $x42 (_ bv1 9) ?x45)))
(let (($x52 (= ?x50 (_ bv511 9))))
(or $x52 (or (or false (= ?x50 (_ bv0 9))) (= ?x50 (_ bv1 9))))))))))))))
(let ((?x47 (ite (and true (not (and true (= ethernet.dst_addr (_ bv1 48))))) (_ bv511 9) (ite $x34 (_ bv511 9) (ite $x33 (_ bv511 9) standard_metadata.egress_spec)))))
(let (($x42 (= ethernet.dst_addr (_ bv1 48))))
(let (($x43 (and true $x42)))
(let (($x44 (and true $x43)))
(let ((?x52 (ite $x44 (_ bv1 9) ?x47)))
(let (($x54 (= ?x52 (_ bv511 9))))
(or $x54 (or (or false (= ?x52 (_ bv0 9))) (= ?x52 (_ bv1 9))))))))))))))
(assert
(let (($x40 (= ethernet.dst_addr (_ bv1 48))))
(let (($x41 (and true $x40)))
(let (($x42 (and true $x41)))
(let ((?x47 (ite $x42 0 (- 1))))
(let (($x42 (= ethernet.dst_addr (_ bv1 48))))
(let (($x43 (and true $x42)))
(let (($x44 (and true $x43)))
(let ((?x49 (ite $x44 0 (- 1))))
(let (($x31 (= standard_metadata.ingress_port (concat (_ bv0 8) (_ bv0 1)))))
(let (($x33 (and true $x31)))
(let (($x34 (and true (not $x31))))
(let ((?x45 (ite (and true (not $x41)) (_ bv511 9) (ite $x34 (_ bv511 9) (ite $x33 (_ bv511 9) standard_metadata.egress_spec)))))
(let ((?x50 (ite $x42 (_ bv1 9) ?x45)))
(let (($x52 (= ?x50 (_ bv511 9))))
(and (and (not $x52) true) (= ?x47 (- 1))))))))))))))
(let ((?x47 (ite (and true (not $x43)) (_ bv511 9) (ite $x34 (_ bv511 9) (ite $x33 (_ bv511 9) standard_metadata.egress_spec)))))
(let ((?x52 (ite $x44 (_ bv1 9) ?x47)))
(let (($x54 (= ?x52 (_ bv511 9))))
(and (and (not $x54) true) (= ?x49 (- 1))))))))))))))
(check-sat)

;
Expand All @@ -101,31 +103,31 @@
(declare-fun standard_metadata.egress_spec () (_ BitVec 9))
(declare-fun ethernet.dst_addr () (_ BitVec 48))
(assert
(let (($x59 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x59)))
(let (($x61 (= standard_metadata.ingress_port (_ bv1 9))))
(or (or false (= standard_metadata.ingress_port (_ bv0 9))) $x61)))
(assert
(let (($x31 (= standard_metadata.ingress_port (concat (_ bv0 8) (_ bv0 1)))))
(let (($x33 (and true $x31)))
(let (($x34 (and true (not $x31))))
(let ((?x45 (ite (and true (not (and true (= ethernet.dst_addr (_ bv1 48))))) (_ bv511 9) (ite $x34 (_ bv511 9) (ite $x33 (_ bv511 9) standard_metadata.egress_spec)))))
(let (($x40 (= ethernet.dst_addr (_ bv1 48))))
(let (($x41 (and true $x40)))
(let (($x42 (and true $x41)))
(let ((?x50 (ite $x42 (_ bv1 9) ?x45)))
(let (($x52 (= ?x50 (_ bv511 9))))
(or $x52 (or (or false (= ?x50 (_ bv0 9))) (= ?x50 (_ bv1 9))))))))))))))
(let ((?x47 (ite (and true (not (and true (= ethernet.dst_addr (_ bv1 48))))) (_ bv511 9) (ite $x34 (_ bv511 9) (ite $x33 (_ bv511 9) standard_metadata.egress_spec)))))
(let (($x42 (= ethernet.dst_addr (_ bv1 48))))
(let (($x43 (and true $x42)))
(let (($x44 (and true $x43)))
(let ((?x52 (ite $x44 (_ bv1 9) ?x47)))
(let (($x54 (= ?x52 (_ bv511 9))))
(or $x54 (or (or false (= ?x52 (_ bv0 9))) (= ?x52 (_ bv1 9))))))))))))))
(assert
(let (($x40 (= ethernet.dst_addr (_ bv1 48))))
(let (($x41 (and true $x40)))
(let (($x42 (and true $x41)))
(let ((?x47 (ite $x42 0 (- 1))))
(let (($x42 (= ethernet.dst_addr (_ bv1 48))))
(let (($x43 (and true $x42)))
(let (($x44 (and true $x43)))
(let ((?x49 (ite $x44 0 (- 1))))
(let (($x31 (= standard_metadata.ingress_port (concat (_ bv0 8) (_ bv0 1)))))
(let (($x33 (and true $x31)))
(let (($x34 (and true (not $x31))))
(let ((?x45 (ite (and true (not $x41)) (_ bv511 9) (ite $x34 (_ bv511 9) (ite $x33 (_ bv511 9) standard_metadata.egress_spec)))))
(let ((?x50 (ite $x42 (_ bv1 9) ?x45)))
(let (($x52 (= ?x50 (_ bv511 9))))
(let (($x95 (and (not $x52) true)))
(and $x95 (= ?x47 0))))))))))))))
(let ((?x47 (ite (and true (not $x43)) (_ bv511 9) (ite $x34 (_ bv511 9) (ite $x33 (_ bv511 9) standard_metadata.egress_spec)))))
(let ((?x52 (ite $x44 (_ bv1 9) ?x47)))
(let (($x54 (= ?x52 (_ bv511 9))))
(let (($x97 (and (not $x54) true)))
(and $x97 (= ?x49 0))))))))))))))
(check-sat)

Loading

0 comments on commit b4e7210

Please sign in to comment.