From 882fdc9d98165e7aeb53b3ad46d1ee11bd193a46 Mon Sep 17 00:00:00 2001
From: Robbert Krebbers <mail@robbertkrebbers.nl>
Date: Tue, 16 Feb 2016 23:52:24 +0100
Subject: [PATCH] Remove FIXME in list_encode_suffix_eq.

---
 theories/countable.v | 23 +++++++----------------
 1 file changed, 7 insertions(+), 16 deletions(-)

diff --git a/theories/countable.v b/theories/countable.v
index 03a87815..9a5808b5 100644
--- a/theories/countable.v
+++ b/theories/countable.v
@@ -222,26 +222,17 @@ Proof. apply (list_encode_app' [_]). Qed.
 Lemma list_encode_suffix `{Countable A} (l k : list A) :
   l `suffix_of` k → ∃ q, encode k = q ++ encode l.
 Proof. intros [l' ->]; exists (encode l'); apply list_encode_app. Qed.
-Section not_serious.
-(* FIXME This can't be real... it doesn't figure out the "flip eq" instance?!? *)
-Local Instance: Assoc (flip (=)) (++).
-Proof. intros ?? p. by induction p; intros; f_equal'. Qed.
 Lemma list_encode_suffix_eq `{Countable A} q1 q2 (l1 l2 : list A) :
   length l1 = length l2 → q1 ++ encode l1 = q2 ++ encode l2 → l1 = l2.
 Proof.
-  revert q1 q2 l2; induction l1 as [|a1 l1 IH]; intros ???;
-    destruct l2 as [|a2 l2]; simpl; try discriminate; [done|].
-  intros EQ. injection EQ. clear EQ. intros EQ.
-  rewrite !list_encode_cons. intros Hl.
-  rewrite !assoc in Hl; eauto with typeclass_instances.
-  assert (l1 = l2) as EQl. { eapply IH; done. }
-  subst l2. apply (inj (++ (encode l1))) in Hl.
-  cut (a1 = a2); [congruence|]. apply (inj encode_nat).
-  revert Hl. clear.
-  generalize (encode_nat a2). 
-  induction (encode_nat a1); intros [|?] ?; f_equal'; naive_solver.
+  revert q1 q2 l2; induction l1 as [|a1 l1 IH];
+    intros q1 q2 [|a2 l2] ?; simplify_equality'; auto.
+  rewrite !list_encode_cons, !(assoc _); intros Hl.
+  assert (l1 = l2) as <- by eauto; clear IH; f_equal.
+  apply (inj encode_nat); apply (inj (++ encode l1)) in Hl; revert Hl; clear.
+  generalize (encode_nat a2).
+  induction (encode_nat a1); intros [|?] ?; naive_solver.
 Qed.
-End not_serious.
 
 (** ** Numbers *)
 Instance pos_countable : Countable positive :=
-- 
GitLab