Bonak.νSet.RewLemmas

A few rewriting lemmas not in the standard library

Import Logic.EqNotations.

Set Warnings "-notation-overridden".
From Bonak Require Import HSet Notation.

Lemma rew_permute_ll_hset: (A: Type) (P Q: A HSet) (x y: A)
  (H: z: A, P z = Q z) (H': x = y) (a: P x),
  rew [Dom] H y in rew [P] H' in a = rew [Q] H' in rew [Dom] H x in a.
Proof.
  now destruct H'.
Defined.

Lemma rew_swap: A (P: A Type) a b (H: a = b) (x: P a) (y: P b),
  x = rew <- H in y rew H in x = y.
Proof.
  now destruct H.
Qed.

Lemma rew_app_rl A (P: A Type) (x y: A) (H H': x = y) (a: P x) :
  H = H' rew <- [P] H in rew [P] H' in a = a.
Proof.
  intros × →. now destruct H'.
Qed.

Lemma map_subst_app {A B} {x y} {𝛉: A} (H: x = y :> B) (P: A B Type)
  (f: 𝛉, P 𝛉 x):
  rew [P 𝛉] H in f 𝛉 = (rew [fun x 𝛉, P 𝛉 x] H in f) 𝛉.
Proof.
  now destruct H.
Qed.