A fixpoint combinator that allows for deferred proofs of termination.
extrinsicFix R F is function implemented as the loop
extrinsicFix R F a = F a (fun a _ => extrinsicFix R F a).
If the loop can be shown to be well-founded, extrinsicFix_eq_apply proves that it satisfies the
fixpoint equation. Otherwise, extrinsicFix R F is opaque, i.e., it is impossible to prove
nontrivial properties about it.
Equations
- WellFounded.extrinsicFix R F a = if h : WellFounded R then h.fix F a else WellFounded.opaqueFix✝ R F a
Instances For
A fixpoint combinator that allows for deferred proofs of termination.
extrinsicFix₂ R F is function implemented as the loop
extrinsicFix₂ R F a b = F a b (fun a' b' _ => extrinsicFix₂ R F a' b').
If the loop can be shown to be well-founded, extrinsicFix₂_eq_apply proves that it satisfies the
fixpoint equation. Otherwise, extrinsicFix₂ R F is opaque, i.e., it is impossible to prove
nontrivial properties about it.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The function implemented as the loop
opaqueFix₃ R F a b c = F a b c (fun a' b' c' _ => opaqueFix₃ R F a' b' c').
opaqueFix₃ R F is the fixpoint of the functional F, as long as the loop is
well-founded.
The loop might run forever depending on F. It is opaque, i.e., it is impossible to prove
nontrivial properties about it.
A fixpoint combinator that allows for deferred proofs of termination.
extrinsicFix₃ R F is function implemented as the loop
extrinsicFix₃ R F a b c = F a b c (fun a b c _ => extrinsicFix₃ R F a b c).
If the loop can be shown to be well-founded, extrinsicFix₃_eq_apply proves that it satisfies the
fixpoint equation. Otherwise, extrinsicFix₃ R F is opaque, i.e., it is impossible to prove
nontrivial properties about it.
Equations
- One or more equations did not get rendered due to their size.