RequireImport TestSuite.admit. (* File reduced by coq-bug-finder from original input, then from 270 lines to
198 lines, then from 178 lines to 82 lines, then from 88 lines to 59 lines *) (* coqc version trunk (August 2014) compiled on Aug 19 2014 14:40:15 with OCaml 4.01.0 coqtop version cagnode17:/afs/csail.mit.edu/u/j/jgross/coq-trunk,trunk
(56ece74efc25af1b0e09265f3c7fcf74323abcaf) *) RequireImport TestSuite.list. SetImplicitArguments. Definition mem := nat -> option nat. Definition pred := mem -> Prop. DelimitScope pred_scope with pred. Definition exis A (p : A -> pred) : pred := fun m => exists x, p x m. Notation"'exists' x .. y , p" := (exis (fun x => .. (exis (fun y => p)) ..)) :
pred_scope. Definition emp : pred := fun m => forall a, m a = None. Definition lift_empty (P : Prop) : pred := fun m => P /\ forall a, m a = None. Notation"[[ P ]]" := (lift_empty P) : pred_scope. Definition pimpl (p q : pred) := forall m, p m -> q m. Notation"p ==> q" := (pimpl p%pred q%pred) (right associativity, at level 90). Definition piff (p q : pred) : Prop := (p ==> q) /\ (q ==> p). Notation"p <==> q" := (piff p%pred q%pred) (at level 90). Parameter sep_star : pred -> pred -> pred. Infix"*" := sep_star : pred_scope. Definition memis (m : mem) : pred := eq m. Definition mptsto (m : mem) (a : nat) (v : nat) := m a = Some v. Notation"m @ a |-> v" := (mptsto m a v) (a at level 34, at level 35). Lemma piff_trans: forall a b c, (a <==> b) -> (b <==> c) -> (a <==> c). Admitted. Lemma piff_refl: forall a, (a <==> a). Admitted. Definition stars (ps : list pred) := fold_left sep_star ps emp. Lemma flatten_exists: forall T PT p ps P,
(forall (a:T), (p a <==> exists (x:PT), stars (ps a x) * [[P a x]]))
-> (exists (a:T), p a) <==>
(exists (x:(T*PT)), stars (ps (fst x) (snd x)) * [[P (fst x) (snd x)]]). Admitted. Goalforall b, (exists e1 e2 e3,
(exists (m : mem) (v : nat) (F : pred), b)
<==> (exists x : e1, stars (e2 x) * [[e3 x]])). intros. Set Printing Universes.
Show Universes.
do 3 eapply ex_intro.
eapply piff_trans; [ apply flatten_exists | apply piff_refl ]; intros.
eapply piff_trans; [ apply flatten_exists | apply piff_refl ]; intros.
eapply piff_trans; [ apply flatten_exists | apply piff_refl ]; intros. assert (H : False) by (clear; admit); destruct H.
Unshelve.
admit.
admit.
admit.
Show Universes. TimeQed.
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.