I have written a custom size function size2 for my datatype. Using this function I can manually prove the termination of my function:
terminatio
A function f can be registered as a measure function for the termination prover by declaring the lemma is_measure f with the attribute measure_function. In your case, this looks as follows.
lemma is_measure_size2 [measure_function]: "is_measure size2" ..
Then, lexicographic_order, which fun uses, and size_change try size2, too.