@@ -818,9 +818,7 @@ data PTerm = PQuote Raw -- ^ Inclusion of a core term into the high-level langua
818 | PIfThenElse FC PTerm PTerm PTerm -- ^ Conditional expressions - elaborated to an overloading of ifThenElse
818 | PIfThenElse FC PTerm PTerm PTerm -- ^ Conditional expressions - elaborated to an overloading of ifThenElse
819 | PCase FC PTerm [(PTerm, PTerm)] -- ^ A case expression. Args are source location, scrutinee, and a list of pattern/RHS pairs
819 | PCase FC PTerm [(PTerm, PTerm)] -- ^ A case expression. Args are source location, scrutinee, and a list of pattern/RHS pairs
820 | PTrue FC PunInfo -- ^ Unit type..?
820 | PTrue FC PunInfo -- ^ Unit type..?
821− | PRefl FC PTerm -- ^ The canonical proof of the equality type
822 | PResolveTC FC -- ^ Solve this dictionary by type class resolution
821 | PResolveTC FC -- ^ Solve this dictionary by type class resolution
823− | PEq FC PTerm PTerm PTerm PTerm -- ^ Heterogeneous equality type: A = B
824 | PRewrite FC PTerm PTerm (Maybe PTerm) -- ^ "rewrite" syntax, with optional result type
822 | PRewrite FC PTerm PTerm (Maybe PTerm) -- ^ "rewrite" syntax, with optional result type
825 | PPair FC PunInfo PTerm PTerm -- ^ A pair (a, b) and whether it's a product type or a pair (solved by elaboration)
823 | PPair FC PunInfo PTerm PTerm -- ^ A pair (a, b) and whether it's a product type or a pair (solved by elaboration)
826 | PDPair FC PunInfo PTerm PTerm PTerm -- ^ A dependent pair (tm : a ** b) and whether it's a sigma type or a pair that inhabits one (solved by elaboration)
824 | PDPair FC PunInfo PTerm PTerm PTerm -- ^ A dependent pair (tm : a ** b) and whether it's a sigma type or a pair that inhabits one (solved by elaboration)
@@ -867,7 +865,6 @@ mapPT f t = f (mpt t) where
867 mpt (PAppBind fc t as) = PAppBind fc (mapPT f t) (map (fmap (mapPT f)) as)
865 mpt (PAppBind fc t as) = PAppBind fc (mapPT f t) (map (fmap (mapPT f)) as)
868 mpt (PCase fc c os) = PCase fc (mapPT f c) (map (pmap (mapPT f)) os)
866 mpt (PCase fc c os) = PCase fc (mapPT f c) (map (pmap (mapPT f)) os)
869 mpt (PIfThenElse fc c t e) = PIfThenElse fc (mapPT f c) (mapPT f t) (mapPT f e)
867 mpt (PIfThenElse fc c t e) = PIfThenElse fc (mapPT f c) (mapPT f t) (mapPT f e)
870− mpt (PEq fc lt rt l r) = PEq fc (mapPT f lt) (mapPT f rt) (mapPT f l) (mapPT f r)
871 mpt (PTyped l r) = PTyped (mapPT f l) (mapPT f r)
868 mpt (PTyped l r) = PTyped (mapPT f l) (mapPT f r)
872 mpt (PPair fc p l r) = PPair fc p (mapPT f l) (mapPT f r)
869 mpt (PPair fc p l r) = PPair fc p (mapPT f l) (mapPT f r)
873 mpt (PDPair fc p l t r) = PDPair fc p (mapPT f l) (mapPT f t) (mapPT f r)
870 mpt (PDPair fc p l t r) = PDPair fc p (mapPT f l) (mapPT f t) (mapPT f r)
@@ -1027,9 +1024,7 @@ highestFC (PMatchApp fc _) = Just fc
1027highestFC (PCase fc _ _) = Just fc
1024highestFC (PCase fc _ _) = Just fc
1028highestFC (PIfThenElse fc _ _ _) = Just fc
1025highestFC (PIfThenElse fc _ _ _) = Just fc
1029highestFC (PTrue fc _) = Just fc
1026highestFC (PTrue fc _) = Just fc
1030−highestFC (PRefl fc _) = Just fc
1031highestFC (PResolveTC fc) = Just fc
1027highestFC (PResolveTC fc) = Just fc
1032−highestFC (PEq fc _ _ _ _) = Just fc
1033highestFC (PRewrite fc _ _ _) = Just fc
1028highestFC (PRewrite fc _ _ _) = Just fc
1034highestFC (PPair fc _ _ _) = Just fc
1029highestFC (PPair fc _ _ _) = Just fc
1035highestFC (PDPair fc _ _ _ _) = Just fc
1030highestFC (PDPair fc _ _ _ _) = Just fc
@@ -1481,6 +1476,21 @@ pprintPTerm ppo bnd docArgs infixes = prettySe startPrec bnd
1481 bracket p startPrec $
1476 bracket p startPrec $
1482 lbrace <> kwd "tacimp" <+> pretty n <+> colon <+> prettySe startPrec bnd ty <>
1477 lbrace <> kwd "tacimp" <+> pretty n <+> colon <+> prettySe startPrec bnd ty <>
1483 rbrace <+> text "->" </> prettySe startPrec ((n, True):bnd) sc
1478 rbrace <+> text "->" </> prettySe startPrec ((n, True):bnd) sc
1479+ -- This case preserves the behavior of the former constructor PEq.
1480+ -- It should be removed if feasible when the pretty-printing of infix
1481+ -- operators in general is improved.
1482+ prettySe p bnd (PApp _ (PRef _ n) [lt, rt, l, r])
1483+ | n == eqTy, ppopt_impl ppo =
1485+ enclose lparen rparen eq <+>
1486+ align (group (vsep (map (prettyArgS bnd)
1489+ bracket p eqPrec . align . group $
1490+ prettyTerm (getTm l) <+> eq <$> group (prettyTerm (getTm r))
1491+ where eq = annName eqTy (text "=")
1493+ prettyTerm = prettySe (eqPrec + 1) bnd
1484 prettySe p bnd (PApp _ (PRef _ f) args) -- normal names, no explicit args
1494 prettySe p bnd (PApp _ (PRef _ f) args) -- normal names, no explicit args
1485 | UN nm <- basename f
1495 | UN nm <- basename f
1486 , not (ppopt_impl ppo) && null (getShowArgs args) =
1496 , not (ppopt_impl ppo) && null (getShowArgs args) =
@@ -1556,26 +1566,10 @@ pprintPTerm ppo bnd docArgs infixes = prettySe startPrec bnd
1556 , kwd "else" <+> prettySe startPrec bnd f
1566 , kwd "else" <+> prettySe startPrec bnd f
1558 prettySe p bnd (PHidden tm) = text "." <> prettySe funcAppPrec bnd tm
1568 prettySe p bnd (PHidden tm) = text "." <> prettySe funcAppPrec bnd tm
1559− prettySe p bnd (PRefl _ _) = annName eqCon $ text "Refl"
1560 prettySe p bnd (PResolveTC _) = kwd "%instance"
1569 prettySe p bnd (PResolveTC _) = kwd "%instance"
1561 prettySe p bnd (PTrue _ IsType) = annName unitTy $ text "()"
1570 prettySe p bnd (PTrue _ IsType) = annName unitTy $ text "()"
1562 prettySe p bnd (PTrue _ IsTerm) = annName unitCon $ text "()"
1571 prettySe p bnd (PTrue _ IsTerm) = annName unitCon $ text "()"
1563 prettySe p bnd (PTrue _ TypeOrTerm) = text "()"
1572 prettySe p bnd (PTrue _ TypeOrTerm) = text "()"
1564− prettySe p bnd (PEq _ lt rt l r)
1567− enclose lparen rparen eq <+>
1568− align (group (vsep (map (prettyArgS bnd)
1569− [PImp 0 False [] (sUN "A") lt,
1570− PImp 0 False [] (sUN "B") rt,
1571− PExp 0 [] (sUN "x") l,
1572− PExp 0 [] (sUN "y") r])))
1574− bracket p eqPrec . align . group $
1575− prettyTerm l <+> eq <$> group (prettyTerm r)
1576− where eq = annName eqTy (text "=")
1578− prettyTerm = prettySe (eqPrec + 1) bnd
1579 prettySe p bnd (PRewrite _ l r _) =
1573 prettySe p bnd (PRewrite _ l r _) =
1580 bracket p startPrec $
1574 bracket p startPrec $
1581 text "rewrite" <+> prettySe (startPrec + 1) bnd l <+> text "in" <+> prettySe startPrec bnd r
1575 text "rewrite" <+> prettySe (startPrec + 1) bnd l <+> text "in" <+> prettySe startPrec bnd r
@@ -1872,9 +1866,7 @@ instance Sized PTerm where
1872 size (PCase fc trm bdy) = 1 + size trm + size bdy
1866 size (PCase fc trm bdy) = 1 + size trm + size bdy
1873 size (PIfThenElse fc c t f) = 1 + sum (map size [c, t, f])
1867 size (PIfThenElse fc c t f) = 1 + sum (map size [c, t, f])
1874 size (PTrue fc _) = 1
1868 size (PTrue fc _) = 1
1875− size (PRefl fc _) = 1
1876 size (PResolveTC fc) = 1
1869 size (PResolveTC fc) = 1
1877− size (PEq fc _ _ left right) = 1 + size left + size right
1878 size (PRewrite fc left right _) = 1 + size left + size right
1870 size (PRewrite fc left right _) = 1 + size left + size right
1879 size (PPair fc _ left right) = 1 + size left + size right
1871 size (PPair fc _ left right) = 1 + size left + size right
1880 size (PDPair fs _ left ty right) = 1 + size left + size ty + size right
1872 size (PDPair fs _ left ty right) = 1 + size left + size ty + size right
@@ -1915,7 +1907,6 @@ allNamesIn tm = nub $ ni [] tm
1915 ni env (PLam fc n ty sc) = ni env ty ++ ni (n:env) sc
1907 ni env (PLam fc n ty sc) = ni env ty ++ ni (n:env) sc
1916 ni env (PPi p n ty sc) = niTacImp env p ++ ni env ty ++ ni (n:env) sc
1908 ni env (PPi p n ty sc) = niTacImp env p ++ ni env ty ++ ni (n:env) sc
1917 ni env (PHidden tm) = ni env tm
1909 ni env (PHidden tm) = ni env tm
1918− ni env (PEq _ _ _ l r) = ni env l ++ ni env r
1919 ni env (PRewrite _ l r _) = ni env l ++ ni env r
1910 ni env (PRewrite _ l r _) = ni env l ++ ni env r
1920 ni env (PTyped l r) = ni env l ++ ni env r
1911 ni env (PTyped l r) = ni env l ++ ni env r
1921 ni env (PPair _ _ l r) = ni env l ++ ni env r
1912 ni env (PPair _ _ l r) = ni env l ++ ni env r
@@ -1942,7 +1933,6 @@ boundNamesIn tm = S.toList (ni S.empty tm)
1942 ni set (PLam fc n ty sc) = S.insert n $ ni (ni set ty) sc
1933 ni set (PLam fc n ty sc) = S.insert n $ ni (ni set ty) sc
1943 ni set (PLet fc n ty val sc) = S.insert n $ ni (ni (ni set ty) val) sc
1934 ni set (PLet fc n ty val sc) = S.insert n $ ni (ni (ni set ty) val) sc
1944 ni set (PPi p n ty sc) = niTacImp (S.insert n $ ni (ni set ty) sc) p
1935 ni set (PPi p n ty sc) = niTacImp (S.insert n $ ni (ni set ty) sc) p
1945− ni set (PEq _ _ _ l r) = ni (ni set l) r
1946 ni set (PRewrite _ l r _) = ni (ni set l) r
1936 ni set (PRewrite _ l r _) = ni (ni set l) r
1947 ni set (PTyped l r) = ni (ni set l) r
1937 ni set (PTyped l r) = ni (ni set l) r
1948 ni set (PPair _ _ l r) = ni (ni set l) r
1938 ni set (PPair _ _ l r) = ni (ni set l) r
@@ -1982,7 +1972,6 @@ implicitNamesIn uvars ist tm = nub $ ni [] tm
1982 ni env (PIfThenElse _ c t f) = concatMap (ni env) [c, t, f]
1972 ni env (PIfThenElse _ c t f) = concatMap (ni env) [c, t, f]
1983 ni env (PLam fc n ty sc) = ni env ty ++ ni (n:env) sc
1973 ni env (PLam fc n ty sc) = ni env ty ++ ni (n:env) sc
1984 ni env (PPi p n ty sc) = ni env ty ++ ni (n:env) sc
1974 ni env (PPi p n ty sc) = ni env ty ++ ni (n:env) sc
1985− ni env (PEq _ _ _ l r) = ni env l ++ ni env r
1986 ni env (PRewrite _ l r _) = ni env l ++ ni env r
1975 ni env (PRewrite _ l r _) = ni env l ++ ni env r
1987 ni env (PTyped l r) = ni env l ++ ni env r
1976 ni env (PTyped l r) = ni env l ++ ni env r
1988 ni env (PPair _ _ l r) = ni env l ++ ni env r
1977 ni env (PPair _ _ l r) = ni env l ++ ni env r
@@ -2013,7 +2002,6 @@ namesIn uvars ist tm = nub $ ni [] tm
2013 ni env (PIfThenElse _ c t f) = concatMap (ni env) [c, t, f]
2002 ni env (PIfThenElse _ c t f) = concatMap (ni env) [c, t, f]
2014 ni env (PLam fc n ty sc) = ni env ty ++ ni (n:env) sc
2003 ni env (PLam fc n ty sc) = ni env ty ++ ni (n:env) sc
2015 ni env (PPi p n ty sc) = niTacImp env p ++ ni env ty ++ ni (n:env) sc
2004 ni env (PPi p n ty sc) = niTacImp env p ++ ni env ty ++ ni (n:env) sc
2016− ni env (PEq _ _ _ l r) = ni env l ++ ni env r
2017 ni env (PRewrite _ l r _) = ni env l ++ ni env r
2005 ni env (PRewrite _ l r _) = ni env l ++ ni env r
2018 ni env (PTyped l r) = ni env l ++ ni env r
2006 ni env (PTyped l r) = ni env l ++ ni env r
2019 ni env (PPair _ _ l r) = ni env l ++ ni env r
2007 ni env (PPair _ _ l r) = ni env l ++ ni env r
@@ -2045,7 +2033,6 @@ usedNamesIn vars ist tm = nub $ ni [] tm
2045 ni env (PIfThenElse _ c t f) = concatMap (ni env) [c, t, f]
2033 ni env (PIfThenElse _ c t f) = concatMap (ni env) [c, t, f]
2046 ni env (PLam fc n ty sc) = ni env ty ++ ni (n:env) sc
2034 ni env (PLam fc n ty sc) = ni env ty ++ ni (n:env) sc
2047 ni env (PPi p n ty sc) = niTacImp env p ++ ni env ty ++ ni (n:env) sc
2035 ni env (PPi p n ty sc) = niTacImp env p ++ ni env ty ++ ni (n:env) sc
2048− ni env (PEq _ _ _ l r) = ni env l ++ ni env r
2049 ni env (PRewrite _ l r _) = ni env l ++ ni env r
2036 ni env (PRewrite _ l r _) = ni env l ++ ni env r
2050 ni env (PTyped l r) = ni env l ++ ni env r
2037 ni env (PTyped l r) = ni env l ++ ni env r
2051 ni env (PPair _ _ l r) = ni env l ++ ni env r
2038 ni env (PPair _ _ l r) = ni env l ++ ni env r