Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
6b3c7f3
add type constraint assertion and preconds for function inputs
thanhnguyen-aws Mar 13, 2026
5ba1ab5
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 13, 2026
425494d
add skip test to non-laurel sarif
thanhnguyen-aws Mar 13, 2026
e7166a8
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 13, 2026
38250fb
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 16, 2026
2218a63
merge conflict
thanhnguyen-aws Mar 16, 2026
713e9ae
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 16, 2026
0fada43
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 17, 2026
cfe5a6e
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 17, 2026
e08098a
merge conflict
thanhnguyen-aws Mar 17, 2026
f6145c6
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 17, 2026
5e8b9e6
merge conflict
thanhnguyen-aws Mar 17, 2026
0e65c78
merge conflict
thanhnguyen-aws Mar 19, 2026
70fbd1e
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 19, 2026
e7c8ae9
add PyArgInfo structure + fix expected test
thanhnguyen-aws Mar 19, 2026
6faa1c6
merge conflict
thanhnguyen-aws Mar 20, 2026
992e8a6
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 23, 2026
104afcc
merge conflict
thanhnguyen-aws Mar 23, 2026
185e629
fix expected test
thanhnguyen-aws Mar 23, 2026
53a47e8
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 23, 2026
7e5e396
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 24, 2026
d4ebde6
merge conflict
thanhnguyen-aws Mar 24, 2026
a2019e7
fix expected test
thanhnguyen-aws Mar 24, 2026
1ec5931
remove assertions + add checking that input types are either a single…
thanhnguyen-aws Mar 24, 2026
1ee1a50
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 24, 2026
09b618b
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 25, 2026
74c071c
fix defaultValue type + List, Dict element types
thanhnguyen-aws Mar 25, 2026
58281b0
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 25, 2026
e053749
merge conflict
thanhnguyen-aws Mar 25, 2026
8855f87
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 25, 2026
6288e11
add compositeTypes from overloadtable to ImportedSymbol
thanhnguyen-aws Mar 25, 2026
1f10a60
fix throw error type invalid
thanhnguyen-aws Mar 25, 2026
6df587f
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 25, 2026
76acdb3
fix expected tests
thanhnguyen-aws Mar 25, 2026
d7dc924
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 26, 2026
8770c48
merge conflict in expected files
thanhnguyen-aws Mar 26, 2026
6172456
add return type constraints as postcondition
thanhnguyen-aws Mar 26, 2026
73f2a23
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 26, 2026
52b797c
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 26, 2026
490f1ce
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 26, 2026
062301c
merge conflict
thanhnguyen-aws Mar 26, 2026
f626626
remove return type check for None type (temporary)
thanhnguyen-aws Mar 26, 2026
86da7ea
fix expected test
thanhnguyen-aws Mar 26, 2026
d392231
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 26, 2026
3dc3d02
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 26, 2026
2a2ad1f
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 27, 2026
8fa67fd
merge conflict
thanhnguyen-aws Mar 27, 2026
22cc276
fix expected test
thanhnguyen-aws Mar 27, 2026
58a0f09
fix validType checking
thanhnguyen-aws Mar 27, 2026
d8091b4
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 27, 2026
54f6e54
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 27, 2026
07fd77b
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 30, 2026
635dc20
fix expected file + rename Option constructors to avoid confict with …
thanhnguyen-aws Mar 30, 2026
9891207
merge conflict
thanhnguyen-aws Mar 31, 2026
7bb93de
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 31, 2026
600b18a
remove slice checking for dict and list
thanhnguyen-aws Mar 31, 2026
d31bc90
fix internal regression
thanhnguyen-aws Mar 31, 2026
fe8fe52
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Mar 31, 2026
082d4d1
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Apr 1, 2026
1e86ce3
rename Any constructors to make it consistent with Python type names,…
thanhnguyen-aws Apr 1, 2026
ce46cdf
rewrite code of some functions for better mantainance
thanhnguyen-aws Apr 1, 2026
035b6db
fix CI fails
thanhnguyen-aws Apr 1, 2026
e317d55
fix verifyprelude output
thanhnguyen-aws Apr 1, 2026
cfaa896
merge conflict
thanhnguyen-aws Apr 3, 2026
6e79200
Merge branch 'main' into typeconstraintinput
thanhnguyen-aws Apr 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions Strata/Languages/Python/PySpecPipeline.lean
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,8 @@ private def specDefaultToExpr : Python.Specs.SpecDefault → Python.expr SourceR
| .none => .Constant default (.ConNone default) default

/-- Convert a pyspec Arg to a PythonFunctionDecl arg tuple. -/
private def specArgToFuncDeclArg (arg : Python.Specs.Arg)
: String × String × Option (Python.expr SourceRange) :=
(arg.name, "Any", arg.default.map specDefaultToExpr)
private def specArgToFuncDeclArg (arg : Python.Specs.Arg): Python.PyArgInfo :=
{name:= arg.name, md:= default, tys:= ["Any"], default:= arg.default.map specDefaultToExpr}

/-- Build a PythonFunctionDecl from a PySpec FunctionDecl or class method,
expanding `**kwargs` TypedDict fields into individual parameters. -/
Expand Down
13 changes: 7 additions & 6 deletions Strata/Languages/Python/PythonLaurelCorePrelude.lean
Original file line number Diff line number Diff line change
Expand Up @@ -67,18 +67,19 @@ datatype Error () {
// that the conversion from a string constant is handled by the translator.

datatype OptionInt {
Some (unwrap: int),
None ()
}
OptSome (unwrap: int),
OptNone ()
};

datatype Any () {
from_none (),
from_None (),
from_bool (as_bool : bool),
from_int (as_int : int),
from_float (as_float : real),
from_string (as_string : string),
from_str (as_string : string),
from_datetime (as_datetime : int),
from_Dict (as_Dict: DictStrAny),
from_bytes (as_bytes: string),
from_DictStrAny (as_Dict: DictStrAny),
from_ListAny (as_ListAny : ListAny),
from_ClassInstance (classname : string, instance_attributes: DictStrAny),
from_Slice(start: int, stop: OptionInt),
Expand Down
149 changes: 79 additions & 70 deletions Strata/Languages/Python/PythonRuntimeLaurelPart.lean

Large diffs are not rendered by default.

250 changes: 173 additions & 77 deletions Strata/Languages/Python/PythonToLaurel.lean

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions Strata/Languages/Python/Specs/ToLaurel.lean
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,7 @@ partial def specExprToLaurel (e : SpecExpr) (md : Imperative.MetaData Core.Expre
| .var "kwargs" =>
-- containsKey(kwargs, "key") → parameter was provided (not None)
return some (mkStmt (.PrimitiveOp .Not
[mkStmt (.StaticCall (mkId "Any..isfrom_none") [mkStmt (.Identifier (mkId key)) md]) md])
[mkStmt (.StaticCall (mkId "Any..isfrom_None") [mkStmt (.Identifier (mkId key)) md]) md])
md)
| _ =>
let c? ← specExprToLaurel container md
Expand Down Expand Up @@ -397,7 +397,7 @@ def buildSpecBody (preconditions : Array Assertion)
-- Assert that required parameters are provided (not None)
for param in requiredParams do
let cond := mkStmt (.PrimitiveOp .Not
[mkStmt (.StaticCall (mkId "Any..isfrom_none")
[mkStmt (.StaticCall (mkId "Any..isfrom_None")
[mkStmt (.Identifier (mkId param)) md]) md]) md
let assertStmt ← mkStmtWithLoc (.Assert cond) default s!"Required parameter '{param}' is missing"
stmts := assertStmt :: stmts
Expand Down
6 changes: 3 additions & 3 deletions StrataTest/Languages/Python/PreludeVerifyTest.lean
Original file line number Diff line number Diff line change
Expand Up @@ -158,15 +158,15 @@ Obligation: postcondition
Property: assert
Result: ✅ pass

Obligation: assert(41605)
Obligation: assert(41763)
Property: assert
Result: ✅ pass

Obligation: assert(41675)
Obligation: assert(41830)
Property: assert
Result: ✅ pass

Obligation: assert(41786)
Obligation: assert(41938)
Property: assert
Result: ✅ pass

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
test_break_continue.py(3, 4): ✅ pass - loop_guard_calls_Any_to_bool_0
unknown location: ✅ pass - (test_while_break ensures) Return type constraint
test_break_continue.py(8, 4): ✅ pass - loop_guard_calls_Any_to_bool_0
test_break_continue.py(8, 4): ✅ pass - loop_guard_end_calls_Any_to_bool_0
DETAIL: 3 passed, 0 failed, 0 inconclusive
unknown location: ✅ pass - (test_while_continue ensures) Return type constraint
unknown location: ✅ pass - assume_assume(0)_calls_PIn_0
unknown location: ✅ pass - assume_assume(0)_calls_Any_to_bool_1
unknown location: ✅ pass - (test_for_break ensures) Return type constraint
unknown location: ✅ pass - assume_assume(0)_calls_PIn_0
unknown location: ✅ pass - assume_assume(0)_calls_Any_to_bool_1
unknown location: ✅ pass - (test_for_continue ensures) Return type constraint
DETAIL: 11 passed, 0 failed, 0 inconclusive
RESULT: Analysis success
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
test_class_decl.py(9, 4): ✅ pass - callElimAssert_requires_4
test_class_decl.py(8, 0): ✅ pass - postcondition
test_class_decl.py(13, 0): ✅ pass - ite_cond_calls_Any_to_bool_0
DETAIL: 2 passed, 0 failed, 0 inconclusive
DETAIL: 3 passed, 0 failed, 0 inconclusive
RESULT: Analysis success
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
test_class_field_init.py(10, 4): ✅ pass - callElimAssert_requires_5
test_class_field_init.py(9, 0): ✅ pass - postcondition
test_class_field_init.py(13, 0): ✅ pass - ite_cond_calls_Any_to_bool_0
DETAIL: 2 passed, 0 failed, 0 inconclusive
DETAIL: 3 passed, 0 failed, 0 inconclusive
RESULT: Analysis success
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
test_class_field_use.py(12, 4): ✅ pass - callElimAssert_requires_7
unknown location: ❓ unknown - (process_buffer ensures) Return type constraint
test_class_field_use.py(12, 4): ✅ pass - callElimAssert_requires_8
test_class_field_use.py(14, 4): ✅ pass - assert_assert(285)_calls_Any_to_bool_0
test_class_field_use.py(14, 4): ❓ unknown - assert(285)
DETAIL: 2 passed, 0 failed, 1 inconclusive
test_class_field_use.py(11, 0): ✅ pass - postcondition
DETAIL: 3 passed, 0 failed, 2 inconclusive
RESULT: Inconclusive
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ test_class_methods.py(28, 4): ❓ unknown - assert(654)
test_class_methods.py(30, 4): ✅ pass - callElimAssert_requires_0_4
test_class_methods.py(30, 4): ✅ pass - callElimAssert_requires_1_5
test_class_methods.py(30, 4): ✅ pass - callElimAssert_requires_2_6
test_class_methods.py(17, 0): ✅ pass - postcondition
test_class_methods.py(32, 0): ✅ pass - ite_cond_calls_Any_to_bool_0
DETAIL: 8 passed, 0 failed, 3 inconclusive
DETAIL: 9 passed, 0 failed, 3 inconclusive
RESULT: Inconclusive
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ test_class_with_methods.py(26, 4): ❓ unknown - assert(544)
test_class_with_methods.py(28, 4): ✅ pass - callElimAssert_requires_0_4
test_class_with_methods.py(28, 4): ✅ pass - callElimAssert_requires_1_5
test_class_with_methods.py(28, 4): ✅ pass - callElimAssert_requires_2_6
test_class_with_methods.py(17, 0): ✅ pass - postcondition
test_class_with_methods.py(30, 0): ✅ pass - ite_cond_calls_Any_to_bool_0
DETAIL: 7 passed, 0 failed, 2 inconclusive
DETAIL: 8 passed, 0 failed, 2 inconclusive
RESULT: Inconclusive
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
test_default_params.py(8, 4): ❓ unknown - loop_guard_calls_Any_to_bool_0
unknown location: ✅ pass - (greet ensures) Return type constraint
test_default_params.py(8, 4): ✅ pass - loop_guard_calls_Any_to_bool_0
test_default_params.py(8, 4): ✅ pass - loop_guard_end_calls_Any_to_bool_0
unknown location: ❓ unknown - (power ensures) Return type constraint
test_default_params.py(14, 4): ✅ pass - callElimAssert_requires_0_21
test_default_params.py(14, 4): ✅ pass - callElimAssert_requires_1_22
test_default_params.py(15, 4): ✅ pass - assert_assert(325)_calls_Any_to_bool_0
test_default_params.py(15, 4): ❓ unknown - assert(325)
test_default_params.py(17, 4): ✅ pass - callElimAssert_requires_0_15
test_default_params.py(17, 4): ✅ pass - callElimAssert_requires_1_16
test_default_params.py(18, 4): ✅ pass - assert_assert(421)_calls_Any_to_bool_0
test_default_params.py(18, 4): ❓ unknown - assert(421)
test_default_params.py(20, 4): ✅ pass - callElimAssert_requires_0_9
test_default_params.py(20, 4): ✅ pass - callElimAssert_requires_1_10
test_default_params.py(21, 4): ✅ pass - assert_assert(501)_calls_Any_to_bool_0
test_default_params.py(21, 4): ❓ unknown - assert(501)
test_default_params.py(23, 4): ✅ pass - callElimAssert_requires_0_3
test_default_params.py(23, 4): ✅ pass - callElimAssert_requires_1_4
test_default_params.py(24, 4): ✅ pass - assert_assert(571)_calls_Any_to_bool_0
test_default_params.py(24, 4): ❓ unknown - assert(571)
test_default_params.py(26, 0): ✅ pass - ite_cond_calls_Any_to_bool_0
DETAIL: 6 passed, 0 failed, 5 inconclusive
DETAIL: 16 passed, 0 failed, 5 inconclusive
RESULT: Inconclusive
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
unknown location: ✅ pass - assume_assume(0)_calls_PIn_0
unknown location: ✅ pass - assume_assume(0)_calls_Any_to_bool_1
test_for_loop.py(6, 4): ✅ pass - assert_assert(129)_calls_Any_to_bool_0
test_for_loop.py(6, 4): ❓ unknown - assert(129)
test_for_loop.py(13, 8): ❓ unknown - ite_cond_calls_Any_to_bool_0
unknown location: ✅ pass - assume_assume(0)_calls_PIn_0
unknown location: ✅ pass - assume_assume(0)_calls_Any_to_bool_1
test_for_loop.py(13, 8): ✅ pass - ite_cond_calls_Any_to_bool_0
test_for_loop.py(15, 4): ✅ pass - assert_assert(361)_calls_Any_to_bool_0
test_for_loop.py(15, 4): ❓ unknown - assert(361)
unknown location: ✅ pass - assume_assume(0)_calls_PIn_0
unknown location: ✅ pass - assume_assume(0)_calls_Any_to_bool_1
test_for_loop.py(22, 8): ✅ pass - ite_cond_calls_Any_to_bool_0
test_for_loop.py(25, 4): ✅ pass - assert_assert(611)_calls_Any_to_bool_0
test_for_loop.py(25, 4): ✅ pass - assert(611)
test_for_loop.py(25, 4): ✅ pass - assert_assert(611)_calls_Any_to_bool_0
test_for_loop.py(25, 4): ❓ unknown - assert(611)
DETAIL: 6 passed, 0 failed, 4 inconclusive
DETAIL: 13 passed, 0 failed, 3 inconclusive
RESULT: Inconclusive
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
unknown location: ✅ pass - (Mul ensures) Return type constraint
test_func_input_type_constraints.py(7, 4): ✅ pass - ite_cond_calls_Any_to_bool_0
unknown location: ✅ pass - (Sum ensures) Return type constraint
unknown location: ✅ pass - (Sum ensures) Return type constraint
unknown location: ❓ unknown - set_LaurelResult_calls_Any_get_0
unknown location: ❓ unknown - set_LaurelResult_calls_Any_get_1
unknown location: ❓ unknown - (List_Dict_index ensures) Return type constraint
test_func_input_type_constraints.py(15, 0): ✅ pass - callElimAssert_requires_0_17
test_func_input_type_constraints.py(15, 0): ✅ pass - callElimAssert_requires_1_18
test_func_input_type_constraints.py(16, 0): ✅ pass - callElimAssert_requires_0_11
test_func_input_type_constraints.py(16, 0): ✅ pass - callElimAssert_requires_1_12
test_func_input_type_constraints.py(17, 0): ✅ pass - callElimAssert_requires_0_4
test_func_input_type_constraints.py(17, 0): ✅ pass - callElimAssert_requires_1_5
test_func_input_type_constraints.py(17, 0): ✅ pass - callElimAssert_requires_2_6
DETAIL: 11 passed, 0 failed, 3 inconclusive
RESULT: Inconclusive
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
test_function_def_calls.py(6, 4): ❓ unknown - callElimAssert_requires_0_4
test_function_def_calls.py(6, 4): ✅ pass - callElimAssert_requires_1_5
test_function_def_calls.py(6, 4): ✅ pass - callElimAssert_requires_2_6
test_function_def_calls.py(9, 4): ✅ pass - callElimAssert_requires_10
test_function_def_calls.py(11, 0): ✅ pass - ite_cond_calls_Any_to_bool_0
DETAIL: 3 passed, 0 failed, 1 inconclusive
DETAIL: 4 passed, 0 failed, 1 inconclusive
RESULT: Inconclusive
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
test_if_elif.py(2, 4): ❓ unknown - ite_cond_calls_Any_to_bool_0
test_if_elif.py(2, 4): ✅ pass - ite_cond_calls_Any_to_bool_0
unknown location: ✅ pass - (classify ensures) Return type constraint
test_if_elif.py(4, 4): ✅ pass - ite_cond_calls_Any_to_bool_0
test_if_elif.py(6, 4): ❓ unknown - ite_cond_calls_Any_to_bool_0
unknown location: ✅ pass - (classify ensures) Return type constraint
test_if_elif.py(6, 4): ✅ pass - ite_cond_calls_Any_to_bool_0
unknown location: ✅ pass - (classify ensures) Return type constraint
unknown location: ✅ pass - (classify ensures) Return type constraint
test_if_elif.py(12, 4): ✅ pass - callElimAssert_requires_14
test_if_elif.py(13, 4): ✅ pass - assert_assert(225)_calls_Any_to_bool_0
test_if_elif.py(13, 4): ❓ unknown - assert(225)
test_if_elif.py(15, 4): ✅ pass - callElimAssert_requires_10
test_if_elif.py(16, 4): ✅ pass - assert_assert(302)_calls_Any_to_bool_0
test_if_elif.py(16, 4): ❓ unknown - assert(302)
test_if_elif.py(18, 4): ✅ pass - callElimAssert_requires_6
test_if_elif.py(19, 4): ✅ pass - assert_assert(371)_calls_Any_to_bool_0
test_if_elif.py(19, 4): ❓ unknown - assert(371)
test_if_elif.py(21, 4): ✅ pass - callElimAssert_requires_2
test_if_elif.py(22, 4): ✅ pass - assert_assert(444)_calls_Any_to_bool_0
test_if_elif.py(22, 4): ❓ unknown - assert(444)
test_if_elif.py(24, 0): ✅ pass - ite_cond_calls_Any_to_bool_0
DETAIL: 6 passed, 0 failed, 6 inconclusive
DETAIL: 16 passed, 0 failed, 4 inconclusive
RESULT: Inconclusive
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
unknown location: ✅ pass - assume_assume(0)_calls_PIn_0
unknown location: ✅ pass - assume_assume(0)_calls_Any_to_bool_1
test_loops.py(6, 4): ✅ pass - assert_assert(95)_calls_Any_to_bool_0
test_loops.py(6, 4): ✅ pass - assert(95)
test_loops.py(10, 4): ❓ unknown - set_a_calls_Any_get_0
Expand All @@ -14,5 +16,5 @@ test_loops.py(22, 4): ✅ pass - loop_guard_calls_Any_to_bool_0
test_loops.py(22, 4): ✅ pass - loop_guard_end_calls_Any_to_bool_0
test_loops.py(24, 4): ❓ unknown - assert_assert(531)_calls_Any_to_bool_0
test_loops.py(24, 4): ❓ unknown - assert(531)
DETAIL: 8 passed, 0 failed, 8 inconclusive
DETAIL: 10 passed, 0 failed, 8 inconclusive
RESULT: Inconclusive
Original file line number Diff line number Diff line change
@@ -1,14 +1,23 @@
test_multi_function.py(9, 4): ❓ unknown - ite_cond_calls_PNotIn_0
unknown location: ✅ pass - (create_config ensures) Return type constraint
test_multi_function.py(9, 4): ✅ pass - ite_cond_calls_PNotIn_0
test_multi_function.py(9, 4): ✅ pass - ite_cond_calls_Any_to_bool_1
test_multi_function.py(11, 4): ❓ unknown - ite_cond_calls_PNotIn_0
unknown location: ✅ pass - (validate_config ensures) Return type constraint
test_multi_function.py(11, 4): ✅ pass - ite_cond_calls_PNotIn_0
test_multi_function.py(11, 4): ✅ pass - ite_cond_calls_Any_to_bool_1
test_multi_function.py(18, 4): ❓ unknown - ite_cond_calls_Any_to_bool_0
unknown location: ✅ pass - (validate_config ensures) Return type constraint
unknown location: ✅ pass - (validate_config ensures) Return type constraint
test_multi_function.py(16, 4): ✅ pass - callElimAssert_requires_0_7
test_multi_function.py(16, 4): ✅ pass - callElimAssert_requires_1_8
test_multi_function.py(17, 4): ✅ pass - callElimAssert_requires_2
test_multi_function.py(18, 4): ✅ pass - ite_cond_calls_Any_to_bool_0
unknown location: ❓ unknown - set_LaurelResult_calls_Any_get_0
test_multi_function.py(23, 4): ✅ pass - callElimAssert_requires_0_21
test_multi_function.py(23, 4): ✅ pass - callElimAssert_requires_1_22
test_multi_function.py(24, 4): ✅ pass - assert_assert(651)_calls_Any_to_bool_0
test_multi_function.py(24, 4): ❓ unknown - assert(651)
test_multi_function.py(26, 4): ✅ pass - callElimAssert_requires_0_9
test_multi_function.py(26, 4): ✅ pass - callElimAssert_requires_1_10
test_multi_function.py(26, 4): ✅ pass - callElimAssert_requires_2_11
test_multi_function.py(26, 4): ✅ pass - callElimAssert_requires_0_14
test_multi_function.py(26, 4): ✅ pass - callElimAssert_requires_1_15
test_multi_function.py(26, 4): ✅ pass - callElimAssert_requires_2_16
test_multi_function.py(28, 0): ✅ pass - ite_cond_calls_Any_to_bool_0
DETAIL: 7 passed, 0 failed, 5 inconclusive
DETAIL: 19 passed, 0 failed, 2 inconclusive
RESULT: Inconclusive
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
unknown location: ✅ pass - (double ensures) Return type constraint
unknown location: ✅ pass - (add_one ensures) Return type constraint
test_nested_calls.py(8, 4): ✅ pass - callElimAssert_requires_22
test_nested_calls.py(9, 4): ✅ pass - callElimAssert_requires_18
test_nested_calls.py(10, 4): ✅ pass - assert_assert(153)_calls_Any_to_bool_0
test_nested_calls.py(10, 4): ❓ unknown - assert(153)
test_nested_calls.py(12, 4): ✅ pass - callElimAssert_requires_14
test_nested_calls.py(13, 4): ✅ pass - callElimAssert_requires_10
test_nested_calls.py(14, 4): ✅ pass - assert_assert(254)_calls_Any_to_bool_0
test_nested_calls.py(14, 4): ❓ unknown - assert(254)
test_nested_calls.py(16, 4): ✅ pass - callElimAssert_requires_6
test_nested_calls.py(17, 4): ✅ pass - callElimAssert_requires_2
test_nested_calls.py(18, 4): ✅ pass - assert_assert(356)_calls_Any_to_bool_0
test_nested_calls.py(18, 4): ❓ unknown - assert(356)
test_nested_calls.py(20, 0): ✅ pass - ite_cond_calls_Any_to_bool_0
DETAIL: 4 passed, 0 failed, 3 inconclusive
DETAIL: 12 passed, 0 failed, 3 inconclusive
RESULT: Inconclusive
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,6 @@ test_pin_any.py(3, 4): ❓ unknown - ite_cond_calls_Any_to_bool_0
test_pin_any.py(4, 8): ❓ unknown - assert_assert(124)_calls_PIn_0
test_pin_any.py(4, 8): ✔️ always true if reached - assert_assert(124)_calls_Any_to_bool_1
test_pin_any.py(4, 8): ❓ unknown - assert(124)
DETAIL: 1 passed, 0 failed, 3 inconclusive
unknown location: ✔️ always true if reached - (test_in_on_any ensures) Return type constraint
DETAIL: 2 passed, 0 failed, 3 inconclusive
RESULT: Inconclusive
Original file line number Diff line number Diff line change
@@ -1,11 +1,18 @@
unknown location: ✅ pass - (get_number ensures) Return type constraint
unknown location: ✅ pass - (get_greeting ensures) Return type constraint
unknown location: ✅ pass - (get_flag ensures) Return type constraint
unknown location: ✅ pass - (get_nothing ensures) Return type constraint
unknown location: ✅ pass - (add ensures) Return type constraint
test_return_types.py(20, 4): ✅ pass - assert_assert(304)_calls_Any_to_bool_0
test_return_types.py(20, 4): ❓ unknown - assert(304)
test_return_types.py(23, 4): ✅ pass - assert_assert(387)_calls_Any_to_bool_0
test_return_types.py(23, 4): ❓ unknown - assert(387)
test_return_types.py(26, 4): ✅ pass - assert_assert(474)_calls_Any_to_bool_0
test_return_types.py(26, 4): ❓ unknown - assert(474)
test_return_types.py(28, 4): ✅ pass - callElimAssert_requires_0_3
test_return_types.py(28, 4): ✅ pass - callElimAssert_requires_1_4
test_return_types.py(29, 4): ✅ pass - assert_assert(558)_calls_Any_to_bool_0
test_return_types.py(29, 4): ❓ unknown - assert(558)
test_return_types.py(31, 0): ✅ pass - ite_cond_calls_Any_to_bool_0
DETAIL: 5 passed, 0 failed, 4 inconclusive
DETAIL: 12 passed, 0 failed, 4 inconclusive
RESULT: Inconclusive
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,25 @@ test_while_loop.py(4, 4): ✅ pass - loop_guard_calls_Any_to_bool_0
test_while_loop.py(4, 4): ✅ pass - loop_guard_end_calls_Any_to_bool_0
test_while_loop.py(7, 4): ✅ pass - assert_assert(134)_calls_Any_to_bool_0
test_while_loop.py(7, 4): ❓ unknown - assert(134)
unknown location: ❓ unknown - (test_while_countdown ensures) Return type constraint
test_while_loop.py(12, 4): ✅ pass - loop_guard_calls_Any_to_bool_0
test_while_loop.py(14, 8): ✅ pass - ite_cond_calls_Any_to_bool_0
test_while_loop.py(16, 4): ✅ pass - assert_assert(344)_calls_Any_to_bool_0
test_while_loop.py(16, 4): ✅ pass - assert(344)
unknown location: ❓ unknown - (test_while_true_break ensures) Return type constraint
test_while_loop.py(12, 4): ✅ pass - loop_guard_end_calls_Any_to_bool_0
test_while_loop.py(16, 4): ✅ pass - assert_assert(344)_calls_Any_to_bool_0
test_while_loop.py(16, 4): ✅ pass - assert(344)
unknown location: ✅ pass - (test_while_true_break ensures) Return type constraint
test_while_loop.py(22, 4): ✅ pass - loop_guard_calls_Any_to_bool_0
test_while_loop.py(24, 8): ✅ pass - ite_cond_calls_Any_to_bool_0
test_while_loop.py(22, 4): ✅ pass - loop_guard_end_calls_Any_to_bool_0
test_while_loop.py(27, 4): ✅ pass - assert_assert(589)_calls_Any_to_bool_0
test_while_loop.py(27, 4): ❓ unknown - assert(589)
unknown location: ❓ unknown - (test_while_with_continue ensures) Return type constraint
test_while_loop.py(22, 4): ✅ pass - loop_guard_end_calls_Any_to_bool_0
test_while_loop.py(27, 4): ✅ pass - assert_assert(589)_calls_Any_to_bool_0
test_while_loop.py(27, 4): ❓ unknown - assert(589)
DETAIL: 16 passed, 0 failed, 3 inconclusive
unknown location: ❓ unknown - (test_while_with_continue ensures) Return type constraint
DETAIL: 17 passed, 0 failed, 7 inconclusive
RESULT: Inconclusive
Loading
Loading