Open clayrat opened 5 years ago
@clayrat Cool! I'll try and have a look this weekend.
I've tried plugging that case with a filler like this:
def helper (A : type) (A/prop : is-prop A) (a : A) (i j : π) : type =
let AβU = ua A unit (prop/unit A A/prop a) in
let UβA = symm^1 type AβU in
comp 0 i (UβA j) [
| j=0 β UβA
| j=1 β AβU
]
but that spits up an mismatched top frames
error.
@clayrat I think I have some idea of what is going on :smile:
@jonsterling Does this have something to do with the path/identity distinction, or is it something more prosaic? :)
@clayrat My guess is that it has to do with that issue I mentioned on IRC where you need some elim form to have the exact right boundary. Sorry I didn't have a chance to look at this on the weekend: there were some things happening in Pittsburgh that demanded my attention.
I've tried adding the motive, but now the hole became something like a j/k
-square, where the j
side involves a function on k
, and vice versa the k
side depends on j
, and I'm no longer sure this is making sense :D
Hm, it looks like that hole should be pluggable by connection/both^1 type (uA a) (Au a) k j
, but it gives me a "global variable name mismatch"
Β―_(γ)_/Β―
EDIT: Nevermind, it involves a square with a
s on horizontals and b
s on verticals, can be seen more easily with the code at https://github.com/RedPRL/redtt/pull/461
Ok I think I've narrowed down the construction of P
to this helper :
def help (A : type)
(abx : π β A)
(aby : [k] A [k=0 β abx 0 | k=1 β abx 1])
(bax : [k] A [k=0 β abx 1 | k=1 β abx 0])
(bay : [k] A [k=0 β abx 1 | k=1 β abx 0])
(abxy : path (π β A) abx aby)
(baxy : path (π β A) bax bay)
: [i j] A [
| i=0 β aby j
| i=1 β bay j
| j=0 β abx i
| j=1 β bax i
]
= ?help
then merid-hole
can be plugged with
help^1 type (uA a) (uA b) (Au a) (Au b) (Ξ» k β uA (A/prop a b k)) (Ξ» k β Au (A/prop a b k)) i j
but I can't figure out how to construct the helper square :(
In the place you are using helper
, are the paths abxy
and baxy
actually of type path (path A (abx 0) (abx 1)) abx aby
and path (path A (abx 1) (abx 0)) bax bay
respectively? The way they are stated (as paths in π β A
), they won't be useful in helper
, as π β A
is already contractible.
If they do have those stronger types, then this should work:
def help (A : type)
(abx : π β A)
(aby : path A (abx 0) (abx 1))
(bax : path A (abx 1) (abx 0))
(bay : path A (abx 1) (abx 0))
(abxy : path (path A (abx 0) (abx 1)) abx aby)
(baxy : path (path A (abx 1) (abx 0)) bax bay)
: [i j] A [
| i=0 β aby j
| i=1 β bay j
| j=0 β abx i
| j=1 β bax i
]
=
Ξ» i j β
comp 0 1 (connection/both A abx bax i j) [
| i=0 k β abxy k j
| i=1 k β baxy k j
| β[j] β refl
]
Otherwise, I think helper
is not definable.
@ecavallo yeah, those are basically paths^1 between Aβunit
and unitβA
defined by univalence
@ecavallo Oh wow, I have been using that exact term and didn't realize the path types are wrong!!! Thanks!
Currently I'm stuck defining the
P
family insuspension-lemma
for the doublemerid
case :(