X-Git-Url: http://matita.cs.unibo.it/gitweb/?p=helm.git;a=blobdiff_plain;f=matita%2Fcontribs%2Fassembly%2Ffreescale%2Ffreescale_ocaml%2Fmatita_nat_minimization.ml;fp=matita%2Fcontribs%2Fassembly%2Ffreescale%2Ffreescale_ocaml%2Fmatita_nat_minimization.ml;h=ac33284b88e4f72a8b67dddfaf93626d212c8eae;hp=0000000000000000000000000000000000000000;hb=f61af501fb4608cc4fb062a0864c774e677f0d76;hpb=58ae1809c352e71e7b5530dc41e2bfc834e1aef1 diff --git a/matita/contribs/assembly/freescale/freescale_ocaml/matita_nat_minimization.ml b/matita/contribs/assembly/freescale/freescale_ocaml/matita_nat_minimization.ml new file mode 100644 index 000000000..ac33284b8 --- /dev/null +++ b/matita/contribs/assembly/freescale/freescale_ocaml/matita_nat_minimization.ml @@ -0,0 +1,30 @@ +let max = +let rec max = +(function i -> (function f -> +(match (f i) with + Matita_datatypes_bool.True -> i + | Matita_datatypes_bool.False -> +(match i with + Matita_nat_nat.O -> Matita_nat_nat.O + | Matita_nat_nat.S(j) -> (max j f)) +) +)) in max +;; + +let min_aux = +let rec min_aux = +(function off -> (function n -> (function f -> +(match (f n) with + Matita_datatypes_bool.True -> n + | Matita_datatypes_bool.False -> +(match off with + Matita_nat_nat.O -> n + | Matita_nat_nat.S(p) -> (min_aux p (Matita_nat_nat.S(n)) f)) +) +))) in min_aux +;; + +let min = +(function n -> (function f -> (min_aux n Matita_nat_nat.O f))) +;; +