File: bug_13581.v

package info (click to toggle)
coq 8.20.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 44,116 kB
  • sloc: ml: 234,160; sh: 4,301; python: 3,270; ansic: 2,644; makefile: 882; lisp: 172; javascript: 63; xml: 24; sed: 2
file content (60 lines) | stat: -rw-r--r-- 1,362 bytes parent folder | download | duplicates (4)
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
From Coq Require Extraction.

Record mixin_of T0 (b : unit) (T := T0) := Mixin { _ : T0 -> let U:=T0 in U }.
Definition d := Mixin nat tt (fun x => x).

Extraction TestCompile d.

(* Extra tests *)

Record R T0 (b:nat) (c:=b) (T:=T0) (e:nat) (d:c=e) := Build
  { g : T0 -> let U:=T0 in U ; h : d = d ; x : nat ; y := x+x }.

Definition r := {| g := (fun x : nat => x) ; h := eq_refl (eq_refl 0) ; x := 0 |}.

Extraction TestCompile r.
(*
(** val r0 : nat r **)

let r0 =
  { g = (fun x0 -> x0); x = O }
*)

Inductive I T (a:T) (U:=T) (b:T) (c:=(a,b)) : forall d (e:=S d) (h : S d = e), Type :=
| C : I T a b 0 eq_refl
| D : J T a b true eq_refl -> I T a b 1 eq_refl
with J T (a:T) (U:=T) (b:T) (c:=(a,b)) : forall (d:bool) (h:d = true), Type :=
| E : I T a b 0 eq_refl -> J T a b true eq_refl.

Definition c := D _ _ _ (E _ _ _ (C nat 0 0)).

Extraction TestCompile c.

(*
(** val c : nat i **)

let c =
  D (E C)
*)

CoInductive V T0 (b:nat) (c:=b) (T:=T0) (e:nat) (d:c=e) :=
  { k : T; b := c+e ; m : nat; z : option (W nat 0 0 eq_refl) }
with W T0 (b:nat) (c:=b) (T:=T0) (e:nat) (d:c=e) :=
  { l : V nat 0 0 eq_refl }.

CoFixpoint v :=
  {| k := 0 ; m := 0 ; z := Some w ; |}
with w := {| l := v |}.

Extraction TestCompile v.
(*
(** val v0 : nat v **)

let rec v0 =
  lazy (Build_V (O, O, (Some w0)))

(** val w0 : nat w **)

and w0 =
  lazy (Build_W v0)
*)