tiny.smt.Context
Defined in term.
One table that owns every term and function declaration it holds.
API (57)
Actions
Public operations.
add: Appends the integer sum ofoperandsand returns its term, so code adds integer terms with it.and_: Appends the conjunction ofoperandsand returns its term, so code calls it to join Boolean terms that must all hold.apply: Appends the application of the functionfunction_idtoargsand returns its term, so code applies a declared function to arguments with it.arraySelect: Appends the element ofarrayatindexand returns its term.arrayStore: Appends the array equal toarrayexcept thatindexholdsvalue, and returns its term.binary: Appends the two-operand term of kindtagoverlhsandrhsand returns its term, so the SMT-LIB parser calls it with the tag of each two-operand operator it reads, and one call covers every such operator.bitvecValue: Appends the constant with bitsvalueand widthwidthand returns its term, so code builds bit-vector constants with it, as the SMT-LIB parser does for every(_ bvV W).boolValue: Appends the constantvalueand returns its term, so code builds the Boolean constants with it.bvadd: Appends the sum oflhsandrhs, modulo 2 to the power of their width, and returns its term.bvand: Appends the bitwise and oflhsandrhsand returns its term.bvashr: Appendslhsshifted toward its least significant bit by the value ofrhs, with copies of its sign bit shifted in, and returns its term.bvconcat: Appends the bits oflhsabove the bits ofrhsand returns its term.bvextract: Appends the bits from positionhighdown to positionlowofoperand, both included, and returns its term.bvlshr: Appendslhsshifted toward its least significant bit by the value ofrhs, with zeros shifted in, and returns its term.bvmul: Appends the product oflhsandrhs, modulo 2 to the power of their width, and returns its term.bvnot: Appends the bitwise complement ofoperandand returns its term.bvor: Appends the bitwise or oflhsandrhsand returns its term.bvrotl: Appendsoperandrotated toward its most significant bit byamountpositions and returns its term.bvrotr: Appendsoperandrotated toward its least significant bit byamountpositions and returns its term.bvsaddo: Appends the claim that the two's-complement sum oflhsandrhsoverflows their width and returns its term.bvsdiv: Appends the two's-complement quotient oflhsbyrhs, rounded toward zero, and returns its term.bvshl: Appendslhsshifted toward its most significant bit by the value ofrhsand returns its term.bvsignext: Appendsoperandwidened byextracopies of its sign bit and returns its term.bvsle: Appendslhsat mostrhs, as two's-complement bit-vectors, and returns its term, so code compares bit-vectors as two's-complement numbers with it.bvslt: Appendslhsless thanrhs, as two's-complement bit-vectors, and returns its term, so code compares bit-vectors as two's-complement numbers with it.bvsmod: Appends the modulo oflhsbyrhswith the sign ofrhsand returns its term.bvsmulo: Appends the claim that the two's-complement product oflhsandrhsoverflows their width and returns its term.bvsrem: Appends the remainder oflhsbyrhswith the sign oflhsand returns its term.bvssubo: Appends the claim that the two's-complement differencelhsminusrhsoverflows their width and returns its term.bvsub: Appendslhsminusrhs, modulo 2 to the power of their width, and returns its term.bvuaddo: Appends the claim that the unsigned sum oflhsandrhsoverflows their width and returns its term.bvudiv: Appends the unsigned quotient oflhsbyrhsand returns its term.bvule: Appendslhsat mostrhs, as unsigned bit-vectors, and returns its term, so code compares bit-vectors as unsigned numbers with it.bvult: Appendslhsless thanrhs, as unsigned bit-vectors, and returns its term, so code compares bit-vectors as unsigned numbers with it, as the SMT-LIB round-trip test does.bvumulo: Appends the claim that the unsigned product oflhsandrhsoverflows their width and returns its term.bvurem: Appends the unsigned remainder oflhsbyrhsand returns its term.bvxor: Appends the bitwise exclusive or oflhsandrhsand returns its term.bvzeroext: Appendsoperandwidened byextrazero bits above its most significant bit and returns its term.deinit: Frees every term's name and operand list, every declaration and both tables, so the owner calls it once after everyScript, parser and encoder built over the table is done with its terms.distinct: Appends the claim thatoperandsall differ and returns its term, so code states that terms all differ with it.eq: Appendslhsequalsrhsand returns its term, so code calls it to state that two terms are equal.function: Declares a function by name, argument sorts and result sort, and returns its index, so code declares each uninterpreted function with it, as the SMT-LIB parser does for everydeclare-fun.ge: Appendslhsat leastrhs, as integers, and returns its term, so code compares integer terms with it.gt: Appendslhsgreater thanrhs, as integers, and returns its term, so code compares integer terms with it.implies: Appendslhsimpliesrhsand returns its term, so code states that one Boolean term implies another with it.init: Returns an empty table that allocates withallocator, so a caller makes one before building any term.intValue: Appends the integer constantvalueand returns its term, so code builds integer constants with it, as the SMT-LIB parser does for every numeral.le: Appendslhsat mostrhs, as integers, and returns its term, so code compares integer terms with it.lt: Appendslhsless thanrhs, as integers, and returns its term, so code compares integer terms with it.mul: Appends the integer product ofoperandsand returns its term, so code multiplies integer terms with it.not: Appends the negation ofoperandand returns its term, so code negates a Boolean term with it.or_: Appends the disjunction ofoperandsand returns its term, so code calls it to join Boolean terms of which one must hold.sortOf: Returns the sort of termid, checking every operand below it against the sorts its operator accepts, so code checks a formula's sorts before encoding or writing, and the encoder reads each function argument's sort with it.symbol: Appends a named constant of the given sort and returns its term, so code declares each free variable of a formula with it, as the SMT-LIB parser does for everydeclare-const.
Fields and members
Public fields and members.
Source
Source: lib/smt/src/term.zig:336
zig
/// One table that owns every term and function declaration it holds. Every formula starts here: a/// caller makes one, builds its terms with the builders, and frees them all at once with `deinit`./// Each builder appends one term and returns its index. The builders check no sorts, except/// `function` and `apply`, and `sortOf` checks a term's sort when a caller asks. Every builder can/// fail with `error.OutOfMemory`, and a failed builder leaves the table as it was. A `Script`, a/// parser and an encoder borrow the `Context` and have to be freed before it.pub const Context = struct { /// The allocator for every term, name, operand list and declaration. A `Script` over this table /// and the SMT-LIB parser allocate with it too. allocator: std.mem.Allocator, /// Every term in the order it was built: entry i is the term whose index is i. The encoder and /// the SMT-LIB writer read it to walk every named constant. nodes: std.ArrayList(Expr) = .empty, /// Every function declaration in the order it was declared: entry i is the function whose index /// is i. functions: std.ArrayList(FunctionDecl) = .empty, /// Returns an empty table that allocates with `allocator`, so a caller makes one before /// building any term. The call allocates nothing. pub fn init(allocator: std.mem.Allocator) Context { return .{ .allocator = allocator }; } /// Frees every term's name and operand list, every declaration and both tables, so the owner /// calls it once after every `Script`, parser and encoder built over the table is done with its /// terms. Every `Term` and `Function` index from this table is invalid afterward. pub fn deinit(self: *Context) void { for (self.nodes.items) |node| { switch (node) { .symbol => |sym| self.allocator.free(sym.name), .apply => |item| self.allocator.free(item.args), .and_, .or_, .distinct, .add, .mul => |items| self.allocator.free(items), else => {}, } } for (self.functions.items) |decl| { self.allocator.free(decl.name); self.allocator.free(decl.params); } self.functions.deinit(self.allocator); self.nodes.deinit(self.allocator); self.* = undefined; } /// Appends a named constant of the given sort and returns its term, so code declares each free /// variable of a formula with it, as the SMT-LIB parser does for every `declare-const`. The /// builder copies `name`, so the caller may free its own copy. The builder builds a new term on /// every call, even for a name used before. pub fn symbol(self: *Context, name: []const u8, sort: Sort) !Term { const owned_name = try self.allocator.dupe(u8, name); errdefer self.allocator.free(owned_name); return try self.append(.{ .symbol = .{ .name = owned_name, .sort = sort } }); } /// Declares a function by name, argument sorts and result sort, and returns its index, so code /// declares each uninterpreted function with it, as the SMT-LIB parser does for every /// `declare-fun`. A second call with the same name and the same sorts returns the first index. /// A second call with the same name and other sorts returns `error.DuplicateFunction`. The /// builder copies `name` and `params`. pub fn function( self: *Context, name: []const u8, params: []const Sort, result: Sort, ) !Function { for (self.functions.items, 0..) |decl, index| { if (!std.mem.eql(u8, decl.name, name)) continue; if (!sortListsEqual(decl.params, params) or !decl.result.eql(result)) { return error.DuplicateFunction; } return @intCast(index); } const owned_name = try self.allocator.dupe(u8, name); errdefer self.allocator.free(owned_name); const owned_params = try self.allocator.dupe(Sort, params); errdefer self.allocator.free(owned_params); const id: Function = @intCast(self.functions.items.len); try self.functions.append(self.allocator, .{ .name = owned_name, .params = owned_params, .result = result, }); return id; } /// Appends the application of the function `function_id` to `args` and returns its term, so /// code applies a declared function to arguments with it. The call returns /// `error.UnknownFunction` for an index past the declarations, `error.FunctionArityMismatch` /// for the wrong number of arguments, and `error.FunctionArgumentSortMismatch` for an argument /// of the wrong sort. The builder computes each argument's sort with `sortOf`, so the call also /// returns the errors of `sortOf` for an argument that has no sort. The builder copies `args`. pub fn apply(self: *Context, function_id: Function, args: []const Term) !Term { if (function_id >= self.functions.items.len) return error.UnknownFunction; const decl = self.functions.items[function_id]; if (decl.params.len != args.len) return error.FunctionArityMismatch; for (args, decl.params) |arg, expected| { if (!(try self.sortOf(arg)).eql(expected)) return error.FunctionArgumentSortMismatch; } const owned = try self.allocator.dupe(Term, args); errdefer self.allocator.free(owned); return try self.append(.{ .apply = .{ .function = function_id, .args = owned } }); } /// Returns the sort of term `id`, checking every operand below it against the sorts its /// operator accepts, so code checks a formula's sorts before encoding or writing, and the /// encoder reads each function argument's sort with it. The call returns `error.TermOutOfRange` /// for an index past the table, `error.SortMismatch` for an operand of the wrong sort, /// `error.InvalidBitVectorRange` for a bad extract range, and the errors of `apply` for a bad /// application. The function allocates nothing, and the call walks the whole term below `id` on /// every call. The recursion has no depth bound, and a term that refers to itself makes the /// call recurse without end. pub fn sortOf(self: *const Context, id: Term) anyerror!Sort { if (id >= self.nodes.items.len) return error.TermOutOfRange; return switch (self.nodes.items[id]) { .symbol => |sym| sym.sort, .apply => |item| try self.sortOfApply(item), .bool => .bool, .int => .int, .bitvec => |value| .{ .bitvec = value.width }, .not => |operand| try self.expectBoolResult(operand), .and_, .or_ => |operands| try self.expectBoolList(operands), .implies => |pair| try self.expectBoolPair(pair.lhs, pair.rhs), .eq => |pair| try self.expectSameSortPair(pair.lhs, pair.rhs), .distinct => |operands| try self.expectSameSortList(operands), .add, .mul => |operands| try self.expectIntList(operands), .le => |pair| try self.expectIntPair(pair.lhs, pair.rhs), .lt => |pair| try self.expectIntPair(pair.lhs, pair.rhs), .ge => |pair| try self.expectIntPair(pair.lhs, pair.rhs), .gt => |pair| try self.expectIntPair(pair.lhs, pair.rhs), .bvule => |pair| try self.expectBitVecPair(pair.lhs, pair.rhs), .bvult => |pair| try self.expectBitVecPair(pair.lhs, pair.rhs), .bvsle => |pair| try self.expectBitVecPair(pair.lhs, pair.rhs), .bvslt => |pair| try self.expectBitVecPair(pair.lhs, pair.rhs), .bvuaddo => |pair| try self.expectBitVecPair(pair.lhs, pair.rhs), .bvsaddo => |pair| try self.expectBitVecPair(pair.lhs, pair.rhs), .bvssubo => |pair| try self.expectBitVecPair(pair.lhs, pair.rhs), .bvumulo => |pair| try self.expectBitVecPair(pair.lhs, pair.rhs), .bvsmulo => |pair| try self.expectBitVecPair(pair.lhs, pair.rhs), .bvnot => |operand| try self.expectBitVecResult(operand), .bvand => |pair| try self.expectBitVecPairResult(pair.lhs, pair.rhs), .bvor => |pair| try self.expectBitVecPairResult(pair.lhs, pair.rhs), .bvxor => |pair| try self.expectBitVecPairResult(pair.lhs, pair.rhs), .bvshl => |pair| try self.expectBitVecPairResult(pair.lhs, pair.rhs), .bvlshr => |pair| try self.expectBitVecPairResult(pair.lhs, pair.rhs), .bvashr => |pair| try self.expectBitVecPairResult(pair.lhs, pair.rhs), .bvudiv => |pair| try self.expectBitVecPairResult(pair.lhs, pair.rhs), .bvurem => |pair| try self.expectBitVecPairResult(pair.lhs, pair.rhs), .bvsdiv => |pair| try self.expectBitVecPairResult(pair.lhs, pair.rhs), .bvsrem => |pair| try self.expectBitVecPairResult(pair.lhs, pair.rhs), .bvsmod => |pair| try self.expectBitVecPairResult(pair.lhs, pair.rhs), .bvadd => |pair| try self.expectBitVecPairResult(pair.lhs, pair.rhs), .bvsub => |pair| try self.expectBitVecPairResult(pair.lhs, pair.rhs), .bvmul => |pair| try self.expectBitVecPairResult(pair.lhs, pair.rhs), .array_select => |item| try self.sortOfArraySelect(item.array, item.index), .array_store => |item| try self.sortOfArrayStore(item.array, item.index, item.value), .bvconcat => |pair| try self.sortOfConcat(pair.lhs, pair.rhs), .bvextract => |item| try self.sortOfExtract(item.operand, item.high, item.low), .bvzeroext => |item| try self.sortOfExtend(item.operand, item.extra), .bvsignext => |item| try self.sortOfExtend(item.operand, item.extra), .bvrotl => |item| try self.expectBitVecResult(item.operand), .bvrotr => |item| try self.expectBitVecResult(item.operand), }; } /// Appends the constant `value` and returns its term, so code builds the Boolean constants with /// it. pub fn boolValue(self: *Context, value: bool) !Term { return try self.append(.{ .bool = value }); } /// Appends the integer constant `value` and returns its term, so code builds integer constants /// with it, as the SMT-LIB parser does for every numeral. pub fn intValue(self: *Context, value: i128) !Term { return try self.append(.{ .int = value }); } /// Appends the constant with bits `value` and width `width` and returns its term, so code /// builds bit-vector constants with it, as the SMT-LIB parser does for every `(_ bvV W)`. The /// builder checks neither the value against the width nor the width. A width above 128 makes /// the encoder panic. pub fn bitvecValue(self: *Context, value: u128, width: u32) !Term { return try self.append(.{ .bitvec = .{ .value = value, .width = width } }); } /// Appends the negation of `operand` and returns its term, so code negates a Boolean term with /// it. pub fn not(self: *Context, operand: Term) !Term { return try self.append(.{ .not = operand }); } /// Appends the conjunction of `operands` and returns its term, so code calls it to join Boolean /// terms that must all hold. The builder copies `operands`. pub fn and_(self: *Context, operands: []const Term) !Term { return try self.appendList(.and_, operands); } /// Appends the disjunction of `operands` and returns its term, so code calls it to join Boolean /// terms of which one must hold. The builder copies `operands`. pub fn or_(self: *Context, operands: []const Term) !Term { return try self.appendList(.or_, operands); } /// Appends `lhs` implies `rhs` and returns its term, so code states that one Boolean term /// implies another with it. pub fn implies(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .implies = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends `lhs` equals `rhs` and returns its term, so code calls it to state that two terms /// are equal. pub fn eq(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .eq = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the claim that `operands` all differ and returns its term, so code states that terms /// all differ with it. The builder copies `operands`. The bit-vector encoder refuses the term. pub fn distinct(self: *Context, operands: []const Term) !Term { return try self.appendList(.distinct, operands); } /// Appends the integer sum of `operands` and returns its term, so code adds integer terms with /// it. The builder copies `operands`. The bit-vector encoder refuses the term. pub fn add(self: *Context, operands: []const Term) !Term { return try self.appendList(.add, operands); } /// Appends the integer product of `operands` and returns its term, so code multiplies integer /// terms with it. The builder copies `operands`. The bit-vector encoder refuses the term. pub fn mul(self: *Context, operands: []const Term) !Term { return try self.appendList(.mul, operands); } /// Appends the two-operand term of kind `tag` over `lhs` and `rhs` and returns its term, so the /// SMT-LIB parser calls it with the tag of each two-operand operator it reads, and one call /// covers every such operator. The parameter `tag` names a kind whose payload is /// `BinaryOperands`, or `.array_select`, which the builder builds with `arraySelect`. Any other /// tag is a compile error. pub fn binary(self: *Context, comptime tag: std.meta.Tag(Expr), lhs: Term, rhs: Term) !Term { return switch (tag) { .implies, .eq, .le, .lt, .ge, .gt, .bvule, .bvult, .bvsle, .bvslt, .bvuaddo, .bvsaddo, .bvssubo, .bvumulo, .bvsmulo, .bvand, .bvor, .bvxor, .bvshl, .bvlshr, .bvashr, .bvudiv, .bvurem, .bvsdiv, .bvsrem, .bvsmod, .bvconcat, .bvadd, .bvsub, .bvmul, => try self.appendPair(tag, lhs, rhs), .array_select => try self.arraySelect(lhs, rhs), else => unreachable, }; } /// Appends `lhs` at most `rhs`, as integers, and returns its term, so code compares integer /// terms with it. The bit-vector encoder refuses the term. pub fn le(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .le = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends `lhs` less than `rhs`, as integers, and returns its term, so code compares integer /// terms with it. The bit-vector encoder refuses the term. pub fn lt(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .lt = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends `lhs` at least `rhs`, as integers, and returns its term, so code compares integer /// terms with it. The bit-vector encoder refuses the term. pub fn ge(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .ge = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends `lhs` greater than `rhs`, as integers, and returns its term, so code compares /// integer terms with it. The bit-vector encoder refuses the term. pub fn gt(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .gt = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends `lhs` at most `rhs`, as unsigned bit-vectors, and returns its term, so code compares /// bit-vectors as unsigned numbers with it. pub fn bvule(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvule = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends `lhs` less than `rhs`, as unsigned bit-vectors, and returns its term, so code /// compares bit-vectors as unsigned numbers with it, as the SMT-LIB round-trip test does. pub fn bvult(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvult = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends `lhs` at most `rhs`, as two's-complement bit-vectors, and returns its term, so code /// compares bit-vectors as two's-complement numbers with it. pub fn bvsle(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvsle = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends `lhs` less than `rhs`, as two's-complement bit-vectors, and returns its term, so /// code compares bit-vectors as two's-complement numbers with it. pub fn bvslt(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvslt = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the claim that the unsigned sum of `lhs` and `rhs` overflows their width and returns /// its term. Code asks with it whether an unsigned addition can overflow. pub fn bvuaddo(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvuaddo = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the claim that the two's-complement sum of `lhs` and `rhs` overflows their width and /// returns its term. Code asks with it whether a two's-complement addition can overflow. pub fn bvsaddo(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvsaddo = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the claim that the two's-complement difference `lhs` minus `rhs` overflows their /// width and returns its term. Code asks with it whether a two's-complement subtraction can /// overflow. pub fn bvssubo(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvssubo = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the claim that the unsigned product of `lhs` and `rhs` overflows their width and /// returns its term. Code asks with it whether an unsigned multiplication can overflow. pub fn bvumulo(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvumulo = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the claim that the two's-complement product of `lhs` and `rhs` overflows their width /// and returns its term. Code asks with it whether a two's-complement multiplication can /// overflow. pub fn bvsmulo(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvsmulo = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the bitwise complement of `operand` and returns its term. Code complements every bit /// of a bit-vector with it. pub fn bvnot(self: *Context, operand: Term) !Term { return try self.append(.{ .bvnot = operand }); } /// Appends the bitwise and of `lhs` and `rhs` and returns its term. Code masks bit-vectors with /// it. pub fn bvand(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvand = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the bitwise or of `lhs` and `rhs` and returns its term. Code sets bits of a /// bit-vector with it. pub fn bvor(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvor = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the bitwise exclusive or of `lhs` and `rhs` and returns its term. Code flips bits of /// a bit-vector with it. pub fn bvxor(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvxor = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends `lhs` shifted toward its most significant bit by the value of `rhs` and returns its /// term. Code shifts a bit-vector left with it. pub fn bvshl(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvshl = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends `lhs` shifted toward its least significant bit by the value of `rhs`, with zeros /// shifted in, and returns its term. Code shifts with it a bit-vector right with zero fill. pub fn bvlshr(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvlshr = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends `lhs` shifted toward its least significant bit by the value of `rhs`, with copies of /// its sign bit shifted in, and returns its term. Code shifts a two's-complement bit-vector /// right with it. pub fn bvashr(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvashr = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the unsigned quotient of `lhs` by `rhs` and returns its term. Code divides /// bit-vectors as unsigned numbers with it. pub fn bvudiv(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvudiv = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the unsigned remainder of `lhs` by `rhs` and returns its term. Code takes the /// unsigned remainder of bit-vectors with it. pub fn bvurem(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvurem = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the two's-complement quotient of `lhs` by `rhs`, rounded toward zero, and returns /// its term. Code divides bit-vectors as two's-complement numbers with it. pub fn bvsdiv(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvsdiv = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the remainder of `lhs` by `rhs` with the sign of `lhs` and returns its term. Code /// takes the two's-complement remainder of bit-vectors with it. pub fn bvsrem(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvsrem = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the modulo of `lhs` by `rhs` with the sign of `rhs` and returns its term. Code takes /// the two's-complement modulo of bit-vectors with it. pub fn bvsmod(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvsmod = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the element of `array` at `index` and returns its term. Code reads an array at an /// index with it. pub fn arraySelect(self: *Context, array: Term, index: Term) !Term { return try self.append(.{ .array_select = .{ .array = array, .index = index } }); } /// Appends the array equal to `array` except that `index` holds `value`, and returns its term. /// Code writes an element into an array with it. pub fn arrayStore(self: *Context, array: Term, index: Term, value: Term) !Term { return try self.append(.{ .array_store = .{ .array = array, .index = index, .value = value, } }); } /// Appends the bits of `lhs` above the bits of `rhs` and returns its term. Code joins two /// bit-vectors into a wider one with it. pub fn bvconcat(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvconcat = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the bits from position `high` down to position `low` of `operand`, both included, /// and returns its term. Code takes a range of bits from a bit-vector with it. It checks no /// range: `sortOf` and the encoder report `InvalidBitVectorRange` when `low` is above `high` or /// `high` is at or above the width. pub fn bvextract(self: *Context, operand: Term, high: u32, low: u32) !Term { return try self.append(.{ .bvextract = .{ .operand = operand, .high = high, .low = low } }); } /// Appends `operand` widened by `extra` zero bits above its most significant bit and returns /// its term. Code widens an unsigned bit-vector with it. pub fn bvzeroext(self: *Context, operand: Term, extra: u32) !Term { return try self.append(.{ .bvzeroext = .{ .operand = operand, .extra = extra } }); } /// Appends `operand` widened by `extra` copies of its sign bit and returns its term. Code /// widens a two's-complement bit-vector with it. pub fn bvsignext(self: *Context, operand: Term, extra: u32) !Term { return try self.append(.{ .bvsignext = .{ .operand = operand, .extra = extra } }); } /// Appends `operand` rotated toward its most significant bit by `amount` positions and returns /// its term. Code rotates a bit-vector left by a fixed amount with it. pub fn bvrotl(self: *Context, operand: Term, amount: u32) !Term { return try self.append(.{ .bvrotl = .{ .operand = operand, .amount = amount } }); } /// Appends `operand` rotated toward its least significant bit by `amount` positions and returns /// its term. Code rotates a bit-vector right by a fixed amount with it. pub fn bvrotr(self: *Context, operand: Term, amount: u32) !Term { return try self.append(.{ .bvrotr = .{ .operand = operand, .amount = amount } }); } /// Appends the sum of `lhs` and `rhs`, modulo 2 to the power of their width, and returns its /// term. Code adds bit-vectors with it. pub fn bvadd(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvadd = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends `lhs` minus `rhs`, modulo 2 to the power of their width, and returns its term. Code /// subtracts bit-vectors with it. pub fn bvsub(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvsub = .{ .lhs = lhs, .rhs = rhs } }); } /// Appends the product of `lhs` and `rhs`, modulo 2 to the power of their width, and returns /// its term. Code multiplies bit-vectors with it. pub fn bvmul(self: *Context, lhs: Term, rhs: Term) !Term { return try self.append(.{ .bvmul = .{ .lhs = lhs, .rhs = rhs } }); } fn sortOfApply(self: *const Context, item: ApplyExpr) !Sort { if (item.function >= self.functions.items.len) return error.UnknownFunction; const decl = self.functions.items[item.function]; if (decl.params.len != item.args.len) return error.FunctionArityMismatch; for (item.args, decl.params) |arg, expected| { if (!(try self.sortOf(arg)).eql(expected)) return error.FunctionArgumentSortMismatch; } return decl.result; } fn expectBoolResult(self: *const Context, operand: Term) !Sort { if (!(try self.sortOf(operand)).eql(.bool)) return error.SortMismatch; return .bool; } fn expectBoolPair(self: *const Context, lhs: Term, rhs: Term) !Sort { if (!(try self.sortOf(lhs)).eql(.bool) or !(try self.sortOf(rhs)).eql(.bool)) { return error.SortMismatch; } return .bool; } fn expectBoolList(self: *const Context, operands: []const Term) !Sort { for (operands) |operand| { if (!(try self.sortOf(operand)).eql(.bool)) return error.SortMismatch; } return .bool; } fn expectIntPair(self: *const Context, lhs: Term, rhs: Term) !Sort { if (!(try self.sortOf(lhs)).eql(.int) or !(try self.sortOf(rhs)).eql(.int)) { return error.SortMismatch; } return .bool; } fn expectIntList(self: *const Context, operands: []const Term) !Sort { for (operands) |operand| { if (!(try self.sortOf(operand)).eql(.int)) return error.SortMismatch; } return .int; } fn expectSameSortPair(self: *const Context, lhs: Term, rhs: Term) !Sort { if (!(try self.sortOf(lhs)).eql(try self.sortOf(rhs))) return error.SortMismatch; return .bool; } fn expectSameSortList(self: *const Context, operands: []const Term) !Sort { if (operands.len == 0) return .bool; const expected = try self.sortOf(operands[0]); for (operands[1..]) |operand| { if (!(try self.sortOf(operand)).eql(expected)) return error.SortMismatch; } return .bool; } fn expectBitVecPair(self: *const Context, lhs: Term, rhs: Term) !Sort { _ = try self.expectBitVecPairResult(lhs, rhs); return .bool; } fn expectBitVecResult(self: *const Context, operand: Term) !Sort { return switch (try self.sortOf(operand)) { .bitvec => |width| .{ .bitvec = width }, else => error.SortMismatch, }; } fn expectBitVecPairResult(self: *const Context, lhs: Term, rhs: Term) !Sort { return switch (try self.sortOf(lhs)) { .bitvec => |lhs_width| switch (try self.sortOf(rhs)) { .bitvec => |rhs_width| { if (lhs_width != rhs_width) return error.SortMismatch; return .{ .bitvec = lhs_width }; }, else => error.SortMismatch, }, else => error.SortMismatch, }; } fn sortOfArraySelect(self: *const Context, array: Term, index: Term) !Sort { const array_sort = try self.sortOf(array); const index_sort = try self.sortOf(index); return switch (array_sort) { .array => |shape| switch (index_sort) { .bitvec => |width| { if (width != shape.index_width) return error.SortMismatch; return .{ .bitvec = shape.element_width }; }, else => error.SortMismatch, }, else => error.SortMismatch, }; } fn sortOfArrayStore(self: *const Context, array: Term, index: Term, value: Term) !Sort { const array_sort = try self.sortOf(array); const index_sort = try self.sortOf(index); const value_sort = try self.sortOf(value); return switch (array_sort) { .array => |shape| switch (index_sort) { .bitvec => |index_width| switch (value_sort) { .bitvec => |element_width| { if (index_width != shape.index_width or element_width != shape.element_width) { return error.SortMismatch; } return array_sort; }, else => error.SortMismatch, }, else => error.SortMismatch, }, else => error.SortMismatch, }; } fn sortOfConcat(self: *const Context, lhs: Term, rhs: Term) !Sort { return switch (try self.sortOf(lhs)) { .bitvec => |lhs_width| switch (try self.sortOf(rhs)) { .bitvec => |rhs_width| .{ .bitvec = try std.math.add(u32, lhs_width, rhs_width) }, else => error.SortMismatch, }, else => error.SortMismatch, }; } fn sortOfExtract(self: *const Context, operand: Term, high: u32, low: u32) !Sort { return switch (try self.sortOf(operand)) { .bitvec => |width| { if (low > high or high >= width) return error.InvalidBitVectorRange; return .{ .bitvec = high - low + 1 }; }, else => error.SortMismatch, }; } fn sortOfExtend(self: *const Context, operand: Term, extra: u32) !Sort { return switch (try self.sortOf(operand)) { .bitvec => |width| .{ .bitvec = try std.math.add(u32, width, extra) }, else => error.SortMismatch, }; } fn append(self: *Context, expr: Expr) !Term { const id: Term = @intCast(self.nodes.items.len); try self.nodes.append(self.allocator, expr); return id; } fn appendPair(self: *Context, comptime tag: std.meta.Tag(Expr), lhs: Term, rhs: Term) !Term { return try self.append(@unionInit(Expr, @tagName(tag), .{ .lhs = lhs, .rhs = rhs })); } fn appendList(self: *Context, comptime tag: std.meta.Tag(Expr), operands: []const Term) !Term { const owned = try self.allocator.dupe(Term, operands); errdefer self.allocator.free(owned); return switch (tag) { .and_ => try self.append(.{ .and_ = owned }), .or_ => try self.append(.{ .or_ = owned }), .distinct => try self.append(.{ .distinct = owned }), .add => try self.append(.{ .add = owned }), .mul => try self.append(.{ .mul = owned }), else => unreachable, }; }};Source: lib/smt/src/root.zig:114
zig
pub const Context = term.Context;Complete caller list for Context.arraySelect
7 direct callers.
lib.smt.src.bitvec.test_bit-vector_encoder_compares_finite_arrays_extensionally[function] — test source atlib/smt/src/bitvec.zig:1545in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_overwritten_array_read_contradiction[function] — test source atlib/smt/src/bitvec.zig:1527in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_finite_array_store_select_model[function] — test source atlib/smt/src/bitvec.zig:1471in nearest public ownertiny.smt.bitveclib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_array_select_store_terms[function] — test source atlib/smt/src/smtlib/test.zig:262in nearest public ownerlib.smt.src.smtlib.testtiny.smt.Context.binary[method] atlib/smt/src/term.zig:567lib.smt.src.term.test_term_context_infers_composite_sorts[function] — test source atlib/smt/src/term.zig:1072in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_finite_bit-vector_array_operators[function] — test source atlib/smt/src/term.zig:1168in nearest public ownertiny.smt.term
Complete caller list for Context.bitvecValue
40 direct callers.
lib.smt.src.bitvec.test_bit-vector_encoder_compares_finite_arrays_extensionally[function] — test source atlib/smt/src/bitvec.zig:1545in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_signed_addition_overflow[function] — test source atlib/smt/src/bitvec.zig:1854in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_signed_multiplication_overflow[function] — test source atlib/smt/src/bitvec.zig:1954in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_signed_subtraction_overflow[function] — test source atlib/smt/src/bitvec.zig:1888in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_unsigned_addition_overflow[function] — test source atlib/smt/src/bitvec.zig:1822in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_unsigned_multiplication_overflow[function] — test source atlib/smt/src/bitvec.zig:1922in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_extracts_named_model_values[function] — test source atlib/smt/src/bitvec.zig:1443in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_finds_wrapped_increment_model[function] — test source atlib/smt/src/bitvec.zig:1409in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_follows_signed_division_by_zero_semantics[function] — test source atlib/smt/src/bitvec.zig:1795in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_follows_unsigned_division_by_zero_semantics[function] — test source atlib/smt/src/bitvec.zig:1716in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_multiplies_exactly_modulo_width[function] — test source atlib/smt/src/bitvec.zig:1672in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_permits_distinct_uninterpreted_function_results[function] — test source atlib/smt/src/bitvec.zig:1582in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_bounded_unsigned_addition_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1839in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_bounded_unsigned_multiplication_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1939in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_addition_inside_range_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1871in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_multiplication_inside_range_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1971in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_subtraction_inside_range_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1905in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_xor_self_contradiction_unsat[function] — test source atlib/smt/src/bitvec.zig:2018in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_impossible_fixed_rotate_result[function] — test source atlib/smt/src/bitvec.zig:2164in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_impossible_large_shift_result[function] — test source atlib/smt/src/bitvec.zig:2177in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_overwritten_array_read_contradiction[function] — test source atlib/smt/src/bitvec.zig:1527in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_terms_appended_after_initialization[function] — test source atlib/smt/src/bitvec.zig:1660in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_wrapped_unsigned_division_quotient[function] — test source atlib/smt/src/bitvec.zig:1733in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_arithmetic_shift_model[function] — test source atlib/smt/src/bitvec.zig:2079in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_bitwise_mask_model[function] — test source atlib/smt/src/bitvec.zig:1988in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_concat_and_extract_model[function] — test source atlib/smt/src/bitvec.zig:2191in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_finite_array_store_select_model[function] — test source atlib/smt/src/bitvec.zig:1471in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_fixed_rotate_model[function] — test source atlib/smt/src/bitvec.zig:2135in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_signed_comparison_model[function] — test source atlib/smt/src/bitvec.zig:1377in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_signed_division_remainder_and_modulo[function] — test source atlib/smt/src/bitvec.zig:1748in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_subtraction_model[function] — test source atlib/smt/src/bitvec.zig:1426in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_symbolic_logical_shift_model[function] — test source atlib/smt/src/bitvec.zig:2032in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_unsigned_division_and_remainder_model[function] — test source atlib/smt/src/bitvec.zig:1687in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_zero_and_sign_extension_model[function] — test source atlib/smt/src/bitvec.zig:2218in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_treats_large_arithmetic_shift_amounts_as_sign_fill[function] — test source atlib/smt/src/bitvec.zig:2116in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_treats_large_logical_shift_amounts_as_zero[function] — test source atlib/smt/src/bitvec.zig:2062in nearest public ownertiny.smt.bitveclib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_extensions[function] — test source atlib/smt/src/smtlib/test.zig:211in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_rotations[function] — test source atlib/smt/src/smtlib/test.zig:237in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_subtraction[function] — test source atlib/smt/src/smtlib/test.zig:95in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_emitted_QF_BV_script[function] — test source atlib/smt/src/smtlib/test.zig:13in nearest public ownerlib.smt.src.smtlib.test
Complete caller list for Context.deinit
66 direct callers.
lib.smt.src.bitvec.test_bit-vector_encoder_compares_finite_arrays_extensionally[function] — test source atlib/smt/src/bitvec.zig:1545in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_signed_addition_overflow[function] — test source atlib/smt/src/bitvec.zig:1854in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_signed_multiplication_overflow[function] — test source atlib/smt/src/bitvec.zig:1954in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_signed_subtraction_overflow[function] — test source atlib/smt/src/bitvec.zig:1888in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_unsigned_addition_overflow[function] — test source atlib/smt/src/bitvec.zig:1822in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_unsigned_multiplication_overflow[function] — test source atlib/smt/src/bitvec.zig:1922in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_enforces_bool-returning_function_congruence[function] — test source atlib/smt/src/bitvec.zig:1639in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_enforces_uninterpreted_function_congruence[function] — test source atlib/smt/src/bitvec.zig:1562in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_extracts_named_model_values[function] — test source atlib/smt/src/bitvec.zig:1443in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_finds_wrapped_increment_model[function] — test source atlib/smt/src/bitvec.zig:1409in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_follows_signed_division_by_zero_semantics[function] — test source atlib/smt/src/bitvec.zig:1795in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_follows_unsigned_division_by_zero_semantics[function] — test source atlib/smt/src/bitvec.zig:1716in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_multiplies_exactly_modulo_width[function] — test source atlib/smt/src/bitvec.zig:1672in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_permits_distinct_uninterpreted_function_results[function] — test source atlib/smt/src/bitvec.zig:1582in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_bounded_unsigned_addition_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1839in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_bounded_unsigned_multiplication_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1939in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_addition_inside_range_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1871in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_multiplication_inside_range_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1971in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_self-less-than_impossible[function] — test source atlib/smt/src/bitvec.zig:1338in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_subtraction_inside_range_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1905in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_unsigned_self-less-than_impossible[function] — test source atlib/smt/src/bitvec.zig:1325in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_xor_self_contradiction_unsat[function] — test source atlib/smt/src/bitvec.zig:2018in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_impossible_fixed_rotate_result[function] — test source atlib/smt/src/bitvec.zig:2164in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_impossible_large_shift_result[function] — test source atlib/smt/src/bitvec.zig:2177in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_invalid_extract_range[function] — test source atlib/smt/src/bitvec.zig:2253in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_overwritten_array_read_contradiction[function] — test source atlib/smt/src/bitvec.zig:1527in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_terms_appended_after_initialization[function] — test source atlib/smt/src/bitvec.zig:1660in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_wrapped_unsigned_division_quotient[function] — test source atlib/smt/src/bitvec.zig:1733in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_arithmetic_shift_model[function] — test source atlib/smt/src/bitvec.zig:2079in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_bitwise_mask_model[function] — test source atlib/smt/src/bitvec.zig:1988in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_concat_and_extract_model[function] — test source atlib/smt/src/bitvec.zig:2191in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_finite_array_store_select_model[function] — test source atlib/smt/src/bitvec.zig:1471in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_fixed_rotate_model[function] — test source atlib/smt/src/bitvec.zig:2135in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_signed_comparison_model[function] — test source atlib/smt/src/bitvec.zig:1377in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_signed_division_remainder_and_modulo[function] — test source atlib/smt/src/bitvec.zig:1748in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_subtraction_model[function] — test source atlib/smt/src/bitvec.zig:1426in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_symbolic_logical_shift_model[function] — test source atlib/smt/src/bitvec.zig:2032in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_unsigned_division_and_remainder_model[function] — test source atlib/smt/src/bitvec.zig:1687in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_with_Boolean_term_assumptions[function] — test source atlib/smt/src/bitvec.zig:1351in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_zero_and_sign_extension_model[function] — test source atlib/smt/src/bitvec.zig:2218in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_treats_large_arithmetic_shift_amounts_as_sign_fill[function] — test source atlib/smt/src/bitvec.zig:2116in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_treats_large_logical_shift_amounts_as_zero[function] — test source atlib/smt/src/bitvec.zig:2062in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_model_skips_unused_uninterpreted_function_applications[function] — test source atlib/smt/src/bitvec.zig:1621in nearest public ownertiny.smt.bitveclib.smt.src.smtlib.test.test_SMT-LIB_parser_rejects_ill-sorted_function_applications[function] — test source atlib/smt/src/smtlib/test.zig:322in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_array_select_store_terms[function] — test source atlib/smt/src/smtlib/test.zig:262in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_concat_and_extract[function] — test source atlib/smt/src/smtlib/test.zig:183in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_extensions[function] — test source atlib/smt/src/smtlib/test.zig:211in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_rotations[function] — test source atlib/smt/src/smtlib/test.zig:237in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_shifts[function] — test source atlib/smt/src/smtlib/test.zig:148in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_subtraction[function] — test source atlib/smt/src/smtlib/test.zig:95in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bitwise_bit-vector_terms[function] — test source atlib/smt/src/smtlib/test.zig:119in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_emitted_QF_BV_script[function] — test source atlib/smt/src/smtlib/test.zig:13in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_overflow_predicates[function] — test source atlib/smt/src/smtlib/test.zig:64in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_signed_bit-vector_comparisons[function] — test source atlib/smt/src/smtlib/test.zig:39in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_uninterpreted_function_applications[function] — test source atlib/smt/src/smtlib/test.zig:290in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.write.test_SMT-LIB_writer_emits_declarations_and_assertions[function] — test source atlib/smt/src/smtlib/write.zig:183in nearest public ownertiny.smt.smtlib.writelib.smt.src.term.test_term_context_infers_composite_sorts[function] — test source atlib/smt/src/term.zig:1072in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_bit-vector_bitwise_operators[function] — test source atlib/smt/src/term.zig:1119in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_bit-vector_overflow_predicates[function] — test source atlib/smt/src/term.zig:1094in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_bit-vector_rotate_operators[function] — test source atlib/smt/src/term.zig:1159in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_bit-vector_shift_operators[function] — test source atlib/smt/src/term.zig:1131in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_bit-vector_width-changing_operators[function] — test source atlib/smt/src/term.zig:1147in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_finite_bit-vector_array_operators[function] — test source atlib/smt/src/term.zig:1168in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_function_applications[function] — test source atlib/smt/src/term.zig:1054in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_signed_bit-vector_comparisons[function] — test source atlib/smt/src/term.zig:1107in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_structured_arithmetic_expression[function] — test source atlib/smt/src/term.zig:1043in nearest public ownertiny.smt.term
Complete caller list for Context.eq
46 direct callers.
lib.smt.src.bitvec.test_bit-vector_encoder_compares_finite_arrays_extensionally[function] — test source atlib/smt/src/bitvec.zig:1545in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_signed_addition_overflow[function] — test source atlib/smt/src/bitvec.zig:1854in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_signed_multiplication_overflow[function] — test source atlib/smt/src/bitvec.zig:1954in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_signed_subtraction_overflow[function] — test source atlib/smt/src/bitvec.zig:1888in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_unsigned_addition_overflow[function] — test source atlib/smt/src/bitvec.zig:1822in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_unsigned_multiplication_overflow[function] — test source atlib/smt/src/bitvec.zig:1922in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_enforces_bool-returning_function_congruence[function] — test source atlib/smt/src/bitvec.zig:1639in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_enforces_uninterpreted_function_congruence[function] — test source atlib/smt/src/bitvec.zig:1562in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_extracts_named_model_values[function] — test source atlib/smt/src/bitvec.zig:1443in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_finds_wrapped_increment_model[function] — test source atlib/smt/src/bitvec.zig:1409in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_follows_signed_division_by_zero_semantics[function] — test source atlib/smt/src/bitvec.zig:1795in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_follows_unsigned_division_by_zero_semantics[function] — test source atlib/smt/src/bitvec.zig:1716in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_multiplies_exactly_modulo_width[function] — test source atlib/smt/src/bitvec.zig:1672in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_permits_distinct_uninterpreted_function_results[function] — test source atlib/smt/src/bitvec.zig:1582in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_bounded_unsigned_multiplication_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1939in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_addition_inside_range_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1871in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_multiplication_inside_range_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1971in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_subtraction_inside_range_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1905in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_xor_self_contradiction_unsat[function] — test source atlib/smt/src/bitvec.zig:2018in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_impossible_fixed_rotate_result[function] — test source atlib/smt/src/bitvec.zig:2164in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_impossible_large_shift_result[function] — test source atlib/smt/src/bitvec.zig:2177in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_overwritten_array_read_contradiction[function] — test source atlib/smt/src/bitvec.zig:1527in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_terms_appended_after_initialization[function] — test source atlib/smt/src/bitvec.zig:1660in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_wrapped_unsigned_division_quotient[function] — test source atlib/smt/src/bitvec.zig:1733in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_arithmetic_shift_model[function] — test source atlib/smt/src/bitvec.zig:2079in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_bitwise_mask_model[function] — test source atlib/smt/src/bitvec.zig:1988in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_concat_and_extract_model[function] — test source atlib/smt/src/bitvec.zig:2191in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_finite_array_store_select_model[function] — test source atlib/smt/src/bitvec.zig:1471in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_fixed_rotate_model[function] — test source atlib/smt/src/bitvec.zig:2135in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_signed_comparison_model[function] — test source atlib/smt/src/bitvec.zig:1377in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_signed_division_remainder_and_modulo[function] — test source atlib/smt/src/bitvec.zig:1748in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_subtraction_model[function] — test source atlib/smt/src/bitvec.zig:1426in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_symbolic_logical_shift_model[function] — test source atlib/smt/src/bitvec.zig:2032in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_unsigned_division_and_remainder_model[function] — test source atlib/smt/src/bitvec.zig:1687in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_zero_and_sign_extension_model[function] — test source atlib/smt/src/bitvec.zig:2218in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_treats_large_arithmetic_shift_amounts_as_sign_fill[function] — test source atlib/smt/src/bitvec.zig:2116in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_treats_large_logical_shift_amounts_as_zero[function] — test source atlib/smt/src/bitvec.zig:2062in nearest public ownertiny.smt.bitveclib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_array_select_store_terms[function] — test source atlib/smt/src/smtlib/test.zig:262in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_concat_and_extract[function] — test source atlib/smt/src/smtlib/test.zig:183in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_extensions[function] — test source atlib/smt/src/smtlib/test.zig:211in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_rotations[function] — test source atlib/smt/src/smtlib/test.zig:237in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_shifts[function] — test source atlib/smt/src/smtlib/test.zig:148in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_subtraction[function] — test source atlib/smt/src/smtlib/test.zig:95in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bitwise_bit-vector_terms[function] — test source atlib/smt/src/smtlib/test.zig:119in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_uninterpreted_function_applications[function] — test source atlib/smt/src/smtlib/test.zig:290in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.term.test_term_context_infers_composite_sorts[function] — test source atlib/smt/src/term.zig:1072in nearest public ownertiny.smt.term
Complete caller list for Context.init
66 direct callers.
lib.smt.src.bitvec.test_bit-vector_encoder_compares_finite_arrays_extensionally[function] — test source atlib/smt/src/bitvec.zig:1545in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_signed_addition_overflow[function] — test source atlib/smt/src/bitvec.zig:1854in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_signed_multiplication_overflow[function] — test source atlib/smt/src/bitvec.zig:1954in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_signed_subtraction_overflow[function] — test source atlib/smt/src/bitvec.zig:1888in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_unsigned_addition_overflow[function] — test source atlib/smt/src/bitvec.zig:1822in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_unsigned_multiplication_overflow[function] — test source atlib/smt/src/bitvec.zig:1922in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_enforces_bool-returning_function_congruence[function] — test source atlib/smt/src/bitvec.zig:1639in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_enforces_uninterpreted_function_congruence[function] — test source atlib/smt/src/bitvec.zig:1562in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_extracts_named_model_values[function] — test source atlib/smt/src/bitvec.zig:1443in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_finds_wrapped_increment_model[function] — test source atlib/smt/src/bitvec.zig:1409in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_follows_signed_division_by_zero_semantics[function] — test source atlib/smt/src/bitvec.zig:1795in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_follows_unsigned_division_by_zero_semantics[function] — test source atlib/smt/src/bitvec.zig:1716in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_multiplies_exactly_modulo_width[function] — test source atlib/smt/src/bitvec.zig:1672in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_permits_distinct_uninterpreted_function_results[function] — test source atlib/smt/src/bitvec.zig:1582in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_bounded_unsigned_addition_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1839in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_bounded_unsigned_multiplication_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1939in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_addition_inside_range_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1871in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_multiplication_inside_range_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1971in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_self-less-than_impossible[function] — test source atlib/smt/src/bitvec.zig:1338in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_subtraction_inside_range_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1905in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_unsigned_self-less-than_impossible[function] — test source atlib/smt/src/bitvec.zig:1325in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_xor_self_contradiction_unsat[function] — test source atlib/smt/src/bitvec.zig:2018in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_impossible_fixed_rotate_result[function] — test source atlib/smt/src/bitvec.zig:2164in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_impossible_large_shift_result[function] — test source atlib/smt/src/bitvec.zig:2177in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_invalid_extract_range[function] — test source atlib/smt/src/bitvec.zig:2253in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_overwritten_array_read_contradiction[function] — test source atlib/smt/src/bitvec.zig:1527in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_terms_appended_after_initialization[function] — test source atlib/smt/src/bitvec.zig:1660in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_wrapped_unsigned_division_quotient[function] — test source atlib/smt/src/bitvec.zig:1733in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_arithmetic_shift_model[function] — test source atlib/smt/src/bitvec.zig:2079in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_bitwise_mask_model[function] — test source atlib/smt/src/bitvec.zig:1988in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_concat_and_extract_model[function] — test source atlib/smt/src/bitvec.zig:2191in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_finite_array_store_select_model[function] — test source atlib/smt/src/bitvec.zig:1471in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_fixed_rotate_model[function] — test source atlib/smt/src/bitvec.zig:2135in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_signed_comparison_model[function] — test source atlib/smt/src/bitvec.zig:1377in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_signed_division_remainder_and_modulo[function] — test source atlib/smt/src/bitvec.zig:1748in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_subtraction_model[function] — test source atlib/smt/src/bitvec.zig:1426in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_symbolic_logical_shift_model[function] — test source atlib/smt/src/bitvec.zig:2032in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_unsigned_division_and_remainder_model[function] — test source atlib/smt/src/bitvec.zig:1687in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_with_Boolean_term_assumptions[function] — test source atlib/smt/src/bitvec.zig:1351in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_zero_and_sign_extension_model[function] — test source atlib/smt/src/bitvec.zig:2218in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_treats_large_arithmetic_shift_amounts_as_sign_fill[function] — test source atlib/smt/src/bitvec.zig:2116in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_treats_large_logical_shift_amounts_as_zero[function] — test source atlib/smt/src/bitvec.zig:2062in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_model_skips_unused_uninterpreted_function_applications[function] — test source atlib/smt/src/bitvec.zig:1621in nearest public ownertiny.smt.bitveclib.smt.src.smtlib.test.test_SMT-LIB_parser_rejects_ill-sorted_function_applications[function] — test source atlib/smt/src/smtlib/test.zig:322in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_array_select_store_terms[function] — test source atlib/smt/src/smtlib/test.zig:262in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_concat_and_extract[function] — test source atlib/smt/src/smtlib/test.zig:183in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_extensions[function] — test source atlib/smt/src/smtlib/test.zig:211in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_rotations[function] — test source atlib/smt/src/smtlib/test.zig:237in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_shifts[function] — test source atlib/smt/src/smtlib/test.zig:148in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_subtraction[function] — test source atlib/smt/src/smtlib/test.zig:95in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bitwise_bit-vector_terms[function] — test source atlib/smt/src/smtlib/test.zig:119in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_emitted_QF_BV_script[function] — test source atlib/smt/src/smtlib/test.zig:13in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_overflow_predicates[function] — test source atlib/smt/src/smtlib/test.zig:64in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_signed_bit-vector_comparisons[function] — test source atlib/smt/src/smtlib/test.zig:39in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_uninterpreted_function_applications[function] — test source atlib/smt/src/smtlib/test.zig:290in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.write.test_SMT-LIB_writer_emits_declarations_and_assertions[function] — test source atlib/smt/src/smtlib/write.zig:183in nearest public ownertiny.smt.smtlib.writelib.smt.src.term.test_term_context_infers_composite_sorts[function] — test source atlib/smt/src/term.zig:1072in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_bit-vector_bitwise_operators[function] — test source atlib/smt/src/term.zig:1119in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_bit-vector_overflow_predicates[function] — test source atlib/smt/src/term.zig:1094in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_bit-vector_rotate_operators[function] — test source atlib/smt/src/term.zig:1159in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_bit-vector_shift_operators[function] — test source atlib/smt/src/term.zig:1131in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_bit-vector_width-changing_operators[function] — test source atlib/smt/src/term.zig:1147in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_finite_bit-vector_array_operators[function] — test source atlib/smt/src/term.zig:1168in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_function_applications[function] — test source atlib/smt/src/term.zig:1054in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_signed_bit-vector_comparisons[function] — test source atlib/smt/src/term.zig:1107in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_structured_arithmetic_expression[function] — test source atlib/smt/src/term.zig:1043in nearest public ownertiny.smt.term
Complete caller list for Context.sortOf
20 direct callers.
lib.smt.src.bitvec.Encoder.modelArguments[method] — private source atlib/smt/src/bitvec.zig:639in nearest public ownertiny.smt.bitvectiny.smt.Context.apply[method] atlib/smt/src/term.zig:421lib.smt.src.term.Context.expectBitVecPairResult[method] — private source atlib/smt/src/term.zig:899in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectBitVecResult[method] — private source atlib/smt/src/term.zig:892in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectBoolList[method] — private source atlib/smt/src/term.zig:852in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectBoolPair[method] — private source atlib/smt/src/term.zig:845in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectBoolResult[method] — private source atlib/smt/src/term.zig:840in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectIntList[method] — private source atlib/smt/src/term.zig:866in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectIntPair[method] — private source atlib/smt/src/term.zig:859in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectSameSortList[method] — private source atlib/smt/src/term.zig:878in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectSameSortPair[method] — private source atlib/smt/src/term.zig:873in nearest public ownertiny.smt.termlib.smt.src.term.Context.sortOfApply[method] — private source atlib/smt/src/term.zig:830in nearest public ownertiny.smt.termlib.smt.src.term.Context.sortOfArraySelect[method] — private source atlib/smt/src/term.zig:912in nearest public ownertiny.smt.termlib.smt.src.term.Context.sortOfArrayStore[method] — private source atlib/smt/src/term.zig:927in nearest public ownertiny.smt.termlib.smt.src.term.Context.sortOfConcat[method] — private source atlib/smt/src/term.zig:950in nearest public ownertiny.smt.termlib.smt.src.term.Context.sortOfExtend[method] — private source atlib/smt/src/term.zig:970in nearest public ownertiny.smt.termlib.smt.src.term.Context.sortOfExtract[method] — private source atlib/smt/src/term.zig:960in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_infers_composite_sorts[function] — test source atlib/smt/src/term.zig:1072in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_function_applications[function] — test source atlib/smt/src/term.zig:1054in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_signed_bit-vector_comparisons[function] — test source atlib/smt/src/term.zig:1107in nearest public ownertiny.smt.term
Complete call list for Context.sortOf
16 direct calls.
lib.smt.src.term.Context.expectBitVecPair[method] — private source atlib/smt/src/term.zig:887in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectBitVecPairResult[method] — private source atlib/smt/src/term.zig:899in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectBitVecResult[method] — private source atlib/smt/src/term.zig:892in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectBoolList[method] — private source atlib/smt/src/term.zig:852in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectBoolPair[method] — private source atlib/smt/src/term.zig:845in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectBoolResult[method] — private source atlib/smt/src/term.zig:840in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectIntList[method] — private source atlib/smt/src/term.zig:866in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectIntPair[method] — private source atlib/smt/src/term.zig:859in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectSameSortList[method] — private source atlib/smt/src/term.zig:878in nearest public ownertiny.smt.termlib.smt.src.term.Context.expectSameSortPair[method] — private source atlib/smt/src/term.zig:873in nearest public ownertiny.smt.termlib.smt.src.term.Context.sortOfApply[method] — private source atlib/smt/src/term.zig:830in nearest public ownertiny.smt.termlib.smt.src.term.Context.sortOfArraySelect[method] — private source atlib/smt/src/term.zig:912in nearest public ownertiny.smt.termlib.smt.src.term.Context.sortOfArrayStore[method] — private source atlib/smt/src/term.zig:927in nearest public ownertiny.smt.termlib.smt.src.term.Context.sortOfConcat[method] — private source atlib/smt/src/term.zig:950in nearest public ownertiny.smt.termlib.smt.src.term.Context.sortOfExtend[method] — private source atlib/smt/src/term.zig:970in nearest public ownertiny.smt.termlib.smt.src.term.Context.sortOfExtract[method] — private source atlib/smt/src/term.zig:960in nearest public ownertiny.smt.term
Complete caller list for Context.symbol
58 direct callers.
lib.smt.src.bitvec.test_bit-vector_encoder_compares_finite_arrays_extensionally[function] — test source atlib/smt/src/bitvec.zig:1545in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_signed_addition_overflow[function] — test source atlib/smt/src/bitvec.zig:1854in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_signed_multiplication_overflow[function] — test source atlib/smt/src/bitvec.zig:1954in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_signed_subtraction_overflow[function] — test source atlib/smt/src/bitvec.zig:1888in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_unsigned_addition_overflow[function] — test source atlib/smt/src/bitvec.zig:1822in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_detects_unsigned_multiplication_overflow[function] — test source atlib/smt/src/bitvec.zig:1922in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_enforces_bool-returning_function_congruence[function] — test source atlib/smt/src/bitvec.zig:1639in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_enforces_uninterpreted_function_congruence[function] — test source atlib/smt/src/bitvec.zig:1562in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_extracts_named_model_values[function] — test source atlib/smt/src/bitvec.zig:1443in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_finds_wrapped_increment_model[function] — test source atlib/smt/src/bitvec.zig:1409in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_multiplies_exactly_modulo_width[function] — test source atlib/smt/src/bitvec.zig:1672in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_permits_distinct_uninterpreted_function_results[function] — test source atlib/smt/src/bitvec.zig:1582in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_bounded_unsigned_addition_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1839in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_bounded_unsigned_multiplication_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1939in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_addition_inside_range_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1871in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_multiplication_inside_range_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1971in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_self-less-than_impossible[function] — test source atlib/smt/src/bitvec.zig:1338in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_signed_subtraction_inside_range_does_not_overflow[function] — test source atlib/smt/src/bitvec.zig:1905in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_unsigned_self-less-than_impossible[function] — test source atlib/smt/src/bitvec.zig:1325in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_proves_xor_self_contradiction_unsat[function] — test source atlib/smt/src/bitvec.zig:2018in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_invalid_extract_range[function] — test source atlib/smt/src/bitvec.zig:2253in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_overwritten_array_read_contradiction[function] — test source atlib/smt/src/bitvec.zig:1527in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_rejects_terms_appended_after_initialization[function] — test source atlib/smt/src/bitvec.zig:1660in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_arithmetic_shift_model[function] — test source atlib/smt/src/bitvec.zig:2079in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_bitwise_mask_model[function] — test source atlib/smt/src/bitvec.zig:1988in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_concat_and_extract_model[function] — test source atlib/smt/src/bitvec.zig:2191in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_finite_array_store_select_model[function] — test source atlib/smt/src/bitvec.zig:1471in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_fixed_rotate_model[function] — test source atlib/smt/src/bitvec.zig:2135in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_signed_comparison_model[function] — test source atlib/smt/src/bitvec.zig:1377in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_signed_division_remainder_and_modulo[function] — test source atlib/smt/src/bitvec.zig:1748in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_subtraction_model[function] — test source atlib/smt/src/bitvec.zig:1426in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_symbolic_logical_shift_model[function] — test source atlib/smt/src/bitvec.zig:2032in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_unsigned_division_and_remainder_model[function] — test source atlib/smt/src/bitvec.zig:1687in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_with_Boolean_term_assumptions[function] — test source atlib/smt/src/bitvec.zig:1351in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_encoder_solves_zero_and_sign_extension_model[function] — test source atlib/smt/src/bitvec.zig:2218in nearest public ownertiny.smt.bitveclib.smt.src.bitvec.test_bit-vector_model_skips_unused_uninterpreted_function_applications[function] — test source atlib/smt/src/bitvec.zig:1621in nearest public ownertiny.smt.bitveclib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_array_select_store_terms[function] — test source atlib/smt/src/smtlib/test.zig:262in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_concat_and_extract[function] — test source atlib/smt/src/smtlib/test.zig:183in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_extensions[function] — test source atlib/smt/src/smtlib/test.zig:211in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_rotations[function] — test source atlib/smt/src/smtlib/test.zig:237in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_shifts[function] — test source atlib/smt/src/smtlib/test.zig:148in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bit-vector_subtraction[function] — test source atlib/smt/src/smtlib/test.zig:95in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_bitwise_bit-vector_terms[function] — test source atlib/smt/src/smtlib/test.zig:119in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_emitted_QF_BV_script[function] — test source atlib/smt/src/smtlib/test.zig:13in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_overflow_predicates[function] — test source atlib/smt/src/smtlib/test.zig:64in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_signed_bit-vector_comparisons[function] — test source atlib/smt/src/smtlib/test.zig:39in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.test.test_SMT-LIB_parser_rereads_uninterpreted_function_applications[function] — test source atlib/smt/src/smtlib/test.zig:290in nearest public ownerlib.smt.src.smtlib.testlib.smt.src.smtlib.write.test_SMT-LIB_writer_emits_declarations_and_assertions[function] — test source atlib/smt/src/smtlib/write.zig:183in nearest public ownertiny.smt.smtlib.writelib.smt.src.term.test_term_context_infers_composite_sorts[function] — test source atlib/smt/src/term.zig:1072in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_bit-vector_bitwise_operators[function] — test source atlib/smt/src/term.zig:1119in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_bit-vector_overflow_predicates[function] — test source atlib/smt/src/term.zig:1094in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_bit-vector_rotate_operators[function] — test source atlib/smt/src/term.zig:1159in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_bit-vector_shift_operators[function] — test source atlib/smt/src/term.zig:1131in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_bit-vector_width-changing_operators[function] — test source atlib/smt/src/term.zig:1147in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_finite_bit-vector_array_operators[function] — test source atlib/smt/src/term.zig:1168in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_function_applications[function] — test source atlib/smt/src/term.zig:1054in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_signed_bit-vector_comparisons[function] — test source atlib/smt/src/term.zig:1107in nearest public ownertiny.smt.termlib.smt.src.term.test_term_context_stores_structured_arithmetic_expression[function] — test source atlib/smt/src/term.zig:1043in nearest public ownertiny.smt.term
Audit
| Definitions | 55 |
|---|---|
| Public names | 110 |
| Members | 3 |
| Version | 26.7.0 |
| Revision | daab053ee433 |