pub enum RecursionPlan {
IntCountdown {
param_index: usize,
},
IntAscending {
param_index: usize,
bound_lean: String,
},
LinearRecurrence2,
ListStructural {
param_index: usize,
},
SizeOfStructural,
StringPosAdvance,
MutualIntCountdown,
MutualStringPosAdvance {
rank: usize,
},
MutualSizeOfRanked {
rank: usize,
},
}Expand description
Proof-mode recursion support class for emitted Lean definitions.
Variants§
IntCountdown
Single-function recursion where an Int parameter decreases by 1.
IntAscending
Single-function recursion where an Int parameter increases by 1 up to a bound.
bound_lean is the Lean expression of the upper bound (e.g. 8 or xs.length).
LinearRecurrence2
Single-function recurrence with n < 0 guard, 0/1 bases, and a linear
second-order recurrence over previous results, emitted through a private
Nat helper.
ListStructural
Single-function structural recursion on a List<_> parameter.
SizeOfStructural
Single-function structural recursion on a recursive user-defined type parameter.
StringPosAdvance
Single-function recursion where first String stays the same and second Int
parameter strictly advances (pos + k, k >= 1).
MutualIntCountdown
Mutual recursion group where first Int parameter decreases by 1 across SCC calls.
MutualStringPosAdvance
Mutual recursion group where first String is preserved and second Int
either stays the same across rank-decreasing edges, or strictly advances.
MutualSizeOfRanked
Generic mutual recursion plan using sizeOf on structural parameters,
plus rank for same-measure edges.
Trait Implementations§
Source§impl Clone for RecursionPlan
impl Clone for RecursionPlan
Source§fn clone(&self) -> RecursionPlan
fn clone(&self) -> RecursionPlan
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RecursionPlan
impl Debug for RecursionPlan
Source§impl PartialEq for RecursionPlan
impl PartialEq for RecursionPlan
impl Eq for RecursionPlan
impl StructuralPartialEq for RecursionPlan
Auto Trait Implementations§
impl Freeze for RecursionPlan
impl RefUnwindSafe for RecursionPlan
impl Send for RecursionPlan
impl Sync for RecursionPlan
impl Unpin for RecursionPlan
impl UnsafeUnpin for RecursionPlan
impl UnwindSafe for RecursionPlan
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.