@@ -1380,17 +1380,20 @@ pArgExpr syn = let syn' = syn { inPattern = True } in
13801380
13811381pRHS :: SyntaxInfo -> Name -> IParser PTerm
13821382pRHS syn n = do lchar '='; pExpr syn
1383− <|> do symbol "?="; rhs <- pExpr syn;
1384− return (addLet rhs)
1383+ <|> do symbol "?=";
1384+ name <- option n' (do symbol "{"; n <- pfName; symbol "}";
1385+ return n)
1386+ rhs <- pExpr syn
1387+ return (addLet name rhs)
13851388 <|> do reserved "impossible"; return PImpossible
13861389 where mkN (UN x) = UN (x++"_lemma_1")
13871390 mkN (NS x n) = NS (mkN x) n
13881391 n' = mkN n
13891392
1390− addLet (PLet n ty val rhs) = PLet n ty val (addLet rhs)
1391− addLet (PCase fc t cs) = PCase fc t (map addLetC cs)
1392− where addLetC (l, r) = (l, addLet r)
1393− addLet rhs = (PLet (UN "value") Placeholder rhs (PMetavar n'))
1393+ addLet nm (PLet n ty val rhs) = PLet n ty val (addLet nm rhs)
1394+ addLet nm (PCase fc t cs) = PCase fc t (map addLetC cs)
1395+ where addLetC (l, r) = (l, addLet nm r)
1396+ addLet nm rhs = (PLet (UN "value") Placeholder rhs (PMetavar nm))
13941397
13951398pClause :: SyntaxInfo -> IParser PClause
13961399pClause syn