@@ -998,14 +998,14 @@ expandParams dec ps ns infs tm = en tm
998998 PLet fc n' nfc (en ty) (en v) (en (shadow n n' s))
999999 | otherwise = PLet fc n nfc (en ty) (en v) (en s)
10001000 -- FIXME: Should only do this in a type signature!
1001− en (PDPair f p (PRef f' fcs n) t r)
1001+ en (PDPair f hls p (PRef f' fcs n) t r)
10021002 | n `elem` (map fst ps ++ ns) && t /= Placeholder
10031003 = let n' = mkShadow n in
1004− PDPair f p (PRef f' fcs n') (en t) (en (shadow n n' r))
1004+ PDPair f hls p (PRef f' fcs n') (en t) (en (shadow n n' r))
10051005 en (PRewrite f l r g) = PRewrite f (en l) (en r) (fmap en g)
10061006 en (PTyped l r) = PTyped (en l) (en r)
1007− en (PPair f p l r) = PPair f p (en l) (en r)
1008− en (PDPair f p l t r) = PDPair f p (en l) (en t) (en r)
1007+ en (PPair f hls p l r) = PPair f hls p (en l) (en r)
1008+ en (PDPair f hls p l t r) = PDPair f hls p (en l) (en t) (en r)
10091009 en (PAlternative a as) = PAlternative a (map en as)
10101010 en (PHidden t) = PHidden (en t)
10111011 en (PUnifyLog t) = PUnifyLog (en t)
@@ -1105,8 +1105,8 @@ expandParamsD rhsonly ist dec ps ns (PClauses fc opts n cs)
11051105
11061106 bnames (PRef _ _ n) = [n]
11071107 bnames (PApp _ _ args) = concatMap bnames (map getTm args)
1108− bnames (PPair _ _ l r) = bnames l ++ bnames r
1109− bnames (PDPair _ _ l Placeholder r) = bnames l ++ bnames r
1108+ bnames (PPair _ _ _ l r) = bnames l ++ bnames r
1109+ bnames (PDPair _ _ _ l Placeholder r) = bnames l ++ bnames r
11101110 bnames _ = []
11111111
11121112-- | Expands parameters defined in parameter and where blocks inside of declarations
@@ -1175,8 +1175,8 @@ getPriority i tm = 1 -- pri tm
11751175 pri (PAppBind _ f as) = max 1 (max (pri f) (foldr max 0 (map (pri.getTm) as)))
11761176 pri (PCase _ f as) = max 1 (max (pri f) (foldr max 0 (map (pri.snd) as)))
11771177 pri (PTyped l r) = pri l
1178− pri (PPair _ _ l r) = max 1 (max (pri l) (pri r))
1179− pri (PDPair _ _ l t r) = max 1 (max (pri l) (max (pri t) (pri r)))
1178+ pri (PPair _ _ _ l r) = max 1 (max (pri l) (pri r))
1179+ pri (PDPair _ _ _ l t r) = max 1 (max (pri l) (max (pri t) (pri r)))
11801180 pri (PAlternative a as) = maximum (map pri as)
11811181 pri (PConstant _ _) = 0
11821182 pri Placeholder = 1
@@ -1486,15 +1486,15 @@ implicitise syn ignore ist tm = -- trace ("INCOMING " ++ showImp True tm) $
14861486 put (decls, nub (ns ++ (isn `dropAll` (env ++ map fst (getImps decls)))))
14871487 imps top env (PTyped l r)
14881488 = imps top env l
1489− imps top env (PPair _ _ l r)
1489+ imps top env (PPair _ _ _ l r)
14901490 = do (decls, ns) <- get
14911491 let isn = namesIn uvars ist l ++ namesIn uvars ist r
14921492 put (decls, nub (ns ++ (isn `dropAll` (env ++ map fst (getImps decls)))))
1493− imps top env (PDPair _ _ (PRef _ _ n) t r)
1493+ imps top env (PDPair _ _ _ (PRef _ _ n) t r)
14941494 = do (decls, ns) <- get
14951495 let isn = nub (namesIn uvars ist t ++ namesIn uvars ist r) \\ [n]
14961496 put (decls, nub (ns ++ (isn \\ (env ++ map fst (getImps decls)))))
1497− imps top env (PDPair _ _ l t r)
1497+ imps top env (PDPair _ _ _ l t r)
14981498 = do (decls, ns) <- get
14991499 let isn = namesIn uvars ist l ++ namesIn uvars ist t ++
15001500 namesIn uvars ist r
@@ -1559,15 +1559,15 @@ addImpl' inpat env infns imp_meths ist ptm
15591559 = let l' = ai qq env ds l
15601560 r' = ai qq env ds r in
15611561 PTyped l' r'
1562− ai qq env ds (PPair fc p l r)
1562+ ai qq env ds (PPair fc hls p l r)
15631563 = let l' = ai qq env ds l
15641564 r' = ai qq env ds r in
1565− PPair fc p l' r'
1566− ai qq env ds (PDPair fc p l t r)
1565+ PPair fc hls p l' r'
1566+ ai qq env ds (PDPair fc hls p l t r)
15671567 = let l' = ai qq env ds l
15681568 t' = ai qq env ds t
15691569 r' = ai qq env ds r in
1570− PDPair fc p l' t' r'
1570+ PDPair fc hls p l' t' r'
15711571 ai qq env ds (PAlternative a as)
15721572 = let as' = map (ai qq env ds) as in
15731573 PAlternative a as'
@@ -1616,7 +1616,8 @@ addImpl' inpat env infns imp_meths ist ptm
16161616 val' = ai qq env ds val
16171617 sc' = ai qq ((n, Just ty):env) ds sc in
16181618 PLet fc n nfc ty' val' sc'
1619− _ -> ai qq env ds (PCase fc val [(PRef fc [] n, sc)])
1619+ defs ->
1620+ ai qq env ds (PCase fc val [(PRef fc [] n, sc)])
16201621 ai qq env ds (PPi p n nfc ty sc)
16211622 = let ty' = ai qq env ds ty
16221623 env' = if n `elem` imp_meths then env
@@ -1803,11 +1804,11 @@ stripLinear i tm = evalState (sl tm) [] where
18031804 as' <- slAlts ns as
18041805 return (a' : as')
18051806 slAlts ns [] = return []
1806− sl (PPair fc p l r) = do l' <- sl l; r' <- sl r; return (PPair fc p l' r')
1807− sl (PDPair fc p l t r) = do l' <- sl l
1808− t' <- sl t
1809− r' <- sl r
1810− return (PDPair fc p l' t' r')
1807+ sl (PPair fc hls p l r) = do l' <- sl l; r' <- sl r; return (PPair fc hls p l' r')
1808+ sl (PDPair fc hls p l t r) = do l' <- sl l
1809+ t' <- sl t
1810+ r' <- sl r
1811+ return (PDPair fc hls p l' t' r')
18111812 sl (PApp fc fn args) = do fn' <- case fn of
18121813 -- Just the args, fn isn't matchable as a var
18131814 PRef _ _ _ -> return fn
@@ -1852,8 +1853,8 @@ stripUnmatchable i (PApp fc fn args) = PApp fc fn (fmap (fmap su) args) where
18521853 = let alts' = filter (/= Placeholder) (map su alts) in
18531854 if null alts' then Placeholder
18541855 else PAlternative b alts'
1855− su (PPair fc p l r) = PPair fc p (su l) (su r)
1856− su (PDPair fc p l t r) = PDPair fc p (su l) (su t) (su r)
1856+ su (PPair fc hls p l r) = PPair fc hls p (su l) (su r)
1857+ su (PDPair fc hls p l t r) = PDPair fc hls p (su l) (su t) (su r)
18571858 su t@(PLam fc _ _ _ _) = PHidden t
18581859 su t@(PPi _ _ _ _ _) = PHidden t
18591860 su t@(PConstant _ c) | isTypeConst c = PHidden t
@@ -1877,9 +1878,8 @@ mkPApp fc a f as = let rest = drop a as in
18771878-- FIXME: It's possible that this really has to happen after elaboration
18781879
18791880findStatics :: IState -> PTerm -> (PTerm, [Bool])
1880−findStatics ist tm = trace (show tm) $
1881− let (ns, ss) = fs tm in
1882− runState (pos ns ss tm) []
1881+findStatics ist tm = let (ns, ss) = fs tm
1882+ in runState (pos ns ss tm) []
18831883 where fs (PPi p n fc t sc)
18841884 | Static <- pstatic p
18851885 = let (ns, ss) = fs sc in
@@ -1969,13 +1969,13 @@ matchClause' names i x y = checkRpts $ match (fullApp x) (fullApp y) where
19691969 return (ml ++ mr)
19701970 match (PTyped l r) x = match l x
19711971 match x (PTyped l r) = match x l
1972− match (PPair _ _ l r) (PPair _ _ l' r') = do ml <- match' l l'
1973− mr <- match' r r'
1974− return (ml ++ mr)
1975− match (PDPair _ _ l t r) (PDPair _ _ l' t' r') = do ml <- match' l l'
1976− mt <- match' t t'
1977− mr <- match' r r'
1978− return (ml ++ mt ++ mr)
1972+ match (PPair _ _ _ l r) (PPair _ _ _ l' r') = do ml <- match' l l'
1973+ mr <- match' r r'
1974+ return (ml ++ mr)
1975+ match (PDPair _ _ _ l t r) (PDPair _ _ _ l' t' r') = do ml <- match' l l'
1976+ mt <- match' t t'
1977+ mr <- match' r r'
1978+ return (ml ++ mt ++ mr)
19791979 match (PAlternative a as) (PAlternative a' as')
19801980 = do ms <- zipWithM match' as as'
19811981 return (concat ms)
@@ -2058,8 +2058,8 @@ substMatchShadow n shs tm t = sm shs t where
20582058 sm xs (PRewrite f x y tm) = PRewrite f (sm xs x) (sm xs y)
20592059 (fmap (sm xs) tm)
20602060 sm xs (PTyped x y) = PTyped (sm xs x) (sm xs y)
2061− sm xs (PPair f p x y) = PPair f p (sm xs x) (sm xs y)
2062− sm xs (PDPair f p x t y) = PDPair f p (sm xs x) (sm xs t) (sm xs y)
2061+ sm xs (PPair f hls p x y) = PPair f hls p (sm xs x) (sm xs y)
2062+ sm xs (PDPair f hls p x t y) = PDPair f hls p (sm xs x) (sm xs t) (sm xs y)
20632063 sm xs (PAlternative a as) = PAlternative a (map (sm xs) as)
20642064 sm xs (PHidden x) = PHidden (sm xs x)
20652065 sm xs (PUnifyLog x) = PUnifyLog (sm xs x)
@@ -2085,8 +2085,8 @@ shadow n n' t = sm t where
20852085 sm (PIfThenElse fc c t f) = PIfThenElse fc (sm c) (sm t) (sm f)
20862086 sm (PRewrite f x y tm) = PRewrite f (sm x) (sm y) (fmap sm tm)
20872087 sm (PTyped x y) = PTyped (sm x) (sm y)
2088− sm (PPair f p x y) = PPair f p (sm x) (sm y)
2089− sm (PDPair f p x t y) = PDPair f p (sm x) (sm t) (sm y)
2088+ sm (PPair f hls p x y) = PPair f hls p (sm x) (sm y)
2089+ sm (PDPair f hls p x t y) = PDPair f hls p (sm x) (sm t) (sm y)
20902090 sm (PAlternative a as) = PAlternative a (map sm as)
20912091 sm (PTactics ts) = PTactics (map (fmap sm) ts)
20922092 sm (PProof ts) = PProof (map (fmap sm) ts)
@@ -2167,10 +2167,10 @@ mkUniqueNames env tm = evalState (mkUniq tm) (S.fromList env) where
21672167 return $! PCase fc t' alts'
21682168 mkUniq (PIfThenElse fc c t f)
21692169 = liftM3 (PIfThenElse fc) (mkUniq c) (mkUniq t) (mkUniq f)
2170− mkUniq (PPair fc p l r)
2170+ mkUniq (PPair fc hls p l r)
21712171 = do l' <- mkUniq l; r' <- mkUniq r
2172− return $! PPair fc p l' r'
2173− mkUniq (PDPair fc p (PRef fc' hl n) t sc)
2172+ return $! PPair fc hls p l' r'
2173+ mkUniq (PDPair fc hls p (PRef fc' hls' n) t sc)
21742174 | t /= Placeholder
21752175 = do env <- get
21762176 (n', sc') <- if n `S.member` env
@@ -2180,10 +2180,10 @@ mkUniqueNames env tm = evalState (mkUniq tm) (S.fromList env) where
21802180 put (S.insert n' env)
21812181 t' <- mkUniq t
21822182 sc'' <- mkUniq sc'
2183− return $! PDPair fc p (PRef fc' hl n') t' sc''
2184− mkUniq (PDPair fc p l t r)
2183+ return $! PDPair fc hls p (PRef fc' hls' n') t' sc''
2184+ mkUniq (PDPair fc hls p l t r)
21852185 = do l' <- mkUniq l; t' <- mkUniq t; r' <- mkUniq r
2186− return $! PDPair fc p l' t' r'
2186+ return $! PDPair fc hls p l' t' r'
21872187 mkUniq (PAlternative b as)
21882188 = liftM (PAlternative b) (mapM mkUniq as)
21892189 mkUniq (PHidden t) = liftM PHidden (mkUniq t)