File: bug_19557_1.v

package info (click to toggle)
coq 9.1.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 35,964 kB
  • sloc: ml: 239,908; sh: 4,355; python: 2,985; ansic: 2,644; makefile: 874; lisp: 171; javascript: 63; xml: 24; sed: 2
file content (40 lines) | stat: -rw-r--r-- 862 bytes parent folder | download
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
Require Import ListDef Morphisms Setoid.

Global Generalizable All Variables.

Class Equiv A := equiv: relation A.

Section ops.
  Context (M : Type -> Type).

  Class MonadReturn := ret: forall {A}, A -> M A.

End ops.

Arguments ret {M MonadReturn A} _.


Class Monad (M : Type -> Type) `{forall A, Equiv A -> Equiv (M A)}
  `{MonadReturn M} : Prop :=
  {
    mon_ret_proper `{Equiv A} :: Proper (equiv ==> equiv) (@ret _ _ A)
  }.


Section S.
  Context `{Equivalence A eqA}.

  Inductive PermutationA : list A -> list A -> Prop := .

  Global Instance: Equivalence PermutationA.
  Admitted.

  Global Instance PermutationA_cons :
    Proper (eqA ==> PermutationA ==> PermutationA) (@cons A).
  Admitted.

  Lemma foo a l x (IHl : PermutationA (x::l) (l ++ (x :: nil))) : PermutationA (x::a::l) (a::l++(x :: nil)).
  Proof.
    rewrite <-IHl.
  Abort.
End S.