|
11 | 11 | a, b, c = smt.Consts("a b c", RSeq) |
12 | 12 | A, B, C = kd.FreshVars("A B C", RSeq) |
13 | 13 | i, j, k, n, m, N = smt.Ints("i j k n m N") |
14 | | -x, y, z, eps, delta = smt.Reals("x y z eps delta") |
| 14 | +x, y, z, eps, delta, M = smt.Reals("x y z eps delta M") |
15 | 15 |
|
16 | 16 | zero = kd.define("zero", [], smt.K(smt.IntSort(), smt.RealVal(0))) |
17 | 17 | const = kd.define("const", [x], smt.Lambda([i], x)) |
@@ -105,6 +105,14 @@ def test(): |
105 | 105 | sin = kd.define("sin", [a], smt.Map(real.sin, a)) |
106 | 106 | cos = kd.define("cos", [a], smt.Map(real.cos, a)) |
107 | 107 |
|
| 108 | +abs = kd.define("abs", [a], smt.Map(real.abs, a)) |
| 109 | + |
| 110 | + |
| 111 | +has_bound = kd.define("has_bound", [a, M], kd.QForAll([n], real.abs(a[n]) <= M)) |
| 112 | +is_bounded = kd.define("is_bounded", [a], smt.Exists([M], has_bound(a, M))) |
| 113 | + |
| 114 | +is_monotone = kd.define("is_monotone", [a], kd.QForAll([n, m], n <= m, a[n] <= a[m])) |
| 115 | +is_nonneg = kd.define("is_nonneg", [a], kd.QForAll([n], a[n] >= 0)) |
108 | 116 |
|
109 | 117 | # https://en.wikipedia.org/wiki/Cauchy_sequence |
110 | 118 |
|
|
0 commit comments