-
Notifications
You must be signed in to change notification settings - Fork 38
Open
Description
The apply has a strange behaviour when the goal is quantified. In the following proof,
apply (λ h, h)
lets the goal unchanged as expected.
However, if we try to explicitly type the parameter h, the tactic apply fails. When looking at the unification problem, it seems that the universal variable x of the goal is discharged before the unification attempt, which makes it fail.
symbol Prop: TYPE;
symbol π: Prop → TYPE;
symbol Set: TYPE;
constant symbol τ: Set → TYPE;
constant symbol ∀ [a] : (τ a → Prop) → Prop;
notation ∀ quantifier;
rule π (∀ $f) ↪ Π x, π ($f x);
symbol T: Set;
symbol P : τ T → Prop;
symbol bug: π (`∀ (x: τ T), P x) ≔
begin
print;
debug +u;
apply (λ (h : π (`∀ x: τ T, P x)), h ); // error
// apply (λ h, h); // correct
print;
admit;
end;
Metadata
Metadata
Assignees
Labels
No labels