Module Import alias Import alias Import alias Import alias Import alias identifier Import alias identifier Import alias identifier Import alias identifier Import alias identifier Import alias identifier Import alias identifier Import alias Import alias identifier Import alias FunctionDef arguments args defaults vararg body Return Call AttributeLoad NameLoad attr Call NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Return Call AttributeLoad NameLoad attr BinOpAdd Str NameLoad decorator_list ClassDef bases AttributeLoad NameLoad attr body FunctionDef arguments args NameParam defaults body Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr Assign AttributeStore NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr Assign AttributeStore NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr Assign AttributeStore NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad Call AttributeLoad NameLoad attr attr Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr SubscriptLoad Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad NameLoad attr Index Num Str Assign AttributeStore NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr AttributeLoad Call AttributeLoad NameLoad attr NameLoad attr Assign AttributeStore NameLoad attr Call AttributeLoad AttributeLoad NameLoad attr attr Assign AttributeStore NameLoad attr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad NameLoad attr AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Assign NameStore Call NameLoad Assign NameStore ListLoad NameLoad While NameLoad body Assign NameStore Call AttributeLoad NameLoad attr If CompareNotIn NameLoad NameLoad body Expr Call AttributeLoad NameLoad attr NameLoad For NameStore Call AttributeLoad Call AttributeLoad NameLoad attr NameLoad attr body Expr Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call NameLoad NameLoad Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore Num For NameStore NameLoad body For NameStore Call AttributeLoad NameLoad attr body AugAssignAdd NameStore Num Return TupleLoad NameLoad NameLoad Call AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body Assign TupleStore NameStore NameStore NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad Expr Call AttributeLoad NameLoad attr Str NameLoad NameLoad NameLoad decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Call NameLoad AttributeLoad NameLoad attr Call NameLoad Str Call NameLoad Str Expr Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults kwarg body Assign NameStore Call NameLoad Call NameLoad Call AttributeLoad NameLoad attr Assign NameStore BinOpAdd BinOpAdd BinOpAdd BinOpAdd Str Call AttributeLoad Str attr BinOpAdd ListLoad Str NameLoad Str NameLoad Str Assign NameStore Call AttributeLoad AttributeLoad NameLoad attr attr Call NameLoad Call AttributeLoad NameLoad attr NameLoad ListComp IfExp Call NameLoad SubscriptLoad NameLoad Index NameLoad NameLoad Call AttributeLoad NameLoad attr SubscriptLoad NameLoad Index NameLoad SubscriptLoad NameLoad Index NameLoad comprehension NameStore NameLoad Expr Call AttributeLoad NameLoad attr AttributeLoad NameLoad attr NameLoad Return NameLoad decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str keyword AttributeLoad NameLoad attr keyword Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str keyword AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr NameLoad Str Expr Call AttributeLoad NameLoad attr NameLoad decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str keyword Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str keyword Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str keyword Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str keyword Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str Expr Call AttributeLoad NameLoad attr CompareEq Call NameLoad Call AttributeLoad NameLoad attr Num decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str keyword Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str keyword Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Assign NameStore NameLoad For NameStore Call NameLoad Num body Expr Call AttributeLoad NameLoad attr Str keyword Call NameLoad NameLoad Print BinOpDiv BinOpDiv BinOpDiv BinOpSub NameLoad NameLoad BinOpAdd NameLoad Num Num Num Str BinOpDiv BinOpDiv BinOpSub Call AttributeLoad NameLoad attr NameLoad Num Num Str Assign NameStore Call AttributeLoad NameLoad attr decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str keyword Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str keyword Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr NameLoad Str decorator_list FunctionDef arguments args NameParam defaults body Assign NameStore Call AttributeLoad NameLoad attr Str Expr Call AttributeLoad NameLoad attr CompareGt Call NameLoad Call AttributeLoad NameLoad attr Num decorator_list FunctionDef arguments args NameParam NameParam defaults body Expr Call AttributeLoad NameLoad attr CompareEq Call NameLoad AttributeLoad Call AttributeLoad Call AttributeLoad NameLoad attr attr attr Num Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr CompareEq Call NameLoad AttributeLoad Call AttributeLoad Call AttributeLoad NameLoad attr attr attr Num Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr Call AttributeLoad SubscriptLoad Call AttributeLoad Call AttributeLoad NameLoad attr attr Index Num attr decorator_list FunctionDef arguments args NameParam NameParam NameParam defaults body If Call NameLoad NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr CompareEq Call NameLoad AttributeLoad Call AttributeLoad Call AttributeLoad NameLoad attr attr attr Num Call AttributeLoad NameLoad attr Expr Call AttributeLoad NameLoad attr SubscriptLoad Call AttributeLoad Call AttributeLoad NameLoad attr attr Index Num NameLoad decorator_list FunctionDef arguments args NameParam NameParam defaults vararg body Expr Call AttributeLoad NameLoad attr CompareEq Call NameLoad Call AttributeLoad NameLoad attr Num Assign NameStore ListLoad For NameStore NameLoad body If Call NameLoad NameLoad NameLoad body Assign NameStore Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Assign NameStore Call NameLoad NameLoad For NameStore Call AttributeLoad Call AttributeLoad NameLoad attr attr body Expr Call AttributeLoad NameLoad attr CompareIn NameLoad NameLoad BinOpMod Str TupleLoad NameLoad Call AttributeLoad Call AttributeLoad NameLoad attr attr NameLoad Expr Call AttributeLoad NameLoad attr NameLoad Expr Call AttributeLoad NameLoad attr CompareEq Call NameLoad NameLoad Num BinOpMod Str TupleLoad NameLoad Call AttributeLoad Call AttributeLoad NameLoad attr attr decorator_list decorator_list
N/A N/A unittest N/A os N/A re N/A time N/A ufora.FORA.python.FORA FORA N/A ufora.FORA.python.Evaluator.Evaluator Evaluator N/A ufora.FORA.python.Evaluator.LocalEvaluator LocalEvaluator N/A ufora.FORA.python.Runtime Runtime N/A ufora.native.FORA FORANative N/A ufora.native.Cumulus CumulusNative N/A ufora.native.CallbackScheduler CallbackScheduler N/A logging N/A ufora.native.TCMalloc TCMallocNative N/A pyfora makeJovt N/A N/A N/A args N/A N/A N/A N/A FORANative JOVListToJOVT N/A list args N/A symbolJov N/A N/A sym N/A N/A N/A N/A N/A FORANative parseStringToJOV N/A ` sym N/A TestSimpleForwardReasoner N/A N/A unittest TestCase N/A setUp N/A N/A self N/A N/A N/A N/A self callbackScheduler N/A N/A CallbackScheduler singletonForTesting N/A N/A self runtime N/A N/A Runtime getMainRuntime N/A N/A self axioms N/A N/A N/A self runtime getAxioms N/A N/A self compiler N/A N/A N/A self runtime getTypedForaCompiler N/A N/A self builtinsAsJOV N/A N/A N/A FORANative JudgmentOnValue Constant N/A N/A N/A FORA builtin implVal_ N/A pyforaPath N/A N/A N/A os path join N/A N/A N/A N/A os path split N/A pyfora __file__ N/A 0 fora/purePython N/A N/A self purePythonAsJOV N/A N/A N/A FORANative JudgmentOnValue Constant N/A N/A N/A FORA importModule pyforaPath implVal_ N/A N/A self instructionGraph N/A N/A N/A self runtime getInstructionGraph N/A N/A self reasoner N/A N/A FORANative SimpleForwardReasoner N/A self compiler N/A self instructionGraph N/A self axioms N/A nodeAndFrameCounts N/A N/A self reasoner frame N/A N/A N/A allFrames N/A set N/A toCheck N/A frame N/A toCheck N/A N/A frameToCheck N/A N/A toCheck pop N/A N/A frameToCheck allFrames N/A N/A N/A N/A allFrames add frameToCheck N/A subframe N/A N/A N/A N/A reasoner subframesFor frameToCheck values N/A N/A N/A N/A toCheck append subframe N/A reachableFrames N/A len allFrames N/A allFrameCount N/A N/A reasoner totalFrameCount N/A badApplyNodes 0 N/A f allFrames N/A N/A n N/A N/A f unknownApplyNodes N/A N/A badApplyNodes 1 N/A N/A badApplyNodes reachableFrames N/A N/A reasoner totalFrameCount N/A dumpReasonerSummary N/A N/A self reasoner frame N/A N/A N/A N/A badApplyNodes reachableFrames allFrameCount N/A N/A self nodeAndFrameCounts reasoner frame N/A N/A N/A logging info Reaching %s of %s frames with %s bad nodes. reachableFrames allFrameCount badApplyNodes N/A test_builtin_math_isSimple N/A N/A self N/A N/A N/A frame N/A N/A N/A self reasoner reasonAboutApply N/A makeJovt N/A self builtinsAsJOV N/A symbolJov Member N/A symbolJov math N/A N/A N/A self assertFrameHasConstantResult frame N/A reasonAboutExpression N/A N/A self expression N/A variableJudgments N/A N/A keys N/A sorted N/A list N/A N/A variableJudgments keys N/A functionText N/A N/A N/A N/A fun( N/A N/A , join N/A N/A _ keys ) {  expression  } N/A frame N/A N/A N/A self reasoner reasonAboutApply N/A makeJovt N/A N/A FORANative parseStringToJOV functionText N/A N/A N/A isinstance N/A variableJudgments N/A k str N/A N/A FORANative parseStringToJOV N/A variableJudgments N/A k N/A variableJudgments N/A k N/A k keys N/A N/A N/A self dumpReasonerSummary N/A self reasoner frame N/A frame N/A test_nested_iterators N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let f = fun() {
                let ix = 0
                while (ix < 10)
                    {
                    ix = ix + 1
                    if (ix % 5)
                        yield ix
                    else
                        yield ix + 1
                    }
                };
            let g = fun() {
                for ix in f() {
                    if (ix % 5)
                        yield ix
                    else
                        yield ix + 1
                    }
                };
            let h = fun() {
                for ix in g() {
                    yield ix
                    }
                }
            let i = fun() {
                for ix in h() {
                    yield ix
                    }
                }

            let res = 0
            for ix in i()
                res = res + ix
            return res
             N/A N/A N/A self assertFrameHasResultJOV frame {Int64} N/A test_pure_python_lt N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression purePython.PyFloat(x).__lt__(purePython.PyFloat(x+1.0)).@m purePython N/A self purePythonAsJOV x {Float64} N/A N/A N/A self assertFrameHasResultJOV frame {Bool} N/A test_pure_python_isinstance N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression purePython.IsInstance(purePython.PyFloat(1.0), purePython.PyTuple((purePython.IntType,purePython.BoolType,purePython.BoolType,purePython.BoolType,purePython.FloatType))).@m purePython N/A self purePythonAsJOV N/A N/A N/A self assertFrameHasResultJOV frame true N/A N/A N/A self assertFrameHasConstantResult frame N/A test_loop_resolves N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression let res = 0; 
            while (x > 0) { 
                x = x - 1; 
                res = res + x
                }
            res x 10 N/A N/A N/A self assertFrameHasResultJOV frame {Int64} N/A test_loop_with_iterator N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression let res = 0; 
            let sequence = fun(x) { while (x > 0) { yield x; x = x - 1 } };
            for ix in sequence(100) {
                res = res + ix
                }
            res N/A N/A N/A self assertFrameHasResultJOV frame {Int64} N/A test_tuple_matching N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            match (x) with (()) { 0 } ((z)) { 1 }
             x ({Int64}) N/A N/A N/A self assertFrameHasResultJOV frame 1 N/A test_nested_recursion N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let sum = fun(a,b,f) { 
                let res = f(a)
                a = a + 1
                while (a<b) {
                    res = res + f(a)
                    a = a + 1
                    }
                return res
                }

            sum(0,100, fun(x) { sum(0, 100, fun(x) { x })})
             N/A N/A N/A self assertFrameHasResultJOV frame {Int64} N/A test_tuple_iterator N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            [x for x in (1,2,3)]
             N/A N/A N/A self assertFrameHasResultJOV frame {Vector([{Int64}])} N/A test_tuple_loop_resolves N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression let res = (); 
            while (x > 0) { 
                x = x - 1; 
                res = res + (x,)
                }
            res x 10 N/A N/A N/A self assertFrameHasResultJOV frame (...{Int64}) N/A test_function_call_works N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let f = fun(x) { x + 1 };
            let g = fun(x,y) { x + y };
            let res = 0; 
            while (x > 0) { 
                x = x - 1; 
                res = res + f(x) + g(x,10)
                }
            res x 10 N/A N/A N/A self assertFrameHasResultJOV frame {Int64} N/A test_function_call_with_branching_works N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let res = 0

            let f = fun(x) { x + 1 };
            let g = fun(x) { x + 2 };

            while (res < 1000)
                {
                let toCall = nothing

                if (res > 10)
                    toCall = f
                else   
                    toCall = g

                res = res + toCall(res)
                }

            return res
             N/A N/A N/A self assertFrameHasResultJOV frame {Int64} N/A N/A N/A self assertTrue N/A N/A len N/A N/A frame unknownApplyNodes 0 N/A test_function_call_and_branching N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let f = fun(x) { x + 1 };
            let g = fun(x) { x + 2 };
            let res = 0; 
            while (x > 0) { 
                x = x - 1; 
                if (x % 2 == 0)
                    res = res + f(x)
                else
                    res = res + g(x)
                }
            res x 10 N/A N/A N/A self assertFrameHasResultJOV frame {Int64} N/A test_tuple_tracing_works N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let f = fun(x) { x + 1 };
            let t = ("asdf", 2)
            t[f(0)]
             x 10 N/A N/A N/A self assertFrameHasResultJOV frame 2 N/A test_simple_recursion N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let f = fun(x, res = 0) 
                {
                if (x == 0) 
                    return res; 
                return f(x-1,res+x) 
                };

            f(1000)
             N/A N/A N/A self assertFrameHasResultJOV frame {Int64} N/A test_simple_dual_recursion N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let f = fun(x1, x2, res = 0) 
                {
                if (x1 == 0 or x2 == 0) 
                    return res; 
                return f(x1-1,x2,res+x1) + f(x1, x2 - 1, res+x2)
                };

            f(1000, 1000)
             N/A N/A N/A self assertFrameHasResultJOV frame {Int64} N/A test_simple_mutual_recursion N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let f = fun(x1, res = 0) 
                {
                if (x1 == 0) 
                    return res; 
                return g(x1-1,res+x1)
                },
            g = fun(x2, res) {
                f(x2, res) + 2
                };

            f(1000, 1000)
             N/A N/A N/A self assertFrameHasResultJOV frame {Int64} N/A test_call_site_recursion N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let f = fun
                (`int ) { 0 } 
                (`str) { "asdf" }
                (`tuple) { (f(`int), f(`str)) }
                ;

            f(`tuple)
             N/A N/A N/A self assertFrameHasResultJOV frame (0,'asdf') N/A test_recursion_on_tuples N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let f = fun(x, res=()) 
                {
                if (x == 0)
                    return res
                else
                    return f(x-1,(x,res))
                };

            f(1000)
             N/A N/A N/A self assertFrameHasResultJOV frame ({Int64}, (...*)) N/A DISABLEDtest_memory_load N/A N/A self N/A N/A N/A b0 N/A N/A TCMallocNative getBytesUsed N/A b1 b0 N/A ix N/A range 10000 N/A N/A N/A N/A self reasonAboutExpression 
                let g = fun(t) { size(t) }
                let f = fun(t) { let c = g; c((1,) + t) + c((2,) + t) + c((3,) + t) };
                let f2 = fun(t) { let c = f; c((1,) + t) + c((2,) + t) + c((3,) + t) };
                let f3 = fun(t) { let c = f2; c((1,) + t) + c((2,) + t) + c((3,) + t) };
                let f4 = fun(t) { let c = f3; c((1,) + t) + c((2,) + t) + c((3,) + t) };
                
                f4((x,))
                 x N/A str ix N/A N/A N/A N/A N/A b1 b0 N/A ix 1 1024 1024.0  MB per for a total of  N/A N/A N/A N/A N/A TCMallocNative getBytesUsed b0 1024 1024.0  MB allocated. N/A b1 N/A N/A TCMallocNative getBytesUsed N/A test_recursion_on_tuples_2 N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let f = fun((), soFar) { () } 
                (x, soFar) { (x[0]+soFar,) + f(x[1,], soFar+x[0]) }

            f((1,2,3), 0)
             N/A N/A N/A self assertFrameHasResultJOVs frame (... {Int64}) N/A test_two_layer_recursion N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let f = fun(x, res = 0) 
                {
                if (x == 0) 
                    return res; 
                return g(x-1,res+x) 
                },
            g = fun(x,res) { f(x,res) * 2 };

            f(1000)
             N/A N/A N/A self assertFrameHasResultJOV frame {Int64} N/A test_same_function_called_with_different_arguments N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let f = fun(x) { 
                let res = 2; 
                while (res>0) {
                    res = res - 1; 
                    x = x + x
                    }; 
                x 
                };

            (f(10),f("asdf"))
             N/A N/A N/A self assertFrameHasResultJOV frame ({Int64},{String}) N/A test_heterogeneous_vec_of_vec N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            [[0],["1.0"]][0]
             N/A N/A N/A self assertFrameHasResultJOVs frame {Vector([{Int64}])} {Vector([{String}])} N/A test_vector_recursion N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let f = fun(v) {
                if (size(v) == 100)
                    return v
                return f([v[0], [v[0]]])
                }
            f([0])
             N/A N/A N/A self assertFrameHasResultJOVs frame {Vector} N/A test_list_comprehension N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            [x for x in (1,2,3)]
             N/A N/A N/A self assertFrameHasResultJOVs frame {Vector([{Int64}])} N/A test_switch_is_exclusive_and_disjoint N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            match (x) with (1) { 1 } ("2") { 2 }
             x {Int64} N/A N/A N/A self assertFrameHasResultJOVs frame 1 N/A test_alternativesWork N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            match (#ASDF(z:x)) with (#ASDF(z:x)) { x }
             x {Int64} N/A N/A N/A self assertFrameHasResultJOVs frame {Int64} N/A test_heterogeneous_vec_of_vec_function_apply N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let res = []
            let ix = 0
            let v = [[0],["1.0"]]

            while (ix < size(v))
                {
                res = res :: v[ix]
                ix = ix + 1
                }
            res
             N/A N/A N/A self assertFrameHasResultJOVs frame {Vector([{Vector([{Int64}])}, {Vector([{String}])}])} N/A test_tuple_function_iteration N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let f1 = {_+1};
            let f2 = {_+2};
            let f3 = {_+3};
            let f4 = {_+4};
            
            let fs = (f1, f2, f3, f4);

            let res = 0

            for f in fs
                res = res + f(1)

            res
             N/A N/A N/A self assertFrameHasResultJOVs frame 14 N/A test_tuple_function_iteration2 N/A N/A self N/A N/A N/A frame N/A N/A self reasonAboutExpression 
            let f1 = {_+1};
            let f2 = {_+2};
            let f3 = {_+3};
            let f4 = {_+4};
            
            let fs = (f1, f2, f3, f4);

            let res = 0

            for f in fs
                for f2 in fs
                    res = res + f(1) + f2(1)

            res
             N/A N/A N/A self assertTrue N/A N/A len N/A N/A frame unknownApplyNodes 0 N/A assertFrameHasConstantResult N/A N/A self frame N/A N/A N/A N/A N/A self assertTrue N/A N/A len N/A N/A N/A N/A N/A frame exits resultPart vals 1 N/A N/A frame exits N/A N/A N/A self assertTrue N/A N/A len N/A N/A N/A N/A N/A frame exits throwPart vals 0 N/A N/A frame exits N/A N/A N/A self assertTrue N/A N/A N/A N/A N/A N/A N/A frame exits resultPart N/A 0 constant N/A assertFrameHasResultJOV N/A N/A self frame resultJOV N/A N/A N/A N/A isinstance resultJOV str N/A N/A resultJOV N/A N/A FORANative parseStringToJOV resultJOV N/A N/A N/A self assertTrue N/A N/A len N/A N/A N/A N/A N/A frame exits resultPart vals 1 N/A N/A frame exits N/A N/A N/A self assertEqual N/A N/A N/A N/A N/A frame exits resultPart N/A 0 resultJOV N/A assertFrameHasResultJOVs N/A N/A self frame N/A resultJOVs N/A N/A N/A N/A self assertTrue N/A N/A len N/A N/A frame unknownApplyNodes 0 N/A jovsToFind N/A N/A resultJOV resultJOVs N/A N/A N/A isinstance resultJOV str N/A N/A resultJOV N/A N/A FORANative parseStringToJOV resultJOV N/A N/A N/A jovsToFind append resultJOV N/A resultJOVs N/A list jovsToFind N/A res N/A N/A N/A N/A frame exits resultPart N/A N/A N/A N/A self assertTrue N/A res jovsToFind N/A Code produced unexpected JOV: %s. Result was %s but expected %s N/A res N/A N/A N/A N/A frame exits resultPart resultJOVs N/A N/A N/A jovsToFind remove res N/A N/A N/A self assertTrue N/A N/A len jovsToFind 0 N/A Code didn't produce these jovs: %s. Produced %s instead. N/A jovsToFind N/A N/A N/A N/A frame exits resultPart N/A N/A