Effect4

R11: Resources are released: at most once per registration, exactly once in close orderreq:R11

Requirement R11: Resource release and finalizationabout:req:R11

This page explains requirement R11 in Effect4. It covers what the requirement asks for resource release guarantees, why disciplined finalization matters, and how the property is checked.

What the requirement asksabout:req:R11:what-it-asks

Requirement R11 demands that allocated resources are released reliably across all exit paths (docs/core/system-map.md §8, DB-07):

  • At-most-once release: each registered cleanup executes at most once per registration, counted by identity.
  • Strict close order: finalizers execute in reverse registration order across closed scopes and structured regions.
  • State-first cleanup: a scope sets its closed bit before running any finalizer, preventing duplicate or re-entrant execution.
  • Frontier state retention: state produced before reaching a live frontier is kept intact for subsequent continuation.

A scope that finishes cleanly or encounters a failure must not leak registered resources.

Why it mattersabout:req:R11:why-it-matters

Concurrent applications acquire external resources including file handles, database transactions, network sockets, and timer registrations.

If finalizers ran out of order or executed multiple times, systems would suffer from use-after-free defects or corrupted state.

Cleanup in the reverse order of acquisition releases a resource before the resources it depends on.

How it is checkedabout:req:R11:how-it-is-checked

The requirement is checked by proving scope transition, close ordering, and finalizer execution theorems:

  • Idempotent closing and reverse-order execution are stated by close_twice and closeOrder_eq (src/Effect4/Machine/Scope.lean).
  • Re-entrant addition semantics on closed scopes is stated by close_reentrant_add in the same file.
  • Single close execution bounds are stated by runState_complete and runState_prefix (src/Effect4/Laws/Machine/ScopeMachine.lean).
  • Finalizer start bounding is stated by starts_le_pushes (src/Effect4/Laws/Program/FinalizerRun.lean).

The plan on this page gives each theorem's status and the goals it rests on.

once_placed_pushes_oncegoalcleans_oncemoduloQueueWorkers.releases_oncemoduloWorkers.releases_oncemodulocleanup_keepsgoallog_debitsgoalcleanup_stepmodulologs_stepgoallogs_historygoal
The open part of R11: its planned goals and the theorems proved modulo them. An arrow goes from a node to a node its proof reaches first.
The figure in words
R11 by concept: each concept its nodes are placed at, by tag or by module. An arrow goes where a node's proof reaches a node of another concept.
The figure in words
NodeStatusRests onNearest nodes
runState_completeproved——
runState_restoreproved—runState_complete
runState_prefixproved——
close_twiceproved—close_idempotent
close_reentrant_addproved——
closeOrder_eqproved——
saved_mask_restorationproved—at_append
replace_sumproved——
replace_sum_le_omittedproved—replace_sum
finalizerOr_debitproved—step_debit, getCont_le
getCont_leproved——
step_debitproved—getCont_le
getCont_specproved——
StackLedger.funded_reachableproved—replace_sum, driveState_lift
saved_mask_chain_runsproved—driveState_lift
saved_mask_pop_disciplineproved——
saved_mask_region_bracketproved——
close_refusesproved——
drain_waitsproved——
giveBack_frontproved——
giveBack_onceproved—giveBack_front
FinalizerRun.funded_reachableproved—evaluatePrim_producer, getCont_le, step_debit, finalizerOr_debit, replace_sum, driveState_lift
once_placed_pushes_oncegoalonce_placed_pushes_once—
starts_le_pushesproved—FinalizerRun.funded_reachable
LedgerFinalizer.funded_reachableproved—evaluatePrim_producer, getCont_le, step_debit, finalizerOr_debit, replace_sum, StackLedger.funded_reachable
evaluateNative_maskChainproved—evaluatePrim_producer
evaluateNative_underproved—evaluatePrim_under
evaluatePrim_producerproved——
evaluatePrim_underproved——
iteration_currentOpCountproved—evaluatePrim_producer
iteration_underproved—evaluateNative_under
AdministrativeKept.non_evaluatorproved—noAdd_empty, interrupt, noAdd_cons, terminal
AdministrativeQueue.non_evaluatorproved——
armEproved—cancel, exit_credits, stack_credits_bounded, interp_contE
failure_stack_eqproved——
getCont_causeproved—popFrom_cause, failure_stack_eq
popFrom_causeproved—failure_stack_le, stack_credits_bounded
resumeCauseproved—armE, failure_stack_eq, getCont_cause
CommandClosure.commandproved—deliver, loop, AdministrativeQueue.non_evaluator, AdministrativeKept.non_evaluator, update_credits, emit_credits, failure_fiber_le, replace_sum, link, noAdd_full, exit_credits, resume_command, noAdd_empty, mem_addresses_iff
joinedproved—evaluatePrim_producer, closeOrder_eq, at_append, mem_addresses_iff, CommandClosure.command
readproved——
after_add_code_creditsproved—fin_program_credits
async_route_creditsproved——
close_program_creditsproved—fin_program_credits
compile_creditsproved—source_op_credits, async_route_credits
emit_creditsproved——
fin_program_creditsproved——
load_creditsproved—compile_credits
load_fundedproved—load_credits
prog_of_creditsproved—fin_program_credits
registration_templateproved——
response_credits_boundedproved——
source_op_creditsproved——
stack_before_actionproved——
stack_before_iteratorproved——
stack_before_pushproved——
stack_before_suspendproved——
stack_credits_boundedproved—response_credits_bounded
update_creditsproved—replace_sum
add_memo_creditsproved——
bind_service_creditsproved——
build_scope_creditsproved——
combine_creditsproved——
constant_push_creditsproved—constant_stack_credits
constant_stack_creditsproved——
constant_startproved——
contA_creditsproved—bind_service_credits, service_lookup_credits, merge_context_credits, combine_credits, provide_then_credits, layer_resolve_credits, layer_construction_credits, registration_template, layer_inner_credits, add_memo_credits, build_scope_credits, update_body_credits, provide_body_credits, provide_layer_credits, fin_program_credits, store_contA_credits, exit_credits, resolve_credits
contE_creditsproved—store_contE_credits, exit_credits, resolve_credits
context_creditsproved——
exit_creditsproved——
failure_fiber_leproved—failure_stack_le
failure_stack_leproved——
forced_yield_iterationproved—constant_start
forced_yield_loop_fundedproved—emit_credits, update_credits, forced_yield_iteration, loop_of_iteration
layer_compile_creditsproved——
layer_construction_creditsproved——
layer_inner_creditsproved—layer_compile_credits, layer_resolve_credits
layer_resolve_creditsproved—layer_with_credits
layer_with_creditsproved—layer_compile_credits, layer_zero_credits
layer_zero_creditsproved—layer_compile_credits
loop_top_creditsproved—failure_stack_le
merge_context_creditsproved——
provide_body_creditsproved—exit_credits
provide_layer_creditsproved——
provide_then_creditsproved——
region_creditsproved—layer_resolve_credits, resolve_credits
resolve_creditsproved—compile_credits
service_lookup_creditsproved——
store_contA_creditsproved—prog_of_credits, store_exit_credits
store_contE_creditsproved—store_exit_credits
store_exit_creditsproved——
suspend_creditsproved—prog_of_credits, compile_credits, resolve_credits
update_body_creditsproved——
yield_wrapper_creditsproved—constant_stack_credits
Execution.historyproved—decision, at_append, mem_addresses_iff, RuntimeShape.load, Execution.load
Execution.loadproved—load_funded
outer_custodyproved—ready_update, ready_emit, failure_fiber_le
ready_emitproved—emit_credits
ready_updateproved—update_credits
armA_countsproved——
armE_countsproved——
finalizerEvents_no_pushproved——
frame_failure_leproved—failure_stack_le
getCont_no_pushproved—popFrom_no_push
interp_loopEnterproved—loopNext_credits
interp_suspendproved—suspend_credits
joinPushed_no_pushproved—passPushed_no_push, noPush_append
noPush_appendproved——
noPush_countsproved——
passEvents_no_pushproved——
passPushed_no_pushproved—passEvents_no_push
popFrom_no_pushproved—joinPushed_no_push, noPush_append, passEvents_no_push
push_onSuccessproved—stack_before_push
registrations_appendproved——
resumeCause_countsproved—armE_counts, registrations_append, starts_append, finalizerEvents_no_push, getCont_no_push, noPush_counts
resumeValue_countsproved—armA_counts, registrations_append, starts_append, finalizerEvents_no_push, getCont_no_push, noPush_counts
stack_fullproved——
starts_appendproved——
FrameDebit.stepproved—interp_loopEnter, stack_full, constant_stack_credits, push_onSuccess, stack_before_iterator, armA_counts, armA, frame_failure_le, withFiber_suspend_le, stack_before_action, stack_credits_bounded, stack_before_suspend, interp_suspend, sync_stack_le, resumeCause_counts, resumeCause, resumeValue_counts, resumeValue
sync_stack_leproved—response_credits_bounded
withFiber_suspend_leproved——
FrameSequencing.stepproved—constant_push_kept, noAdd_cons, noAdd_append, armA_noAdd, interrupt, resumeCause_kept, resumeValue_kept, opaque_noAdd
decisionproved—driveState_lift, interrupt, ready_update, ready_emit, failure_fiber_le, closeOrder_eq, at_append, mem_addresses_iff, evaluatePrim_producer, joined, AdministrativeKept.non_evaluator, update_credits, emit_credits, replace_sum, link, noAdd_full, exit_credits, resume_command, noAdd_empty, fold_lift
fold_liftproved—ready_emit, ready_update, joined, closeOrder_eq, at_append, mem_addresses_iff, evaluatePrim_producer, driveState_lift
deliverproved—noAdd_empty, interrupt, NativeMachineShape.native, replace_sum, failure_fiber_le, mem_addresses_iff, NativeScopeDebit.native, evaluatePrim_producer, native_returned
loopproved—noAdd_empty, interrupt, NativeMachineShape.iteration, replace_sum, failure_fiber_le, mem_addresses_iff, NativeIterationDebit.iteration, evaluatePrim_producer, iteration_returned
sync_opproved—after_add_exit_credit, add_open, replace_sum, after_add_unit_credit, syncOp, noAdd_full
NativeIterationDebit.iterationproved—yield_wrapper_credits, forced_wrapper, NativeScopeDebit.native, loop_top_credits, loop_top_source, loop_top
NativeMachineShape.iterationproved—noAdd_empty, interrupt
NativeMachineShape.nativeproved—noAdd_empty, interrupt
primitiveproved—noAdd_full, async_noAdd, stable_full, yield_stable, layer_resolve_credits, prog_of_credits, region_credits, resolve_credits, compile_credits, at_append, mem_addresses_iff, close, link, opaque_noAdd, resumeCause_counts, resumeValue_counts, FrameDebit.step, syncOp, sync_op, sync_stack_le, failure_stack_le, getCont_cause, getCont_no_push, noPush_counts, fin_program_credits, getCont_value, exit_pop_noAdd
NativeScopeDebit.nativeproved—fin_program_credits, close_scope, replace_sum, noAdd_full, exit_credits, failure_stack_le, getCont_cause, getCont_value, exit_pop_noAdd, getCont_no_push, noPush_counts, resolve_credits, opaque_noAdd, primitive
action_noAddproved—noAdd_mask, noAdd_asyncFinalizer
action_not_finishedproved——
action_returnedproved—action_not_finished, action_noAdd, returned_clean
countdown_noAddproved—action_noAdd
exit_pop_noAddproved—getCont_cause_kept, getCont_value_finalizer
finalizer_returnedproved—step_frame, returned_clean, exit_pop_noAdd
frame_stepproved—FrameSequencing.step
iteration_returnedproved—forced_wrapper, native_returned, loop_top_source, loop_top
loop_topproved—interrupt
loop_top_sourceproved——
native_returnedproved—scoped_exit_returned, primitive_returned, returned_clean, opaque_noAdd
primitive_returnedproved—async_noAdd, stable_value, yield_stable, action_returned, countdown_noAdd, noAdd_asyncFinalizer, returned_clean, value_response, finalizer_returned, opaque_noAdd, step_frame
returned_cleanproved——
scoped_exit_returnedproved—returned_clean, exit_pop_noAdd
step_frameproved—noAdd_empty, returned_clean, frame_step
armAproved—iterator_future, interp_iter, interp_loopResume, exit_credits, after_add_code_credits, stack_credits_bounded, interp_contA
getCont_valueproved—failure_stack_le, value_cap
resumeValueproved—armA, getCont_value
value_capproved—stack_credits_bounded, response_credits_bounded
answerOf_cleanproved——
armA_noAddproved——
armE_noAddproved—noAdd_empty
constant_push_keptproved—forced_unwrap, forced_push, noAdd_cons, opaque_noAdd
ensure_noAddproved——
forced_unwrapproved——
getCont_cause_keptproved—popFrom_cause_kept
getCont_noAddproved—noAdd_empty, popFrom_noAdd
getCont_value_finalizerproved—popFrom_value_finalizer
noAdd_appendproved——
noAdd_consproved——
noAdd_tailproved——
passPushed_noAddproved—answerOf_clean, ensure_noAdd, noAdd_tail
popFrom_cause_keptproved—noAdd_empty, popFrom_noAdd
popFrom_noAddproved—noAdd_append, answerOf_clean, passPushed_noAdd, ensure_noAdd, noAdd_tail
popFrom_value_finalizerproved—noAdd_empty, popFrom_noAdd
resumeCause_cleanproved—noAdd_append, armE_noAdd, getCont_noAdd
resumeCause_keptproved—noAdd_append, armE_noAdd, getCont_cause_kept
resumeValue_cleanproved—noAdd_append, armA_noAdd, getCont_noAdd
resumeValue_keptproved—interrupt, resumeValue_kept_clear
resumeValue_kept_clearproved—resumeValue_clean
cancelproved—store_cancel
closeSeq_creditsproved—fin_program_credits
interp_contAproved—contA_credits
interp_contEproved—contE_credits
interp_iterproved—closeSeq_credits, runStmts_credits
interp_loopResumeproved—loopResume_credits
iterator_futureproved——
loopFinish_creditsproved——
loopNext_creditsproved—loopFinish_credits, resolve_credits
loopResume_creditsproved—loopNext_credits
runStmts_creditsproved—yieldOf_credits
store_cancelproved——
yieldOf_creditsproved—compile_credits
terminalproved—mem_addresses_iff, stable_refGet, stable_cause, stable_value
RuntimeShape.loadproved—noAdd_empty
closeproved—close_program_credits, close_scope, replace_sum
linkproved—replace_sum, add_open
syncOpproved—replace_sum, after_add_exit_credit, add_open, after_add_unit_credit
acquired_registrationproved——
async_noAddproved—opaque_noAdd
async_producerproved—noAdd_asyncFinalizer, async_noAdd
forced_pushproved——
forced_wrapperproved——
interruptproved——
Sequencing.loadproved—noAdd_empty
noAdd_asyncFinalizerproved——
noAdd_emptyproved——
noAdd_fullproved——
noAdd_maskproved——
opaque_noAddproved——
raw_yield_excludedproved——
registration_stepproved—opaque_noAdd
resume_commandproved—emit_credits, resume_frame_debit, update_credits
resume_frame_debitproved—stable_full
saved_resumeproved——
stable_causeproved——
stable_fullproved—noAdd_full
stable_refGetproved——
stable_valueproved——
value_responseproved——
yield_producerproved—stable_value, yield_stable
yield_response_fullproved—noAdd_full
yield_stableproved——
add_openproved——
after_add_exitproved—after_add_exit_credit
after_add_exit_creditproved——
after_add_unitproved—after_add_unit_credit
after_add_unit_creditproved——
close_chain_transferproved—close_scope
close_scopeproved—closeOrder_eq
close_seq_commandproved—close_seq_start
close_seq_startproved——
foreign_suspensionproved——
release_loop_debitproved—release_start_debit, release_start, iteration_below_budget, loop_of_iteration
release_startproved——
release_start_countproved—release_start
release_start_debitproved—release_start_registered, release_start_count
release_start_registeredproved—release_start
scope_add_closedproved—after_add_exit_credit, native_sync_op
scope_add_openproved—add_open, after_add_unit_credit, native_sync_op
StackRegion.commandproved—evaluateNative_under, evaluatePrim_producer, iteration_under
compiled_region_bracket_of_prefixproved—compiled_region_bracket, stepped_live, drive
driveproved—StackRegion.command, evaluatePrim_producer, guarded_driveStep_liveTransports
settle_callbackproved—fits_subN, fits_mono, subN_never, subN_refl, order_refl, scopeParams_child, at_child, order_trans, fits_scope_inv, seq_typed, closeOrder_eq, mono, satisfies_empty, configTyped_frame, hom_eq_cata_ty
clause_closeScopeproved—fits_mono, order_trans, mono, subN_never, fits_subN, order_refl, scopeParams_child, at_child, fits_scope_inv, seq_typed, closeOrder_eq, satisfies_empty, configTyped_frame, hom_eq_cata_ty
clause_scopedproved—fits_mono, order_trans, mono, order_refl, satisfies_empty, denotesTyped, configTyped_frame, hom_eq_cata_ty
foreignFinalizer_ambientproved—subN_never, fits_subN, fits_mono, order_refl, scopeParams_child, at_child, order_trans
compiled_mask_chain_runsproved—evaluateNative_maskChain, evaluatePrim_producer, driveState_lift
compiled_region_bracketproved—stepped_live
guarded_driveStep_liveTransportsproved—evaluatePrim_producer
stepped_liveproved——
log_debitsgoallog_debitscheckInput_eq_none_iff
cleans_oncemodulolog_debitsScenario.history, build_retains, checkInput_eq_none_iff, replace_sum, mem_addresses_iff, at_append, closeOrder_eq, evaluatePrim_producer, replace_sum_le_omitted, driveState_lift, starts_le_pushes, log_debits
crew_acquire_once_placedproved—workers_placement, workers_built_program, checkInput_eq_none_iff
queueCrew_acquire_once_placedproved—queue_placement, queue_built_program, checkInput_eq_none_iff
queue_acquisition_sitesproved——
queue_placementproved——
workers_acquisition_sitesproved——
workers_placementproved——
cleanup_stepmodulologs_historyreleases, registrations, logs_history, reached_history, checkInput_eq_none_iff
logs_historygoallogs_historycheckInput_eq_none_iff
registrationsproved—queue_built_program, checkInput_eq_none_iff, replace_sum, mem_addresses_iff, at_append, closeOrder_eq, evaluatePrim_producer, replace_sum_le_omitted, driveState_lift
releasesproved—queue_built_program, checkInput_eq_none_iff, Execution.history, read
QueueWorkers.releases_oncemodulologs_historycleanup_step, checkInput_eq_none_iff, reached_history, ledger_opened, queueCrew_acquire_once_placed, queue_acquisition_sites, queue_built_program
cleanup_keepsgoalcleanup_keepscheckInput_eq_none_iff
logs_stepgoallogs_stepcheckInput_eq_none_iff
registrations_stepproved—workers_built_program, checkInput_eq_none_iff, replace_sum, mem_addresses_iff, at_append, closeOrder_eq, evaluatePrim_producer, replace_sum_le_omitted, driveState_lift
releases_stepproved—workers_built_program, checkInput_eq_none_iff, Execution.history, read
Workers.releases_oncemodulologs_steplogs_step, releases_step, registrations_step, checkInput_eq_none_iff, crew_acquire_once_placed, workers_acquisition_sites, workers_built_program, Scenario.history
close_idempotentproved——
at_appendproved——
driveState_liftproved——
mem_addresses_iffproved—yieldAt_addressYield, mem_foldList_iff, addresses_eq_foldList
loop_of_iterationproved——
iteration_below_budgetproved——
native_sync_opproved——
fits_subNproved—subN_trans, fits_normalize
fits_monoproved——
subN_neverproved——
subN_reflproved——
order_reflproved——
scopeParams_childproved——
at_childproved—at_append
order_transproved——
fits_scope_invproved——
seq_typedproved—subN_refl, fits_subN, guardBind_typed
monoproved—order_trans
satisfies_emptyproved——
configTyped_frameproved—satisfies_empty, fits_mono, order_trans, mono, order_refl, hom_eq_cata_ty
hom_eq_cata_typroved——
denotesTypedproved—provideLayerArm, at_child, subN_refl, fits_subN, fits_normalize, fiberTy_upper, scopeParams_child, hom_eq_cata_ty, subN_trans, matchB_sound, syncRow_typed, withParams_of_none, listOf_upper, normalize_idem, lift_sound, causeInputError_upper, matchArgsB_sound, errOf_payload, isPayload_of_hasTy_record, satisfies_weaken, subN_never, fits_mono, order_trans, invoke_arm, optionTy_upper, withParams_serviceTy, scopeParams_below, exitOf_upper, fits_scope_inv, param_arm, call_arm
checkInput_eq_none_iffproved——
Scenario.historyproved—reached_history
build_retainsproved—finishBuild_retains, checkInput_eq_none_iff
workers_built_programproved—workers_elaborates, build_retains, checkInput_eq_none_iff
queue_built_programproved—queue_elaborates, build_retains, checkInput_eq_none_iff
reached_historyproved——
ledger_openedproved—opened_exit
yieldAt_addressYieldproved——
mem_foldList_iffproved—exists_at_of_mem_foldList
addresses_eq_foldListproved——
subN_transproved——
fits_normalizeproved—subN_trans, normalize_idem
guardBind_typedproved——
provideLayerArmproved—fits_subN, subN_refl, fits_normalize, fiberTy_upper, scopeParams_child, at_child, hom_eq_cata_ty, subN_trans, matchB_sound, syncRow_typed, withParams_of_none, listOf_upper, normalize_idem, lift_sound, causeInputError_upper, matchArgsB_sound, errOf_payload, isPayload_of_hasTy_record, satisfies_weaken, subN_never, fits_mono, order_trans, fits_scope_inv
fiberTy_upperproved—fiber_eliminator, normalize_idem, subN_trans, subN_refl, extendAll_upper
matchB_soundproved—lookup_solve_seed
syncRow_typedproved—fits_normalize, subN_trans, fits_subN, termMaps_of_typed, matchB_sound, hom_eq_cata_ty, errOf_payload, isPayload_of_hasTy_record, normalize_idem, subN_refl
withParams_of_noneproved——
listOf_upperproved—list_eliminator, normalize_idem, subN_trans, subN_refl, extendAll_upper
normalize_idemproved——
lift_soundproved—lift_transfer
causeInputError_upperproved—cause_upper, cause_mono, normalize_idem, subN_trans, subN_refl, UnionRule.lift_upper, subN_causeOf_causeUpper, subN_exitOf_causeUpper, extendAll_eq_some_iff
matchArgsB_soundproved——
errOf_payloadproved——
isPayload_of_hasTy_recordproved—handles_of_payloadFieldTy
satisfies_weakenproved——
invoke_armproved—normalize_idem, fits_mono, fits_subN, order_trans, at_child, scopeParams_below, listOf_upper, fits_normalize, lift_sound, subN_trans, causeInputError_upper, matchArgsB_sound, hom_eq_cata_ty, scopeParams_body, withParams_defOf
optionTy_upperproved—option_eliminator, normalize_idem, subN_trans, subN_refl, Eliminator.lift_upper
withParams_serviceTyproved——
scopeParams_belowproved——
exitOf_upperproved—exit_eliminator, normalize_idem, subN_trans, subN_refl, extendAll_upper
param_armproved—normalize_idem, fits_mono, fits_subN, order_trans, listOf_upper, fits_normalize, lift_sound, subN_trans, causeInputError_upper, matchArgsB_sound, hom_eq_cata_ty, scopeParams_decl, withParams_param
call_armproved—fits_mono, fits_subN, normalize_idem, order_trans, listOf_upper, fits_normalize, lift_sound, subN_trans, causeInputError_upper, matchArgsB_sound, hom_eq_cata_ty, scopeParams_body, withParams_of_none
finishBuild_retainsproved—checkInput_eq_none_iff
workers_elaboratesproved—workers_refs_nil, workers_main_eq, elaborateModule_no_declarations
queue_elaboratesproved—queue_refs_nil, queue_main_eq, elaborateModule_no_declarations
opened_exitproved—exit_eq
exists_at_of_mem_foldListproved—sizeOf_child_lt, foldList_cases
fiber_eliminatorproved—subN_fiberOf_iff, normalize_idem, subN_trans, subN_refl
extendAll_upperproved—extendAll_adjoint
lookup_solve_seedproved——
termMaps_of_typedproved—listOf_upper, fits_subN, fits_normalize, normalize_idem, lift_sound, subN_trans, causeInputError_upper, matchArgsB_sound, hom_eq_cata_ty, fits_mono
list_eliminatorproved—subN_list_iff, normalize_idem, subN_trans, subN_refl
lift_transferproved—joinAll_keeps, mapM_answer
cause_upperproved—subN_causeOf_causeUpper, subN_exitOf_causeUpper
cause_monoproved—subN_exitOf_iff, subN_causeOf_causeUpper, subN_trans, subN_causeOf_iff
UnionRule.lift_upperproved—le_joinAll, subN_trans, mapM_answer
subN_causeOf_causeUpperproved——
subN_exitOf_causeUpperproved—subN_trans, subN_refl, subN_exitOf_iff
extendAll_eq_some_iffproved——
handles_of_payloadFieldTyproved——
scopeParams_bodyproved——
withParams_defOfproved——
option_eliminatorproved—subN_option_iff, normalize_idem, subN_trans, subN_refl
Eliminator.lift_upperproved—subN_refl, UnionRule.lift_upper
exit_eliminatorproved—subN_exitOf_iff, normalize_idem, subN_trans, subN_refl
scopeParams_declproved——
withParams_paramproved——
workers_refs_nilproved——
workers_main_eqproved—workers_main_some, elaboration_eq_getD
elaborateModule_no_declarationsproved——
queue_refs_nilproved——
queue_main_eqproved—queue_main_some, elaboration_eq_getD
exit_eqproved——
sizeOf_child_ltproved——
foldList_casesproved——
subN_fiberOf_iffproved——
extendAll_adjointproved—adjoint, extendAll_eq_some_iff
subN_list_iffproved——
joinAll_keepsproved—foldl_keeps
mapM_answerproved—mapM_cons_eq_some
subN_exitOf_iffproved——
subN_causeOf_iffproved——
le_joinAllproved—joinAll_keeps
subN_option_iffproved——
workers_main_someproved——
elaboration_eq_getDproved——
queue_main_someproved——
adjointproved—Eliminator.lift_least, subN_trans, mapM_total, Eliminator.lift_upper
foldl_keepsproved——
mapM_cons_eq_someproved——
Eliminator.lift_leastproved—UnionRule.lift_least
mapM_totalproved—mapM_cons_eq_some
UnionRule.lift_leastproved—subN_trans, mapM_source, joinAll_le
mapM_sourceproved—mapM_cons_eq_some
joinAll_leproved—joinAll_all
joinAll_allproved—foldl_all
foldl_allproved——