Here is my goal
...
∀a b. P1 a b ⟹
∀a b. P2 a b ⟹
...
⟹ some goal
I want to apply the lemma to the second assumption
lemma K: ⟦ ∀a b. P a b⟧ ⟹ ∀b. P a b"
by using
apply (drule_tac a = "x" in K)
but Isabelle always firstly applies the tactic to the first assumption, how can I only apply the tactic to the second assumption?
Actually, my goal is
...
∀b. Γ b ≠ Γ' b ⟶
b ∉ set (llocked C1) ∧ (Γ b, Γ' b) ∈ RGUnion R G2 b ∧ disjoint (dom h1) (dom (Γ' b)) ⟶
rgsep_safe n C1 s h1 Γ' (RGUnion R G2) G1 Q1 ⟹
∀b. Γ b ≠ Γ' b ⟶
b ∉ set (llocked C2) ∧ (Γ b, Γ' b) ∈ RGUnion R G1 b ∧ disjoint (dom h2) (dom (Γ' b)) ⟶
rgsep_safe n C2 s h2 Γ' (RGUnion R G1) G2 Q2 ⟹
rgsep_safe n C2 s h2 Γ' (RGUnion R G1) G2 Q2
and I want to use the lemma on the second assumtion
theorem K1: ∀b. ?P b ⟶ ?Q ⟹ ∀b. ?P b ⟹ ?Q
to make the goal become
...
∀b. Γ b ≠ Γ' b ⟶
b ∉ set (llocked C1) ∧ (Γ b, Γ' b) ∈ RGUnion R G2 b ∧ disjoint (dom h1) (dom (Γ' b)) ⟶
rgsep_safe n C1 s h1 Γ' (RGUnion R G2) G1 Q1 ⟹
∀b. Γ b ≠ Γ' b ⟶
b ∉ set (llocked C2) ∧ (Γ b, Γ' b) ∈ RGUnion R G1 b ∧ disjoint (dom h2) (dom (Γ' b))