-- A refexive type, with multiple parameters to make sure -- we get the order right inductive N : Type where | cons : (Nat -> Bool → N) -> N -- set_option trace.Elab.definition.structural true mutual def f : N -> List Nat → List Bool → Nat | .cons a, _, _ => g (a 32 true) [true] [1] + 1 termination_by structural n => n def g : N -> List Bool → List Nat → Nat | .cons a, _, _ => f (a 42 false) [1] [true] + 1 termination_by structural n => n end