Skip to content

Commit c203e13

Browse files
Adapting remaining tests from LLVMFunctionExitEvent
1 parent 6bc07b7 commit c203e13

File tree

2 files changed

+47
-13
lines changed

2 files changed

+47
-13
lines changed

pyk/src/tests/integration/kllvm/test_prooftrace.py

Lines changed: 43 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ def test_parse_proof_hint_reverse_no_ints(
263263
assert len(pt.pre_trace) == 14
264264

265265
# 9 post-initial-configuration events
266-
assert len(pt.trace) == 9
266+
assert len(pt.trace) == 12
267267

268268
# Contents of the k cell in the initial configuration
269269
kore_pattern = llvm_to_pattern(pt.initial_config.kore_pattern)
@@ -321,25 +321,43 @@ def test_parse_proof_hint_reverse_no_ints(
321321
assert axiom == axiom_expected
322322
assert len(rule_event.substitution) == 1
323323

324+
# Function exit event (no tail)
325+
function_exit_event = pt.trace[6].step_event
326+
assert isinstance(function_exit_event, prooftrace.LLVMFunctionExitEvent)
327+
assert function_exit_event.rule_ordinal == 158
328+
assert function_exit_event.is_tail == False
329+
324330
# Function event
325-
rule_event = pt.trace[6].step_event
331+
rule_event = pt.trace[7].step_event
326332
assert isinstance(rule_event, prooftrace.LLVMFunctionEvent)
327333
assert rule_event.name == "Lblreverse'LParUndsRParUnds'TREE-REVERSE-SYNTAX'Unds'Tree'Unds'Tree{}"
328334
assert rule_event.relative_position == '1'
329335
# Fun events should not have Kore args unless called with a special flag
330336
assert len(rule_event.args) == 0
331337

332338
# Simplification rule
333-
rule_event = pt.trace[7].step_event
339+
rule_event = pt.trace[8].step_event
334340
assert isinstance(rule_event, prooftrace.LLVMRuleEvent)
335341
axiom = repr(definition.get_axiom_by_ordinal(rule_event.rule_ordinal))
336342
axiom_expected = get_pattern_from_ordinal(definition_text, rule_event.rule_ordinal)
337343
assert axiom == axiom_expected
338344
assert len(rule_event.substitution) == 1
339345

346+
# Function exit event (no tail)
347+
function_exit_event = pt.trace[9].step_event
348+
assert isinstance(function_exit_event, prooftrace.LLVMFunctionExitEvent)
349+
assert function_exit_event.rule_ordinal == 157
350+
assert function_exit_event.is_tail == False
351+
352+
# Function exit event (no tail)
353+
function_exit_event = pt.trace[10].step_event
354+
assert isinstance(function_exit_event, prooftrace.LLVMFunctionExitEvent)
355+
assert function_exit_event.rule_ordinal == 160
356+
assert function_exit_event.is_tail == False
357+
340358
# Then pattern
341-
assert pt.trace[8].is_kore_pattern()
342-
kore_pattern = llvm_to_pattern(pt.trace[8].kore_pattern)
359+
assert pt.trace[11].is_kore_pattern()
360+
kore_pattern = llvm_to_pattern(pt.trace[11].kore_pattern)
343361
k_cell = kore_pattern.patterns[0].dict['args'][0]
344362
assert k_cell['name'] == 'kseq'
345363
assert (
@@ -388,7 +406,7 @@ def test_parse_proof_hint_non_rec_function(
388406
assert len(pt.pre_trace) == 14
389407

390408
# 6 post-initial-configuration events
391-
assert len(pt.trace) == 6
409+
assert len(pt.trace) == 8
392410

393411
# Contents of the k cell in the initial configuration
394412
kore_pattern = llvm_to_pattern(pt.initial_config.kore_pattern)
@@ -415,24 +433,36 @@ def test_parse_proof_hint_non_rec_function(
415433
inner_rule_event = pt.trace[2].step_event
416434
assert isinstance(inner_rule_event, prooftrace.LLVMRuleEvent)
417435

436+
# Function exit event (no tail)
437+
function_exit_event = pt.trace[3].step_event
438+
assert isinstance(function_exit_event, prooftrace.LLVMFunctionExitEvent)
439+
assert function_exit_event.rule_ordinal == 103
440+
assert function_exit_event.is_tail == False
441+
418442
# Functional event
419-
fun_event = pt.trace[3].step_event
443+
fun_event = pt.trace[4].step_event
420444
assert isinstance(fun_event, prooftrace.LLVMFunctionEvent)
421445
assert fun_event.name == "Lblid'LParUndsRParUnds'NON-REC-FUNCTION-SYNTAX'Unds'Foo'Unds'Foo{}"
422446
assert fun_event.relative_position == '0:0:0'
423447
assert len(fun_event.args) == 0
424448

425449
# Then rule
426-
rule_event = pt.trace[4].step_event
450+
rule_event = pt.trace[5].step_event
427451
assert isinstance(rule_event, prooftrace.LLVMRuleEvent)
428452
axiom = repr(definition.get_axiom_by_ordinal(rule_event.rule_ordinal))
429453
axiom_expected = get_pattern_from_ordinal(definition_text, rule_event.rule_ordinal)
430454
assert axiom == axiom_expected
431455
assert len(rule_event.substitution) == 1
432456

457+
# Function exit event (no tail)
458+
function_exit_event = pt.trace[6].step_event
459+
assert isinstance(function_exit_event, prooftrace.LLVMFunctionExitEvent)
460+
assert function_exit_event.rule_ordinal == 103
461+
assert function_exit_event.is_tail == False
462+
433463
# Then pattern
434-
assert pt.trace[5].is_kore_pattern()
435-
kore_pattern = llvm_to_pattern(pt.trace[5].kore_pattern)
464+
assert pt.trace[7].is_kore_pattern()
465+
kore_pattern = llvm_to_pattern(pt.trace[7].kore_pattern)
436466
k_cell = kore_pattern.patterns[0].dict['args'][0]
437467
assert k_cell['name'] == 'kseq'
438468
assert (
@@ -809,11 +839,11 @@ def test_parse_proof_hint_peano(self, hints: bytes, header: prooftrace.KoreHeade
809839
assert len(pt.pre_trace) == 14
810840

811841
# 776 post-initial-configuration events
812-
assert len(pt.trace) == 776
842+
assert len(pt.trace) == 916
813843

814844
# Assert that we have a pattern matching failure as the 135th event
815-
assert pt.trace[135].is_step_event() and isinstance(
816-
pt.trace[135].step_event, prooftrace.LLVMPatternMatchingFailureEvent
845+
assert pt.trace[160].is_step_event() and isinstance(
846+
pt.trace[160].step_event, prooftrace.LLVMPatternMatchingFailureEvent
817847
)
818848

819849

pyk/src/tests/integration/test_krun_proof_hints.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,12 @@ class Test0Decrement(KRunTest, ProofTraceTest):
4848
function: Lblproject'Coln'KItem{} (0:0)
4949
rule: 139 1
5050
VarK = kore[Lbl0'Unds'DECREMENT-SYNTAX'Unds'Nat{}()]
51+
function exit: 139 notail
52+
function exit: 100 notail
5153
function: LblinitGeneratedCounterCell{} (1)
5254
rule: 98 0
55+
function exit: 98 notail
56+
function exit: 99 notail
5357
config: kore[Lbl'-LT-'generatedTop'-GT-'{}(Lbl'-LT-'k'-GT-'{}(kseq{}(Lbl0'Unds'DECREMENT-SYNTAX'Unds'Nat{}(),dotk{}())),Lbl'-LT-'generatedCounter'-GT-'{}(\\dv{SortInt{}}("0")))]
5458
config: kore[Lbl'-LT-'generatedTop'-GT-'{}(Lbl'-LT-'k'-GT-'{}(kseq{}(Lbl0'Unds'DECREMENT-SYNTAX'Unds'Nat{}(),dotk{}())),Lbl'-LT-'generatedCounter'-GT-'{}(\\dv{SortInt{}}("0")))]
5559
"""

0 commit comments

Comments
 (0)