fact: Fixpoint naryIf (n:nat) : naryRel n -> naryFunc n -> naryFunc n -> naryFunc n := match n return (naryRel n -> naryFunc n -> naryFunc n -> naryFunc n) with 0 => (fun b x y => if b then x else y) | S m => fun (p': naryRel (S m)) (g h: naryFunc (S m)) => fun x => naryIf m (p' x) (g x) (h x) end.
imports: hydras(primRec extEqualNat) Coq(ArithRing Lia Compare_dec)