@@ -848,7 +848,7 @@ expandParams dec ps ns infs tm = en tm
848 en (PEq f l r) = PEq f (en l) (en r)
848 en (PEq f l r) = PEq f (en l) (en r)
849 en (PRewrite f l r g) = PRewrite f (en l) (en r) (fmap en g)
849 en (PRewrite f l r g) = PRewrite f (en l) (en r) (fmap en g)
850 en (PTyped l r) = PTyped (en l) (en r)
850 en (PTyped l r) = PTyped (en l) (en r)
851− en (PPair f l r) = PPair f (en l) (en r)
851+ en (PPair f p l r) = PPair f p (en l) (en r)
852 en (PDPair f l t r) = PDPair f (en l) (en t) (en r)
852 en (PDPair f l t r) = PDPair f (en l) (en t) (en r)
853 en (PAlternative a as) = PAlternative a (map en as)
853 en (PAlternative a as) = PAlternative a (map en as)
854 en (PHidden t) = PHidden (en t)
854 en (PHidden t) = PHidden (en t)
@@ -942,7 +942,7 @@ expandParamsD rhsonly ist dec ps ns (PClauses fc opts n cs)
943 bnames (PRef _ n) = [n]
943 bnames (PRef _ n) = [n]
944 bnames (PApp _ _ args) = concatMap bnames (map getTm args)
944 bnames (PApp _ _ args) = concatMap bnames (map getTm args)
945− bnames (PPair _ l r) = bnames l ++ bnames r
945+ bnames (PPair _ _ l r) = bnames l ++ bnames r
946 bnames (PDPair _ l Placeholder r) = bnames l ++ bnames r
946 bnames (PDPair _ l Placeholder r) = bnames l ++ bnames r
947 bnames _ = []
947 bnames _ = []
@@ -998,7 +998,7 @@ getPriority i tm = 1 -- pri tm
998 ((P Ref _ _):_) -> 1
998 ((P Ref _ _):_) -> 1
999 [] -> 0 -- must be locally bound, if it's not an error...
999 [] -> 0 -- must be locally bound, if it's not an error...
1000 pri (PPi _ _ x y) = max 5 (max (pri x) (pri y))
1000 pri (PPi _ _ x y) = max 5 (max (pri x) (pri y))
1001− pri (PTrue _) = 0
1001+ pri (PTrue _ _) = 0
1002 pri (PFalse _) = 0
1002 pri (PFalse _) = 0
1003 pri (PRefl _ _) = 1
1003 pri (PRefl _ _) = 1
1004 pri (PEq _ l r) = max 1 (max (pri l) (pri r))
1004 pri (PEq _ l r) = max 1 (max (pri l) (pri r))
@@ -1007,7 +1007,7 @@ getPriority i tm = 1 -- pri tm
1007 pri (PAppBind _ f as) = max 1 (max (pri f) (foldr max 0 (map (pri.getTm) as)))
1007 pri (PAppBind _ f as) = max 1 (max (pri f) (foldr max 0 (map (pri.getTm) as)))
1008 pri (PCase _ f as) = max 1 (max (pri f) (foldr max 0 (map (pri.snd) as)))
1008 pri (PCase _ f as) = max 1 (max (pri f) (foldr max 0 (map (pri.snd) as)))
1009 pri (PTyped l r) = pri l
1009 pri (PTyped l r) = pri l
1010− pri (PPair _ l r) = max 1 (max (pri l) (pri r))
1010+ pri (PPair _ _ l r) = max 1 (max (pri l) (pri r))
1011 pri (PDPair _ l t r) = max 1 (max (pri l) (max (pri t) (pri r)))
1011 pri (PDPair _ l t r) = max 1 (max (pri l) (max (pri t) (pri r)))
1012 pri (PAlternative a as) = maximum (map pri as)
1012 pri (PAlternative a as) = maximum (map pri as)
1013 pri (PConstant _) = 0
1013 pri (PConstant _) = 0
@@ -1182,7 +1182,7 @@ implicitise syn ignore ist tm = -- trace ("INCOMING " ++ showImp True tm) $
1182 put (decls, nub (ns ++ (isn `dropAll` (env ++ map fst (getImps decls)))))
1182 put (decls, nub (ns ++ (isn `dropAll` (env ++ map fst (getImps decls)))))
1183 imps top env (PTyped l r)
1183 imps top env (PTyped l r)
1184 = imps top env l
1184 = imps top env l
1185− imps top env (PPair _ l r)
1185+ imps top env (PPair _ _ l r)
1186 = do (decls, ns) <- get
1186 = do (decls, ns) <- get
1187 let isn = namesIn uvars ist l ++ namesIn uvars ist r
1187 let isn = namesIn uvars ist l ++ namesIn uvars ist r
1188 put (decls, nub (ns ++ (isn `dropAll` (env ++ map fst (getImps decls)))))
1188 put (decls, nub (ns ++ (isn `dropAll` (env ++ map fst (getImps decls)))))
@@ -1252,10 +1252,10 @@ addImpl' inpat env infns ist ptm
1252 = let l' = ai env ds l
1252 = let l' = ai env ds l
1253 r' = ai env ds r in
1253 r' = ai env ds r in
1254 PTyped l' r'
1254 PTyped l' r'
1255− ai env ds (PPair fc l r)
1255+ ai env ds (PPair fc p l r)
1256 = let l' = ai env ds l
1256 = let l' = ai env ds l
1257 r' = ai env ds r in
1257 r' = ai env ds r in
1258− PPair fc l' r'
1258+ PPair fc p l' r'
1259 ai env ds (PDPair fc l t r)
1259 ai env ds (PDPair fc l t r)
1260 = let l' = ai env ds l
1260 = let l' = ai env ds l
1261 t' = ai env ds t
1261 t' = ai env ds t
@@ -1455,7 +1455,7 @@ stripUnmatchable i (PApp fc fn args) = PApp fc fn (fmap (fmap su) args) where
1455 = let alts' = filter (/= Placeholder) (map su alts) in
1455 = let alts' = filter (/= Placeholder) (map su alts) in
1456 if null alts' then Placeholder
1456 if null alts' then Placeholder
1457 else PAlternative b alts'
1457 else PAlternative b alts'
1458− su (PPair fc l r) = PPair fc (su l) (su r)
1458+ su (PPair fc p l r) = PPair fc p (su l) (su r)
1459 su (PDPair fc l t r) = PDPair fc (su l) (su t) (su r)
1459 su (PDPair fc l t r) = PDPair fc (su l) (su t) (su r)
1460 su t = t
1460 su t = t
1461stripUnmatchable i tm = tm
1461stripUnmatchable i tm = tm
@@ -1564,9 +1564,9 @@ matchClause' names i x y = checkRpts $ match (fullApp x) (fullApp y) where
1564 return (ml ++ mr)
1564 return (ml ++ mr)
1565 match (PTyped l r) x = match l x
1565 match (PTyped l r) x = match l x
1566 match x (PTyped l r) = match x l
1566 match x (PTyped l r) = match x l
1567− match (PPair _ l r) (PPair _ l' r') = do ml <- match' l l'
1567+ match (PPair _ _ l r) (PPair _ _ l' r') = do ml <- match' l l'
1568− mr <- match' r r'
1568+ mr <- match' r r'
1569− return (ml ++ mr)
1569+ return (ml ++ mr)
1570 match (PDPair _ l t r) (PDPair _ l' t' r') = do ml <- match' l l'
1570 match (PDPair _ l t r) (PDPair _ l' t' r') = do ml <- match' l l'
1571 mt <- match' t t'
1571 mt <- match' t t'
1572 mr <- match' r r'
1572 mr <- match' r r'
@@ -1587,7 +1587,7 @@ matchClause' names i x y = checkRpts $ match (fullApp x) (fullApp y) where
1587 match (PTactics _) _ = return []
1587 match (PTactics _) _ = return []
1588 match (PRefl _ _) (PRefl _ _) = return []
1588 match (PRefl _ _) (PRefl _ _) = return []
1589 match (PResolveTC _) (PResolveTC _) = return []
1589 match (PResolveTC _) (PResolveTC _) = return []
1590− match (PTrue _) (PTrue _) = return []
1590+ match (PTrue _ _) (PTrue _ _) = return []
1591 match (PFalse _) (PFalse _) = return []
1591 match (PFalse _) (PFalse _) = return []
1592 match (PReturn _) (PReturn _) = return []
1592 match (PReturn _) (PReturn _) = return []
1593 match (PPi _ _ t s) (PPi _ _ t' s') = do mt <- match' t t'
1593 match (PPi _ _ t s) (PPi _ _ t' s') = do mt <- match' t t'
@@ -1647,7 +1647,7 @@ substMatchShadow n shs tm t = sm shs t where
1647 sm xs (PRewrite f x y tm) = PRewrite f (sm xs x) (sm xs y)
1647 sm xs (PRewrite f x y tm) = PRewrite f (sm xs x) (sm xs y)
1648 (fmap (sm xs) tm)
1648 (fmap (sm xs) tm)
1649 sm xs (PTyped x y) = PTyped (sm xs x) (sm xs y)
1649 sm xs (PTyped x y) = PTyped (sm xs x) (sm xs y)
1650− sm xs (PPair f x y) = PPair f (sm xs x) (sm xs y)
1650+ sm xs (PPair f p x y) = PPair f p (sm xs x) (sm xs y)
1651 sm xs (PDPair f x t y) = PDPair f (sm xs x) (sm xs t) (sm xs y)
1651 sm xs (PDPair f x t y) = PDPair f (sm xs x) (sm xs t) (sm xs y)
1652 sm xs (PAlternative a as) = PAlternative a (map (sm xs) as)
1652 sm xs (PAlternative a as) = PAlternative a (map (sm xs) as)
1653 sm xs (PHidden x) = PHidden (sm xs x)
1653 sm xs (PHidden x) = PHidden (sm xs x)
@@ -1670,7 +1670,7 @@ shadow n n' t = sm t where
1670 sm (PEq f x y) = PEq f (sm x) (sm y)
1670 sm (PEq f x y) = PEq f (sm x) (sm y)
1671 sm (PRewrite f x y tm) = PRewrite f (sm x) (sm y) (fmap sm tm)
1671 sm (PRewrite f x y tm) = PRewrite f (sm x) (sm y) (fmap sm tm)
1672 sm (PTyped x y) = PTyped (sm x) (sm y)
1672 sm (PTyped x y) = PTyped (sm x) (sm y)
1673− sm (PPair f x y) = PPair f (sm x) (sm y)
1673+ sm (PPair f p x y) = PPair f p (sm x) (sm y)
1674 sm (PDPair f x t y) = PDPair f (sm x) (sm t) (sm y)
1674 sm (PDPair f x t y) = PDPair f (sm x) (sm t) (sm y)
1675 sm (PAlternative a as) = PAlternative a (map sm as)
1675 sm (PAlternative a as) = PAlternative a (map sm as)
1676 sm (PTactics ts) = PTactics (map (fmap sm) ts)
1676 sm (PTactics ts) = PTactics (map (fmap sm) ts)
@@ -1692,13 +1692,13 @@ mkUniqueNames env tm = evalState (mkUniq tm) env where
1693 -- FIXME: Probably ought to do this for completeness! It's fine as
1693 -- FIXME: Probably ought to do this for completeness! It's fine as
1694 -- long as there are no bindings inside tactics though.
1694 -- long as there are no bindings inside tactics though.
1695− mkUniqT tac = return tac
1695+ mkUniqT tac = return tac
1697 mkUniq :: PTerm -> State [Name] PTerm
1697 mkUniq :: PTerm -> State [Name] PTerm
1698 mkUniq (PLam n ty sc)
1698 mkUniq (PLam n ty sc)
1699 = do env <- get
1699 = do env <- get
1700− (n', sc') <-
1700+ (n', sc') <-
1701− if n `elem` env
1701+ if n `elem` env
1702 then do let n' = uniqueName n (env ++ inScope)
1702 then do let n' = uniqueName n (env ++ inScope)
1703 return (n', shadow n n' sc)
1703 return (n', shadow n n' sc)
1704 else return (n, sc)
1704 else return (n, sc)
@@ -1708,8 +1708,8 @@ mkUniqueNames env tm = evalState (mkUniq tm) env where
1708 return $! PLam n' ty' sc''
1708 return $! PLam n' ty' sc''
1709 mkUniq (PPi p n ty sc)
1709 mkUniq (PPi p n ty sc)
1710 = do env <- get
1710 = do env <- get
1711− (n', sc') <-
1711+ (n', sc') <-
1712− if n `elem` env
1712+ if n `elem` env
1713 then do let n' = uniqueName n (env ++ inScope)
1713 then do let n' = uniqueName n (env ++ inScope)
1714 return (n', shadow n n' sc)
1714 return (n', shadow n n' sc)
1715 else return (n, sc)
1715 else return (n, sc)
@@ -1719,8 +1719,8 @@ mkUniqueNames env tm = evalState (mkUniq tm) env where
1719 return $! PPi p n' ty' sc''
1719 return $! PPi p n' ty' sc''
1720 mkUniq (PLet n ty val sc)
1720 mkUniq (PLet n ty val sc)
1721 = do env <- get
1721 = do env <- get
1722− (n', sc') <-
1722+ (n', sc') <-
1723− if n `elem` env
1723+ if n `elem` env
1724 then do let n' = uniqueName n (env ++ inScope)
1724 then do let n' = uniqueName n (env ++ inScope)
1725 return (n', shadow n n' sc)
1725 return (n', shadow n n' sc)
1726 else return (n, sc)
1726 else return (n, sc)
@@ -1728,26 +1728,26 @@ mkUniqueNames env tm = evalState (mkUniq tm) env where
1728 ty' <- mkUniq ty; val' <- mkUniq val
1728 ty' <- mkUniq ty; val' <- mkUniq val
1729 sc'' <- mkUniq sc'
1729 sc'' <- mkUniq sc'
1730 return $! PLet n' ty' val' sc''
1730 return $! PLet n' ty' val' sc''
1731− mkUniq (PApp fc t args)
1731+ mkUniq (PApp fc t args)
1732 = do t' <- mkUniq t
1732 = do t' <- mkUniq t
1733 args' <- mapM mkUniqA args
1733 args' <- mapM mkUniqA args
1734 return $! PApp fc t' args'
1734 return $! PApp fc t' args'
1735− mkUniq (PAppBind fc t args)
1735+ mkUniq (PAppBind fc t args)
1736 = do t' <- mkUniq t
1736 = do t' <- mkUniq t
1737 args' <- mapM mkUniqA args
1737 args' <- mapM mkUniqA args
1738 return $! PAppBind fc t' args'
1738 return $! PAppBind fc t' args'
1739− mkUniq (PCase fc t alts)
1739+ mkUniq (PCase fc t alts)
1740 = do t' <- mkUniq t
1740 = do t' <- mkUniq t
1741 alts' <- mapM (\(x,y)-> do x' <- mkUniq x; y' <- mkUniq y
1741 alts' <- mapM (\(x,y)-> do x' <- mkUniq x; y' <- mkUniq y
1742 return (x', y')) alts
1742 return (x', y')) alts
1743 return $! PCase fc t' alts'
1743 return $! PCase fc t' alts'
1744− mkUniq (PPair fc l r)
1744+ mkUniq (PPair fc p l r)
1745 = do l' <- mkUniq l; r' <- mkUniq r
1745 = do l' <- mkUniq l; r' <- mkUniq r
1746− return $! PPair fc l' r'
1746+ return $! PPair fc p l' r'
1747− mkUniq (PDPair fc l t r)
1747+ mkUniq (PDPair fc l t r)
1748 = do l' <- mkUniq l; t' <- mkUniq t; r' <- mkUniq r
1748 = do l' <- mkUniq l; t' <- mkUniq t; r' <- mkUniq r
1749− return $! PDPair fc l' t' r'
1749+ return $! PDPair fc l' t' r'
1750− mkUniq (PAlternative b as)
1750+ mkUniq (PAlternative b as)
1751 = liftM (PAlternative b) (mapM mkUniq as)
1751 = liftM (PAlternative b) (mapM mkUniq as)
1752 mkUniq (PHidden t) = liftM PHidden (mkUniq t)
1752 mkUniq (PHidden t) = liftM PHidden (mkUniq t)
1753 mkUniq (PUnifyLog t) = liftM PUnifyLog (mkUniq t)
1753 mkUniq (PUnifyLog t) = liftM PUnifyLog (mkUniq t)