blob: 2ecbd145acbe3be1bd50bf1770ee7bcf050a2872 [file] [log] [blame] [edit]
// 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