From 8104ab7dd2da25cfba027407fe5248daeb270954 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Cl=C3=A9ment?= <francois.clement@inria.fr> Date: Fri, 2 Feb 2024 11:00:26 +0100 Subject: [PATCH] WIP: perm_EX. --- FEM/Algebra/ord_compl.v | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/FEM/Algebra/ord_compl.v b/FEM/Algebra/ord_compl.v index 76957c43..ad89ce59 100644 --- a/FEM/Algebra/ord_compl.v +++ b/FEM/Algebra/ord_compl.v @@ -693,8 +693,12 @@ End Ord_compl2. Section Ord_compl3. Context {T : eqType}. +Context {leT : rel T}. + +Hypothesis HT0 : antisymmetric leT. +Hypothesis HT1 : transitive leT. +Hypothesis HT2 : total leT. -Variable leT : rel T. Variable x0 : T. Lemma perm_EX : @@ -702,12 +706,33 @@ Lemma perm_EX : { p : 'I_[size l2] | injective p & l1 = map (fun i => nth x0 l2 (p i)) (ord_enum (size l2)) }. Proof. -intros l1 l2 Hl. - +intros l1 l2 Hla. +assert (Hlb : size l1 = size l2) by now apply perm_size. +pose (n := size l2); assert (Hn : size l2 = n) by easy. +fold n in Hlb; fold n; destruct n as [|n]. +(* *) +exists (fun_from_I_0 'I_0); [apply fun_from_I_0_inj |]. +rewrite (size0nil Hlb) (size0nil size_ord_enum); easy. +(* *) +move: (perm_sortP HT2 HT1 HT0 _ _ Hla) => Hlc. +destruct (perm_ord_enum_sort leT x0 l1) as [il1 [Hil1a Hil1b] Hil1c]. +rewrite Hlb in il1, Hil1a, Hil1b, Hil1c. +pose (p1 := fun i : 'I_n => nth ord0 il1 i). +destruct (perm_ord_enum_sort leT x0 l2) as [il2 [Hil2a Hil2b] Hil2c]. +rewrite Hn in il2, Hil2a, Hil2b, Hil2c. +pose (p2 := fun i : 'I_n => nth ord0 il2 i). +(* +perm_eq +perm_mem : perm_eq s1 s2 -> s1 =i s2 +perm_map : perm_eq s t -> perm_eq (map f s) (map f t) +perm_map_inj : injective f -> perm_eq (map f s) (map f t) -> perm_eq s t +perm_sortP : total leT -> transitive leT -> antisymmetric leT -> + reflect (sort leT s1 = sort leT s2) (perm_eq s1 s2) +*) Admitted. Lemma sort_perm_EX : -- GitLab