Skip to content

Blocked meta equation is not delayed but rejected #1358

@HoshinoTented

Description

@HoshinoTented

Code:

prim I
prim Path
variable A : Type
def infix = (a b : A) : Type => Path (\i => A) a b
def refl {a : A} : a = a => \i => a
open inductive Unit | tt
open inductive Bool | true | false
open inductive Wrap Type
| A => wrap A
// pattern matching on bool is necessary, which prevents the call from being unfolded
def someOp {T : Type} (a b : T) (bool : Bool) : Wrap T elim bool
| true => wrap a
| false => wrap b
open inductive SomeDep (T : Type) (l : T) (r : T) (b : Bool)
| con (wrap l = someOp r r b)
def what : SomeDep Unit tt tt true => con refl

Aya says:

In file <baka>:18:42 ->

  16 |   | con (wrap l = someOp r r b)
  17 |   
  18 |   def what : SomeDep Unit tt tt true => con refl
     |                                             ^--^

Error: Cannot check the expression
         refl
       of type
         (=) {Wrap ?T} (wrap ?l) (wrap ?l)
         (Normalized: wrap tt = wrap tt)
       against the type
         wrap ?l = someOp {?T} ?r ?r ?b
         (Normalized: wrap tt = wrap tt)
       In particular, we failed to unify
         wrap ?l
         (Normalized: wrap tt)
       with
         someOp {?T} ?r ?r ?b
         (Normalized: wrap tt)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions