| // REQUIRES: z3-prover |
| // RUN: mlir-translate --export-smtlib %s | z3 -in 2>&1 | FileCheck %s |
| // RUN: mlir-translate --export-smtlib --smtlibexport-inline-single-use-values %s | z3 -in 2>&1 | FileCheck %s |
| |
| // Quantifiers Attributes |
| smt.solver () : () -> () { |
| |
| %true = smt.constant true |
| |
| %7 = smt.exists weight 2 { |
| ^bb0(%arg2: !smt.int, %arg3: !smt.int): |
| %4 = smt.eq %arg2, %arg3 : !smt.int |
| %5 = smt.implies %4, %true |
| smt.yield %5 : !smt.bool |
| } |
| smt.assert %7 |
| |
| smt.check sat {} unknown {} unsat {} |
| } |
| |
| // CHECK-NOT: WARNING |
| // CHECK-NOT: warning |
| // CHECK-NOT: ERROR |
| // CHECK-NOT: error |
| // CHECK-NOT: unsat |
| // CHECK: sat |
| |
| // Quantifiers Attributes |
| smt.solver () : () -> () { |
| |
| %true = smt.constant true |
| |
| %7 = smt.exists weight 2 { |
| ^bb0(%arg2: !smt.int, %arg3: !smt.int): |
| %4 = smt.eq %arg2, %arg3 : !smt.int |
| %5 = smt.implies %4, %true |
| smt.yield %5 : !smt.bool |
| } patterns { |
| ^bb0(%arg2: !smt.int, %arg3: !smt.int): |
| %4 = smt.eq %arg2, %arg3 : !smt.int |
| smt.yield %4: !smt.bool |
| } |
| smt.assert %7 |
| |
| smt.check sat {} unknown {} unsat {} |
| } |
| |
| // CHECK-NOT: WARNING |
| // CHECK-NOT: warning |
| // CHECK-NOT: ERROR |
| // CHECK-NOT: error |
| // CHECK-NOT: unsat |
| // CHECK: sat |
| |
| // Quantifiers Attributes |
| smt.solver () : () -> () { |
| |
| %true = smt.constant true |
| |
| %7 = smt.exists { |
| ^bb0(%arg2: !smt.int, %arg3: !smt.int): |
| %4 = smt.eq %arg2, %arg3 : !smt.int |
| %5 = smt.implies %4, %true |
| smt.yield %5 : !smt.bool |
| } patterns { |
| ^bb0(%arg2: !smt.int, %arg3: !smt.int): |
| %4 = smt.eq %arg2, %arg3 : !smt.int |
| smt.yield %4: !smt.bool |
| } |
| smt.assert %7 |
| |
| smt.check sat {} unknown {} unsat {} |
| } |
| |
| // CHECK-NOT: WARNING |
| // CHECK-NOT: warning |
| // CHECK-NOT: ERROR |
| // CHECK-NOT: error |
| // CHECK-NOT: unsat |
| // CHECK: sat |
| |
| smt.solver () : () -> () { |
| |
| %true = smt.constant true |
| %three = smt.int.constant 3 |
| %four = smt.int.constant 4 |
| |
| %7 = smt.exists { |
| ^bb0(%arg2: !smt.int, %arg3: !smt.int): |
| %4 = smt.eq %arg2, %three: !smt.int |
| %5 = smt.eq %arg3, %four: !smt.int |
| %6 = smt.eq %4, %5: !smt.bool |
| smt.yield %6 : !smt.bool |
| } patterns { |
| ^bb0(%arg2: !smt.int, %arg3: !smt.int): |
| %4 = smt.eq %arg2, %three: !smt.int |
| smt.yield %4: !smt.bool}, { |
| ^bb0(%arg2: !smt.int, %arg3: !smt.int): |
| %5 = smt.eq %arg3, %four: !smt.int |
| smt.yield %5: !smt.bool |
| } |
| smt.assert %7 |
| |
| smt.check sat {} unknown {} unsat {} |
| } |
| |
| // CHECK-NOT: WARNING |
| // CHECK-NOT: warning |
| // CHECK-NOT: ERROR |
| // CHECK-NOT: error |
| // CHECK-NOT: unsat |
| // CHECK: sat |
| |
| smt.solver () : () -> () { |
| |
| %true = smt.constant true |
| %three = smt.int.constant 3 |
| %four = smt.int.constant 4 |
| |
| %10 = smt.exists { |
| ^bb0(%arg2: !smt.int, %arg3: !smt.int): |
| %4 = smt.eq %arg2, %three: !smt.int |
| %5 = smt.eq %arg3, %four: !smt.int |
| %9 = smt.eq %4, %5: !smt.bool |
| smt.yield %9 : !smt.bool |
| } patterns { |
| ^bb0(%arg2: !smt.int, %arg3: !smt.int): |
| %4 = smt.eq %arg2, %three: !smt.int |
| %5 = smt.eq %arg3, %four: !smt.int |
| smt.yield %4, %5: !smt.bool, !smt.bool |
| } |
| smt.assert %10 |
| |
| smt.check sat {} unknown {} unsat {} |
| |
| } |
| |
| // CHECK-NOT: WARNING |
| // CHECK-NOT: warning |
| // CHECK-NOT: ERROR |
| // CHECK-NOT: error |
| // CHECK-NOT: unsat |
| // CHECK: sat |