You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Consider x : nat |- ?e : nat and the pair of unification problems |- ?e@{x:=O} == ?e@{x:=S O} and x : nat |- ?e@{x:=x} == match x with O => O | S _ => O end. The only valid solution of this is ?e := match x with O => O | S _ => O end, which refers to x.
And in fact Coq fails to solve such a problem:
Checklet e := (fun x => ?[e]) in
eq_refl : (e O, e) = (e (S O), fun x => match x with O => O | S _ => O end).
(* Error:In environmente := fun _ : nat => ?e : nat -> natThe term "eq_refl" has type "(e 0, e) = (e 0, e)" while it is expected to have type "(e 0, e) = (e 1, fun x : nat => match x with | 0 | _ => 0 end)" (cannot instantiate "?e" because "x" is not in its scope).*)
Consider
x : nat |- ?e : nat
and the pair of unification problems|- ?e@{x:=O} == ?e@{x:=S O}
andx : nat |- ?e@{x:=x} == match x with O => O | S _ => O end
. The only valid solution of this is?e := match x with O => O | S _ => O end
, which refers tox
.And in fact Coq fails to solve such a problem:
Originally posted by @JasonGross in coq/ceps#59 (comment)
The text was updated successfully, but these errors were encountered: