Effect4

R1: The signature is a parameter: one located refusal admits Σ_app, and every milestone statement takes itreq:R1

Requirement R1: The typing signature is a parameterabout:req:R1

This page explains requirement R1 in Effect4. It covers what the requirement asks about signature parameterization, why open signatures matter for extensible applications, and how the property is checked.

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

Requirement R1 demands that the language typing signature Σ remains an explicit parameter across all milestone statements and verification layers (docs/core/system-map.md §8).

The specification requires:

  • Program admission checks the application signature via AdmittedSig Σ and admitSig_ok_iff.
  • The typed machine state reads the source's signature dynamically.
  • Core typing theorems and milestone statements take the signature as an explicit hypothesis.

The runtime must not hard-code operations to a closed built-in set.

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

Real-world Effect applications define custom operations, host integrations, and application services.

If semantic theorems assumed a fixed operation signature, application-defined effects would lack formal verification.

A signature that is a parameter lets an application add operations, and every milestone statement then takes the application's signature.

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

The requirement is checked by proving that typing and evaluation hold for an admitted signature:

  • Algorithmic soundness and completeness against HasTy (check_sound, check_complete) quantify over any lawful typing signature in src/Effect4/Laws/Program/Typing/CheckSound.lean.
  • Signature admission equivalence is stated by admitSig_ok_iff (src/Effect4/Program/SigApp.lean).
  • Operational typing across application signatures is stated by meaning_typed_app and run_typed_app (src/Effect4/Laws/Program/SoundAnySignature.lean).

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

The open part of R1: 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
R1 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
check_soundproved——
check_completeproved——
admitSig_ok_iffproved——
meaning_typed_appproved—check_restrict, meaning_typed
run_typed_appproved—check_restrict, meaning_typed, run_eq_meaning
meaningB_typed_appproved—check_restrict, order_refl, fits_mono, hom_eq_cata_ty, deferredMake_extension, refMake_extension, syncRow_typed, listOf_upper, fits_subN, fits_normalize, normalize_idem, lift_sound, subN_trans, causeInputError_upper, matchArgsB_sound, check_sound, check_complete, subN_refl, optionTy_upper, errOf_payload, isPayload_of_hasTy_record, order_trans
reachable_typed_admittedmodulocountdown_parks_positionalreachable_typed, lawfulSig_of_admitted
checkModule_completeproved—checkModule_eq_check, check_complete
checkModule_soundproved—check_sound
invoke_hasTyproved——
check_restrictproved—cata_eff_congr_on, hom_eq_cata_eff
meaning_typedproved—order_refl, fits_mono, hom_eq_cata_ty, deferredMake_extension, refMake_extension, syncRow_typed, listOf_upper, fits_subN, fits_normalize, normalize_idem, lift_sound, subN_trans, causeInputError_upper, matchArgsB_sound, check_sound, check_complete, subN_refl, optionTy_upper, errOf_payload, isPayload_of_hasTy_record, order_trans
run_eq_meaningproved—at_append
order_reflproved——
fits_monoproved——
hom_eq_cata_typroved——
deferredMake_extensionproved——
refMake_extensionproved——
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
listOf_upperproved—list_eliminator, normalize_idem, subN_trans, subN_refl, extendAll_upper
fits_subNproved—subN_trans, fits_normalize
fits_normalizeproved—subN_trans, normalize_idem
normalize_idemproved——
lift_soundproved—lift_transfer
subN_transproved——
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——
subN_reflproved——
optionTy_upperproved—option_eliminator, normalize_idem, subN_trans, subN_refl, Eliminator.lift_upper
errOf_payloadproved——
isPayload_of_hasTy_recordproved—handles_of_payloadFieldTy
order_transproved——
reachable_typedmodulocountdown_parks_positionaldecision_preserves, load_typed, order_trans, order_refl
lawfulSig_of_admittedproved—admitSig_ok_iff
checkModule_eq_checkproved——
cata_eff_congr_onproved——
hom_eq_cata_effproved——
at_appendproved——
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
matchB_soundproved—lookup_solve_seed
list_eliminatorproved—subN_list_iff, normalize_idem, subN_trans, subN_refl
extendAll_upperproved—extendAll_adjoint
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——
option_eliminatorproved—subN_option_iff, normalize_idem, subN_trans, subN_refl
Eliminator.lift_upperproved—subN_refl, UnionRule.lift_upper
handles_of_payloadFieldTyproved——
decision_preservesmodulocountdown_parks_positionalfits_subN, satisfies_empty, order_refl, fits_mono, order_trans, mono, subN_trans, configTyped_frame, hom_eq_cata_ty, wake_preserves, close_typed, seq_typed, registrationDone_preserves, launch_preserves, subN_never, guardBind_typed, deliver_preserves, loop_preserves, driveState_lift
load_typedproved—denotesTyped, checkModule_eq_check, check_complete, checkModule_sound, satisfies_empty
lookup_solve_seedproved——
subN_list_iffproved——
extendAll_adjointproved—adjoint, extendAll_eq_some_iff
joinAll_keepsproved—foldl_keeps
mapM_answerproved—mapM_cons_eq_some
subN_exitOf_iffproved——
subN_causeOf_iffproved——
le_joinAllproved—joinAll_keeps
subN_option_iffproved——
satisfies_emptyproved——
monoproved—order_trans
configTyped_frameproved—satisfies_empty, fits_mono, order_trans, mono, order_refl, hom_eq_cata_ty
wake_preservesproved—order_refl, configTyped_frame, fits_mono, completionStrong_await, hom_eq_cata_ty
close_typedproved——
seq_typedproved—subN_refl, fits_subN, guardBind_typed
registrationDone_preservesproved—order_refl, fits_mono, order_trans, mono, satisfies_empty, close_typed, fits_subN
launch_preservesproved—subN_refl, fits_subN, satisfies_empty, order_refl, fits_mono, order_trans, mono, satisfies_weaken
subN_neverproved——
guardBind_typedproved——
deliver_preservesmodulocountdown_parks_positionalorder_refl, satisfies_empty, fits_mono, order_trans, mono, satisfies_weaken, settle_callback, hom_eq_cata_ty, completionStrong_await, memoBuild_extension, deferredMake_extension, refMake_extension, subN_never, fits_subN, scopeParams_child, at_child, denotesTyped, listOf_upper, fits_normalize, normalize_idem, lift_sound, subN_trans, causeInputError_upper, matchArgsB_sound, subN_refl, at_append, scopeParams_below, fiberTy_upper, matchB_sound, syncRow_typed, withParams_of_none, errOf_payload, isPayload_of_hasTy_record, foreignFinalizer_ambient, fits_scope_inv, seq_typed, closeSeqProtocol, configTyped_frame, close_typed, clause_scoped, clause_closeScope, scopeParams_ref, scopeParams_layer_below, satisfies_union, withParams_serviceTy, guardBind_typed, countdown_parks_positional
loop_preservesmodulocountdown_parks_positionalorder_refl, satisfies_empty, fits_mono, order_trans, mono, satisfies_weaken, settle_callback, hom_eq_cata_ty, completionStrong_await, memoBuild_extension, deferredMake_extension, refMake_extension, subN_never, fits_subN, scopeParams_child, at_child, denotesTyped, listOf_upper, fits_normalize, normalize_idem, lift_sound, subN_trans, causeInputError_upper, matchArgsB_sound, subN_refl, at_append, scopeParams_below, fiberTy_upper, matchB_sound, syncRow_typed, withParams_of_none, errOf_payload, isPayload_of_hasTy_record, foreignFinalizer_ambient, fits_scope_inv, seq_typed, closeSeqProtocol, configTyped_frame, close_typed, clause_scoped, clause_closeScope, scopeParams_ref, scopeParams_layer_below, satisfies_union, withParams_serviceTy, guardBind_typed, countdown_parks_positional
driveState_liftproved——
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
adjointproved—Eliminator.lift_least, subN_trans, mapM_total, Eliminator.lift_upper
foldl_keepsproved——
mapM_cons_eq_someproved——
completionStrong_awaitproved—subN_trans
satisfies_weakenproved——
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
memoBuild_extensionproved——
scopeParams_childproved——
at_childproved—at_append
scopeParams_belowproved——
fiberTy_upperproved—fiber_eliminator, normalize_idem, subN_trans, subN_refl, extendAll_upper
withParams_of_noneproved——
foreignFinalizer_ambientproved—subN_never, fits_subN, fits_mono, order_refl, scopeParams_child, at_child, order_trans
fits_scope_invproved——
closeSeqProtocolproved—order_trans, fits_mono
clause_scopedproved—fits_mono, order_trans, mono, order_refl, satisfies_empty, denotesTyped, 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
scopeParams_refproved——
scopeParams_layer_belowproved——
satisfies_unionproved——
withParams_serviceTyproved——
countdown_parks_positionalgoalcountdown_parks_positional—
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
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
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
Eliminator.lift_leastproved—UnionRule.lift_least
mapM_totalproved—mapM_cons_eq_some
closeOrder_eqproved——
fiber_eliminatorproved—subN_fiberOf_iff, normalize_idem, subN_trans, subN_refl
scopeParams_bodyproved——
withParams_defOfproved——
exit_eliminatorproved—subN_exitOf_iff, normalize_idem, subN_trans, subN_refl
scopeParams_declproved——
withParams_paramproved——
UnionRule.lift_leastproved—subN_trans, mapM_source, joinAll_le
subN_fiberOf_iffproved——
mapM_sourceproved—mapM_cons_eq_some
joinAll_leproved—joinAll_all
joinAll_allproved—foldl_all
foldl_allproved——