Hi, I'm trying to write a simple rew
lemma, but I'm stuck here (doesn't type check).
Lemma rew_closure {A B} (P : A -> Type) {f : forall x : A, B -> P x}
{x y : A} (H : x = y):
rew [P] H in (fun (ε : B) => f x ε) = fun (ε : B) => (rew [P] H in f x ε).
the first one should be rew [fun x => B -> P x]
Ah yes! ... but I'm confused now, because my goal doesn't contain that expression in the rew predicate.
/me re-checks
Okay, I need help help again: doesn't type-check. The lemma is getting out-of-hand.
Lemma rew_closure {A} B (P: B -> A -> Type) (Q: B -> Type) {x y: A}
{f: forall (x: A) (ε: B), P ε x} {g: B -> A} (H: x = y):
rew [fun ε x => B -> P ε x] H in (fun (ε: B) => f ε (g ε)) =
fun (ε: B) => rew [P] H in f ε (g ε).
When applying the original lemma with @Gaëtan Gilbert's fix, I get Unable to unify "?M1379 x" with ... as ... contains local variables.
x takes epsilon as an argument, so I'm trying to re-work it.
Never mind. I'll just stick to using map_subst
.
Ramkumar Ramachandra has marked this topic as resolved.
Last updated: Oct 03 2023 at 19:01 UTC