4

I have written a custom size function size2 for my datatype. Using this function I can manually prove the termination of my function:

termination 
apply (relation "measure (λ(a,b,c). size2 c)")
apply auto
done

Is there a way to make fun use my alternative size function for the automatic termination proof?

Codor
  • 17,447
  • 9
  • 29
  • 56
Peter Zeller
  • 2,245
  • 19
  • 23

1 Answers1

4

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.

Andreas Lochbihler
  • 4,998
  • 12
  • 10