def trace5(items, r, runstate, push, pop, empty): """Make n random choices over whether to push or pop""" asl.log_append("empty", empty) stack = empty stack_size = 0 choicesperround = nitems for nr in range(nrounds * choicesperround): if stack_size == 0: (stack, ) = push(stack, next(items)) stack_size = stack_size + 1 elif stack_size == nitems: (stack, pop_item) = pop(stack) asl.observe(pop_item, "pop.nr{}".format(nr), runstate) stack_size = stack_size - 1 else: dopush = r.choice([True, False]) if dopush: (stack, ) = push(stack, next(items)) stack_size = stack_size + 1 else: (stack, pop_item) = pop(stack) asl.observe(pop_item, "pop.nr{}".format(nr), runstate) stack_size = stack_size - 1 # Final pop to make sure we get some data if stack_size > 0: (stack, pop_item) = pop(stack) asl.observe(pop_item, "pop.final", runstate) asl.log_append("{}/internal".format(runstate['mode']), stack)
def sketch(self, items, enqueue, dequeue, empty): """Example queue trace""" asl.log_append("empty", empty) queue = empty (queue,) = enqueue(queue, next(items)) (queue,) = enqueue(queue, next(items)) (dequeue_queue, dequeue_item) = dequeue(queue) self.observe(dequeue_item) (dequeue_queue, dequeue_item) = dequeue(dequeue_queue) self.observe(dequeue_item) return dequeue_item
def sketch(self, items, enqueue, dequeue, empty): """Example queue trace""" asl.log_append("empty", empty) queue = empty (queue, ) = enqueue(queue, next(items)) (queue, ) = enqueue(queue, next(items)) (dequeue_queue, dequeue_item) = dequeue(queue) self.observe(dequeue_item) (dequeue_queue, dequeue_item) = dequeue(dequeue_queue) self.observe(dequeue_item) return dequeue_item
def trace(items, r, runstate, add, card, empty): """Example set trace""" asl.log_append("empty", empty) aset = empty (set_card, ) = card(aset) asl.observe(bridge(set_card), "card1", runstate) hand = [next(items) for i in range(5)] subhand = [r.choice(hand) for i in range(5)] for i, item in enumerate(subhand): (aset, ) = add(aset, item) asl.log_append("{}/internal".format(runstate['mode']), aset) (set_card, ) = card(aset) asl.observe(bridge(set_card), "card.{}".format(i), runstate) return set_card
def trace(items, r, runstate, push, pop, empty): """Example stack trace""" asl.log_append("empty", empty) stack = empty (stack,) = push(stack, next(items)) asl.log_append("{}/internal".format(runstate['mode']), stack) (stack,) = push(stack, next(items)) asl.log_append("{}/internal".format(runstate['mode']), stack) (pop_stack, pop_item) = pop(stack) asl.observe(pop_item, "pop1", runstate) asl.log_append("{}/internal".format(runstate['mode']), pop_stack) (pop_stack, pop_item) = pop(pop_stack) asl.observe(pop_item, "pop2", runstate) asl.log_append("{}/internal".format(runstate['mode']), pop_stack) return pop_item
def trace3(items, r, runstate, push, pop, empty): """Pushes n items, to create n stacks, pops from random one""" asl.log_append("empty", empty) stack = empty for nr in range(nrounds): stacks = [] for i in range(nitems): (stack, ) = push(stack, next(items)) asl.log_append("{}/internal".format(runstate['mode']), stack) stacks.append(stack) stack = r.choice(stacks) asl.log_append("{}/internal".format(runstate['mode']), stack) (stack, pop_item) = pop(stack) asl.log_append("{}/internal".format(runstate['mode']), stack) asl.observe(pop_item, "pop.nr{}".format(nr), runstate)
def trace(items, r, runstate, add, card, empty): """Example set trace""" # import pdb; pdb.set_trace() asl.log_append("empty", empty) aset = empty (set_card, ) = card(aset) asl.observe(bridge(set_card), "card1", runstate) i1 = next(items) i2 = next(items) (aset, ) = add(aset, i1) asl.log_append("{}/internal".format(runstate['mode']), aset) (aset, ) = add(aset, i1) asl.observe(bridge(set_card), "card2", runstate) asl.log_append("{}/internal".format(runstate['mode']), aset) (aset, ) = add(aset, i2) asl.log_append("{}/internal".format(runstate['mode']), aset) (set_card, ) = card(aset) asl.observe(bridge(set_card), "card3", runstate) return set_card
def trace2(items, r, runstate, push, pop, empty): """Push Pop Push Push Pop Pop Push Push Push Pop Pop Pop""" asl.log_append("empty", empty) stack = empty for nr in range(nrounds): for i in range(nitems): (stack,) = push(stack, next(items)) asl.log_append("{}/internal".format(runstate['mode']), stack) pop_stack = stack for j in range(i, -1, -1): (pop_stack, pop_item) = pop(pop_stack) asl.log_append("{}/internal".format(runstate['mode']), pop_stack) asl.observe(pop_item, "pop.nr{}.i{}.j{}".format(nr, i, j), runstate) return pop_item
def trace1(items, r, runstate, push, pop, empty): """Push push push, pop pop pop""" asl.log_append("empty", empty) stack = empty for nr in range(nrounds): for i in range(nitems): (stack, ) = push(stack, next(items)) asl.log_append("{}/internal".format(runstate['mode']), stack) for j in range(nitems): (stack, pop_item) = pop(stack) asl.observe(pop_item, "pop.{}.{}".format(nr, j), runstate) asl.log_append("{}/internal".format(runstate['mode']), stack) return pop_item
def trace1(items, r, runstate, push, pop, empty): """Push push push, pop pop pop""" asl.log_append("empty", empty) stack = empty for nr in range(nrounds): for i in range(nitems): (stack,) = push(stack, next(items)) asl.log_append("{}/internal".format(runstate['mode']), stack) for j in range(nitems): (stack, pop_item) = pop(stack) asl.observe(pop_item, "pop.{}.{}".format(nr, j), runstate) asl.log_append("{}/internal".format(runstate['mode']), stack) return pop_item
def trace2(items, r, runstate, push, pop, empty): """Push Pop Push Push Pop Pop Push Push Push Pop Pop Pop""" asl.log_append("empty", empty) stack = empty for nr in range(nrounds): for i in range(nitems): (stack, ) = push(stack, next(items)) asl.log_append("{}/internal".format(runstate['mode']), stack) pop_stack = stack for j in range(i, -1, -1): (pop_stack, pop_item) = pop(pop_stack) asl.log_append("{}/internal".format(runstate['mode']), pop_stack) asl.observe(pop_item, "pop.nr{}.i{}.j{}".format(nr, i, j), runstate) return pop_item
def trace6(items, r, runstate, push, pop, empty): """Pushes n items, to create n stacks, pops randnum times, then observe once""" asl.log_append("empty", empty) stack = empty for nr in range(nrounds): stacks = [] for i in range(nitems): (stack, ) = push(stack, next(items)) asl.log_append("{}/internal".format(runstate['mode']), stack) stacks.append(stack) npops = r.randdint(1, nitems) for j in range(npops): (stack, pop_item) = pop(stack) asl.log_append("{}/internal".format(runstate['mode']), stack) asl.observe(pop_item, "pop.nr{}".format(nr), runstate)
def trace6(items, r, runstate, push, pop, empty): """Pushes n items, to create n stacks, pops randnum times, then observe once""" asl.log_append("empty", empty) stack = empty for nr in range(nrounds): stacks = [] for i in range(nitems): (stack, ) = push(stack, next(items)) asl.log_append("{}/internal".format(runstate['mode']), stack) stacks.append(stack) npops = r.randint(1, nitems) for j in range(npops): (stack, pop_item) = pop(stack) asl.log_append("{}/internal".format(runstate['mode']), stack) asl.observe(pop_item, "pop.nr{}".format(nr), runstate)
def trace(items, r, runstate, push, pop, empty): """Example stack trace""" # import pdb; pdb.set_trace() asl.log_append("empty", empty) stack = empty for nr in range(nrounds): for i in range(nitems): (stack, ) = push(stack, next(items)) # print("BLIP!") asl.log_append("{}/internal".format(runstate['mode']), stack) for j in range(nitems): (stack, pop_item) = pop(stack) asl.observe(pop_item, "pop.{}.{}".format(nr, j), runstate) # print("BLIP!") asl.log_append("{}/internal".format(runstate['mode']), stack) return pop_item
def trace(items, r, runstate, push, pop, empty): """Example stack trace""" # import pdb; pdb.set_trace() asl.log_append("empty", empty) stack = empty for nr in range(nrounds): for i in range(nitems): (stack,) = push(stack, next(items)) # print("BLIP!") asl.log_append("{}/internal".format(runstate['mode']), stack) for j in range(nitems): (stack, pop_item) = pop(stack) asl.observe(pop_item, "pop.{}.{}".format(nr, j), runstate) # print("BLIP!") asl.log_append("{}/internal".format(runstate['mode']), stack) return pop_item