blob: 8a1544c8ea63a1518a9bed7b774a27c3595895e6 (
plain)
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
|
Set Primitive Projections.
Module M.
CoInductive foo := Foo {
foo0 : foo;
foo1 : bar;
}
with bar := Bar {
bar0 : foo;
bar1 : bar;
}.
CoFixpoint f : foo := Foo f g
with g : bar := Bar f g.
Check (@eq_refl _ g.(bar0) <: f.(foo0).(foo0) = g.(bar0)).
Check (@eq_refl _ g <: g.(bar1).(bar0).(foo1) = g).
End M.
Module N.
Inductive foo := Foo {
foo0 : option foo;
foo1 : list bar;
}
with bar := Bar {
bar0 : option bar;
bar1 : list foo;
}.
Definition f_0 := Foo None nil.
Definition g_0 := Bar None nil.
Definition f := Foo (Some f_0) (cons g_0 nil).
Check (@eq_refl _ f.(foo1) <: f.(foo1) = cons g_0 nil).
End N.
|