summaryrefslogtreecommitdiff
path: root/contrib7/field/Field_Compl.v
diff options
context:
space:
mode:
Diffstat (limited to 'contrib7/field/Field_Compl.v')
-rw-r--r--contrib7/field/Field_Compl.v62
1 files changed, 62 insertions, 0 deletions
diff --git a/contrib7/field/Field_Compl.v b/contrib7/field/Field_Compl.v
new file mode 100644
index 00000000..2cc01038
--- /dev/null
+++ b/contrib7/field/Field_Compl.v
@@ -0,0 +1,62 @@
+(************************************************************************)
+(* v * The Coq Proof Assistant / The Coq Development Team *)
+(* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *)
+(* \VV/ **************************************************************)
+(* // * This file is distributed under the terms of the *)
+(* * GNU Lesser General Public License Version 2.1 *)
+(************************************************************************)
+
+(* $Id: Field_Compl.v,v 1.2.2.1 2004/07/16 19:30:17 herbelin Exp $ *)
+
+Inductive listT [A:Type] : Type :=
+ nilT : (listT A) | consT : A->(listT A)->(listT A).
+
+Fixpoint appT [A:Type][l:(listT A)] : (listT A) -> (listT A) :=
+ [m:(listT A)]
+ Cases l of
+ | nilT => m
+ | (consT a l1) => (consT A a (appT A l1 m))
+ end.
+
+Inductive prodT [A,B:Type] : Type :=
+ pairT: A->B->(prodT A B).
+
+Definition assoc_2nd :=
+Fix assoc_2nd_rec
+ {assoc_2nd_rec
+ [A:Type;B:Set;eq_dec:(e1,e2:B){e1=e2}+{~e1=e2};lst:(listT (prodT A B))]
+ : B->A->A:=
+ [key:B;default:A]
+ Cases lst of
+ | nilT => default
+ | (consT (pairT v e) l) =>
+ (Cases (eq_dec e key) of
+ | (left _) => v
+ | (right _) => (assoc_2nd_rec A B eq_dec l key default)
+ end)
+ end}.
+
+Definition fstT [A,B:Type;c:(prodT A B)] :=
+ Cases c of
+ | (pairT a _) => a
+ end.
+
+Definition sndT [A,B:Type;c:(prodT A B)] :=
+ Cases c of
+ | (pairT _ a) => a
+ end.
+
+Definition mem :=
+Fix mem {mem [A:Set;eq_dec:(e1,e2:A){e1=e2}+{~e1=e2};a:A;l:(listT A)] : bool :=
+ Cases l of
+ | nilT => false
+ | (consT a1 l1) =>
+ Cases (eq_dec a a1) of
+ | (left _) => true
+ | (right _) => (mem A eq_dec a l1)
+ end
+ end}.
+
+Inductive field_rel_option [A:Type] : Type :=
+ | Field_None : (field_rel_option A)
+ | Field_Some : (A -> A -> A) -> (field_rel_option A).