-
Notifications
You must be signed in to change notification settings - Fork 2
/
need.v
68 lines (56 loc) · 3.28 KB
/
need.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
(* This program is free software; you can redistribute it and/or *)
(* modify it under the terms of the GNU Lesser General Public License *)
(* as published by the Free Software Foundation; either version 2.1 *)
(* of the License, or (at your option) any later version. *)
(* *)
(* This program is distributed in the hope that it will be useful, *)
(* but WITHOUT ANY WARRANTY; without even the implied warranty of *)
(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *)
(* GNU General Public License for more details. *)
(* *)
(* You should have received a copy of the GNU Lesser General Public *)
(* License along with this program; if not, write to the Free *)
(* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *)
(* 02110-1301 USA *)
(* Contribution to the Coq Library V6.3 (July 1999) *)
(****************************************************************************)
(* The Calculus of Inductive Constructions *)
(* *)
(* Projet Coq *)
(* *)
(* INRIA ENS-CNRS *)
(* Rocquencourt Lyon *)
(* *)
(* Coq V5.10 *)
(* Nov 25th 1994 *)
(* *)
(****************************************************************************)
(* need.v *)
(****************************************************************************)
(* Formal Language Theory *)
(* *)
(* Judicael Courant - Jean-Christophe Filliatre *)
(* *)
(* Developped in V5.8 June-July 1993 *)
(* Ported to V5.10 October 1994 *)
(****************************************************************************)
Require Import Ensf.
Require Import Words.
Require Import more_words.
Axiom Dans_spec : forall (a : Elt) (E : Ensf), {dans a E} + {~ dans a E}.
Definition Dans (a : Elt) (E : Ensf) :=
match Dans_spec a E return bool with
| left a => true
| right a => false
end.
Axiom
Append_Append :
forall a a' b b' : Word,
Append a b = Append a' b' ->
exists w : Word,
a = Append a' w /\ b' = Append w b \/
a' = Append a w /\ b = Append w b'.
Axiom
inmonoid_Append_inv2 :
forall (X : Ensf) (a b : Word), inmonoid X (Append a b) -> inmonoid X b.
Hint Resolve dans_add.