Skip to content

☣️ Issue dispatching hcom for sigma types #303

Open
@TOTBWF

Description

@TOTBWF

When messing around with some ideas that @cangiuli had regarding records, I came across the following crash:

import prelude
import hlevel

-- Equivalences.
def fiber (A : type) (B : type)  (f : A → B) (b : B) : type := (a : A) × path B {f a} b

def is-equiv (A : type) (B : type) (f : A → B) : type := (b : B) → is-contr {fiber A B f b}

def equiv (A : type) (B : type) : type := (f : A → B) × is-equiv A B f

def equiv/id (A : type) : equiv A A :=
  [ x => x,
    x => [
      [ x , i => x ],
      fib i =>
        let aux : 𝕀 → A := j =>
	  hcom A 1 j {∂ i} {j _ => [
	    | j=1 ∨ i=0 => x
	    | i=1 => {snd fib} j
	    ]
	  }
        in [ aux 0, aux ]
    ]
  ]

#normalize {equiv/id {(x : type) × x}}

This crashes with:

[DEBUG] dispatch_rigid_hcom: lam[clo[lam[<anon>, el/out[ap[ap[var[2], var[1]], var[0]]]] ; [
[ 
] ; [ <let-sym> ]]]]
Core.Semantics.NbeFailed("Invalid arguments to dispatch_rigid_hcom")

I suspect that there's something fishy going on here with hcom_sg... It's worth noting this is fine for say, (x : type) × nat

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions