{A} (op : A -> A -> A) := fix p_iter (p : Pos) (a : A) : A := match p with | 1 => a | p~0 => p_iter p (op a a) | p~1 => op a (p_iter p (op a a)) end.
Require Import Basics.Overture Basics.Tactics Basics.Decidable