@@ -681,7 +681,7 @@ data PTerm = PQuote Raw
681681 | PFalse FC -- ^ _|_
682682 | PRefl FC PTerm
683683 | PResolveTC FC
684− | PEq FC PTerm PTerm -- ^ Equality type: A = B
684+ | PEq FC PTerm PTerm PTerm PTerm -- ^ Heterogeneous equality type: A = B
685685 | PRewrite FC PTerm PTerm (Maybe PTerm)
686686 | PPair FC PunInfo PTerm PTerm
687687 | PDPair FC PunInfo PTerm PTerm PTerm
@@ -723,7 +723,7 @@ mapPT f t = f (mpt t) where
723723 mpt (PApp fc t as) = PApp fc (mapPT f t) (map (fmap (mapPT f)) as)
724724 mpt (PAppBind fc t as) = PAppBind fc (mapPT f t) (map (fmap (mapPT f)) as)
725725 mpt (PCase fc c os) = PCase fc (mapPT f c) (map (pmap (mapPT f)) os)
726− mpt (PEq fc l r) = PEq fc (mapPT f l) (mapPT f r)
726+ mpt (PEq fc lt rt l r) = PEq fc (mapPT f lt) (mapPT f rt) (mapPT f l) (mapPT f r)
727727 mpt (PTyped l r) = PTyped (mapPT f l) (mapPT f r)
728728 mpt (PPair fc p l r) = PPair fc p (mapPT f l) (mapPT f r)
729729 mpt (PDPair fc p l t r) = PDPair fc p (mapPT f l) (mapPT f t) (mapPT f r)
@@ -1086,7 +1086,7 @@ eqDecl = PDatadecl eqTy (piBindp impl [(n "A", PType), (n "B", PType)]
10861086 pimp (n "B") Placeholder False,
10871087 pexp (PRef bi (n "x")),
10881088 pexp (PRef bi (n "x"))])), bi, [])]
1089− where n a = sMN 0 a
1089+ where n a = sUN a
10901090 reflDoc = parseDocstring . T.pack $
10911091 "A proof that `x` in fact equals `x`. To construct this, you must have already " ++
10921092 "shown that both sides are in fact equal."
@@ -1096,7 +1096,7 @@ eqDecl = PDatadecl eqTy (piBindp impl [(n "A", PType), (n "B", PType)]
10961096eqParamDoc = [(n "A", parseDocstring . T.pack $ "the type of the left side of the equality"),
10971097 (n "B", parseDocstring . T.pack $ "the type of the right side of the equality")
10981098 ]
1099− where n a = sMN 0 a
1099+ where n a = sUN a
11001100
11011101eqOpts = []
11021102
@@ -1242,7 +1242,7 @@ pprintPTerm ppo bnd docArgs infixes = prettySe 10 bnd
12421242 rbrace <+> text "->" </> prettySe 10 ((n, True):bnd) sc
12431243 prettySe p bnd (PApp _ (PRef _ f) args) -- normal names, no explicit args
12441244 | UN nm <- basename f
1245− , not (ppopt_impl ppo) && null (getExps args) =
1245+ , not (ppopt_impl ppo) && null (getShowArgs args) =
12461246 prettyName True (ppopt_impl ppo) bnd f
12471247 prettySe p bnd (PAppBind _ (PRef _ f) [])
12481248 | not (ppopt_impl ppo) = text "!" <> prettyName True (ppopt_impl ppo) bnd f
@@ -1250,14 +1250,16 @@ pprintPTerm ppo bnd docArgs infixes = prettySe 10 bnd
12501250 | UN nm <- basename op
12511251 , not (tnull nm) &&
12521252 (not (ppopt_impl ppo)) && (not $ isAlpha (thead nm)) =
1253− case getExps args of
1253+ case getShowArgs args of
12541254 [] -> opName True
1255− [x] -> group (opName True <$> group (prettySe 0 bnd x))
1255+ [x] -> group (opName True <$> group (prettySe 0 bnd (getTm x)))
12561256 [l,r] -> let precedence = fromMaybe 20 (fmap prec f)
1257− in bracket p precedence $ inFix l r
1258− (l:r:rest) -> bracket p 1 $
1259− enclose lparen rparen (inFix l r) <+>
1260− align (group (vsep (map (prettyArgSe bnd) rest)))
1257+ in bracket p precedence $ inFix (getTm l) (getTm r)
1258+ (l@(PExp _ _ _ _) : r@(PExp _ _ _ _) : rest) ->
1259+ bracket p 1 $
1260+ enclose lparen rparen (inFix (getTm l) (getTm r)) <+>
1261+ align (group (vsep (map (prettyArgS bnd) rest)))
1262+ as -> opName True <+> align (vsep (map (prettyArgS bnd) as))
12611263 where opName isPrefix = prettyName isPrefix (ppopt_impl ppo) bnd op
12621264 f = getFixity (opStr op)
12631265 left l = case f of
@@ -1299,7 +1301,7 @@ pprintPTerm ppo bnd docArgs infixes = prettySe 10 bnd
12991301 prettySe p bnd (PTrue _ IsTerm) = annName unitCon $ text "()"
13001302 prettySe p bnd (PTrue _ TypeOrTerm) = text "()"
13011303 prettySe p bnd (PFalse _) = annName falseTy $ text "_|_"
1302− prettySe p bnd (PEq _ l r) =
1304+ prettySe p bnd (PEq _ _ _ l r) =
13031305 bracket p 2 . align . group $
13041306 prettySe 10 bnd l <+> eq <$> group (prettySe 10 bnd r)
13051307 where eq = annName eqTy (text "=")
@@ -1596,7 +1598,7 @@ instance Sized PTerm where
15961598 size (PFalse fc) = 1
15971599 size (PRefl fc _) = 1
15981600 size (PResolveTC fc) = 1
1599− size (PEq fc left right) = 1 + size left + size right
1601+ size (PEq fc _ _ left right) = 1 + size left + size right
16001602 size (PRewrite fc left right _) = 1 + size left + size right
16011603 size (PPair fc _ left right) = 1 + size left + size right
16021604 size (PDPair fs _ left ty right) = 1 + size left + size ty + size right
@@ -1634,7 +1636,7 @@ allNamesIn tm = nub $ ni [] tm
16341636 ni env (PLam n ty sc) = ni env ty ++ ni (n:env) sc
16351637 ni env (PPi p n ty sc) = niTacImp env p ++ ni env ty ++ ni (n:env) sc
16361638 ni env (PHidden tm) = ni env tm
1637− ni env (PEq _ l r) = ni env l ++ ni env r
1639+ ni env (PEq _ _ _ l r) = ni env l ++ ni env r
16381640 ni env (PRewrite _ l r _) = ni env l ++ ni env r
16391641 ni env (PTyped l r) = ni env l ++ ni env r
16401642 ni env (PPair _ _ l r) = ni env l ++ ni env r
@@ -1659,7 +1661,7 @@ boundNamesIn tm = nub $ ni tm
16591661 ni (PLam n ty sc) = n : (ni ty ++ ni sc)
16601662 ni (PLet n ty val sc) = n : (ni ty ++ ni val ++ ni sc)
16611663 ni (PPi p n ty sc) = niTacImp p ++ (n : (ni ty ++ ni sc))
1662− ni (PEq _ l r) = ni l ++ ni r
1664+ ni (PEq _ _ _ l r) = ni l ++ ni r
16631665 ni (PRewrite _ l r _) = ni l ++ ni r
16641666 ni (PTyped l r) = ni l ++ ni r
16651667 ni (PPair _ _ l r) = ni l ++ ni r
@@ -1695,7 +1697,7 @@ implicitNamesIn uvars ist tm = nub $ ni [] tm
16951697 \\ nub (concatMap (ni env) (map fst os)))
16961698 ni env (PLam n ty sc) = ni env ty ++ ni (n:env) sc
16971699 ni env (PPi p n ty sc) = niTacImp env p ++ ni env ty ++ ni (n:env) sc
1698− ni env (PEq _ l r) = ni env l ++ ni env r
1700+ ni env (PEq _ _ _ l r) = ni env l ++ ni env r
16991701 ni env (PRewrite _ l r _) = ni env l ++ ni env r
17001702 ni env (PTyped l r) = ni env l ++ ni env r
17011703 ni env (PPair _ _ l r) = ni env l ++ ni env r
@@ -1728,7 +1730,7 @@ namesIn uvars ist tm = nub $ ni [] tm
17281730 \\ nub (concatMap (ni env) (map fst os)))
17291731 ni env (PLam n ty sc) = ni env ty ++ ni (n:env) sc
17301732 ni env (PPi p n ty sc) = niTacImp env p ++ ni env ty ++ ni (n:env) sc
1731− ni env (PEq _ l r) = ni env l ++ ni env r
1733+ ni env (PEq _ _ _ l r) = ni env l ++ ni env r
17321734 ni env (PRewrite _ l r _) = ni env l ++ ni env r
17331735 ni env (PTyped l r) = ni env l ++ ni env r
17341736 ni env (PPair _ _ l r) = ni env l ++ ni env r
@@ -1759,7 +1761,7 @@ usedNamesIn vars ist tm = nub $ ni [] tm
17591761 ni env (PCase _ c os) = ni env c ++ concatMap (ni env) (map snd os)
17601762 ni env (PLam n ty sc) = ni env ty ++ ni (n:env) sc
17611763 ni env (PPi p n ty sc) = niTacImp env p ++ ni env ty ++ ni (n:env) sc
1762− ni env (PEq _ l r) = ni env l ++ ni env r
1764+ ni env (PEq _ _ _ l r) = ni env l ++ ni env r
17631765 ni env (PRewrite _ l r _) = ni env l ++ ni env r
17641766 ni env (PTyped l r) = ni env l ++ ni env r
17651767 ni env (PPair _ _ l r) = ni env l ++ ni env r