]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/contribs/assembly/freescale/freescale_ocaml/matita_nat_minimization.ml
branch for universe
[helm.git] / matita / contribs / assembly / freescale / freescale_ocaml / matita_nat_minimization.ml
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 (file)
index 0000000..ac33284
--- /dev/null
@@ -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)))
+;;
+