blob: 932949a371824e71d88611856516603d37db6065 (
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
|
Axiom pair : nat -> nat -> nat -> Prop.
Axiom pl : (nat -> Prop) -> (nat -> Prop) -> (nat -> Prop).
Axiom plImp : forall k P Q,
pl P Q k -> forall (P':nat -> Prop),
(forall k', P k' -> P' k') -> forall (Q':nat -> Prop),
(forall k', Q k' -> Q' k') ->
pl P' Q' k.
Definition nexists (P:nat -> nat -> Prop) : nat -> Prop :=
fun k' => exists k, P k k'.
Goal forall s k k' m,
(pl k' (nexists (fun w => (nexists (fun b => pl (pair w w)
(pl (pair s b)
(nexists (fun w0 => (nexists (fun a => pl (pair b w0)
(nexists (fun w1 => (nexists (fun c => pl
(pair a w1) (pl (pair a c) k))))))))))))))) m.
intros.
eapply plImp; [ | eauto | intros ].
2:econstructor.
2:econstructor.
2:eapply plImp; [ | eauto | intros ].
3:eapply plImp; [ | eauto | intros ].
4:econstructor.
4:econstructor.
4:eapply plImp; [ | eauto | intros ].
5:econstructor.
5:econstructor.
5:eauto.
4:eauto.
3:eauto.
2:eauto.
assert (X := 1).
clear X. (* very slow! *)
simpl. (* exception Not_found *)
Admitted.
|