I have this Isar state
using this:
constrained_to (renaming_subst fr too) χ = renaming_subst (map fst (filter (λx. fst x ∈ χ) (zip fr too))) (map snd (filter (λx. fst x ∈ χ) (zip fr too)))
goal (1 subgoal):
1. constrained_to (renaming_subst fr too) χ = renaming_subst (map fst (filter (λx. fst x ∈ χ) (zip fr too))) (map snd (filter (λx. fst x ∈ χ) (zip fr too)))
I don't think that the definitions are relevant, but these two are exactly the same, shouldn't it be easily proved? try cannot find anything and netiher can I. I didn't think it allowed shadowing in the first place, but I don't think theres any shadowing in my proof. What could cause this?
EDIT:
Lesson Learned:
declare [[show_types, show_sorts]]
)Do all variables have matching colors? Can you post a screenshot of Isabelle/Jedit?
Good point, but yes, same colors
image.png
You could also do declare [[show_types,show_sorts]]
. Maybe something is wrong there.
Oh I didn't know about that, good idea
image.png
They are different in a confusing way
Oh I see how it works, but then they agree right?
The 'a
matches. But where does the 'd
come from?
It doesn't show anywhere so I'm not sure. Do you know how I would find out?
looking at everything in Print Context
with context, cases, terms, and theorems, there is no 'd
oh, renaming_subst
has type 'a list ⇒ 'a list ⇒ 'a ⇒ ('b, 'a) Type.type
so the 'b
is unconstrained by the input, so I guess this 'b
is instantiated differently, not shown in the annotations. And I'm trying to prove equivalence independent on type instantiation.
Annotations that force the type parameter worked. I'm not sure how to make it pretty but its a solution. Thank you :)
Last updated: Dec 21 2024 at 16:20 UTC