summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoradelon <22380201+adelon@users.noreply.github.com>2025-11-27 21:30:27 +0100
committeradelon <22380201+adelon@users.noreply.github.com>2025-11-27 21:30:27 +0100
commit747d95463850a2c95e8bb7b1669cc188fe1d0743 (patch)
tree58248d1149148592b4465ed229dda7473b79fbfa
parentaa760e1989ccc2c7e45b6a3f111e5d5d3bc713b3 (diff)
Add basic parameter handling for relators
-rw-r--r--source/Meaning.hs39
-rw-r--r--source/Syntax/Abstract.hs6
-rw-r--r--source/Syntax/Concrete.hs8
-rw-r--r--test/golden/abbr/parsing.golden32
-rw-r--r--test/golden/byRef/parsing.golden24
-rw-r--r--test/golden/calc/parsing.golden24
-rw-r--r--test/golden/coord/parsing.golden28
-rw-r--r--test/golden/finite-set-terms/parsing.golden16
-rw-r--r--test/golden/formula/parsing.golden20
-rw-r--r--test/golden/geometry/parsing.golden16
-rw-r--r--test/golden/inductive/parsing.golden104
-rw-r--r--test/golden/no-reflexive-set/parsing.golden4
-rw-r--r--test/golden/proofassume/parsing.golden40
-rw-r--r--test/golden/proofdefinefunction/parsing.golden16
-rw-r--r--test/golden/prooffix/parsing.golden8
-rw-r--r--test/golden/relation-notation/parsing.golden4
-rw-r--r--test/golden/relparam/encoding tasks.golden1
-rw-r--r--test/golden/relparam/generating tasks.golden25
-rw-r--r--test/golden/relparam/glossing.golden66
-rw-r--r--test/golden/relparam/parsing.golden61
-rw-r--r--test/golden/relparam/verification.golden1
-rw-r--r--test/golden/replace/parsing.golden24
-rw-r--r--test/golden/russell/parsing.golden16
-rw-r--r--test/golden/separation/parsing.golden8
-rw-r--r--test/golden/union/parsing.golden48
25 files changed, 396 insertions, 243 deletions
diff --git a/source/Meaning.hs b/source/Meaning.hs
index 3721b0e..7e0e070 100644
--- a/source/Meaning.hs
+++ b/source/Meaning.hs
@@ -217,39 +217,37 @@ glossChain :: Sem.Chain -> Gloss (Sem.ExprOf VarSymbol)
glossChain ch = Sem.makeConjunction <$> makeRels (conjuncts (splat ch))
where
-- | Separate each link of the chain into separate triples.
- splat :: Raw.Chain -> [(NonEmpty Raw.Expr, Sign, Raw.Relation, [Raw.Expr], NonEmpty Raw.Expr)]
+ splat :: Raw.Chain -> [(NonEmpty Raw.Expr, Sign, Raw.Relation, NonEmpty Raw.Expr)]
splat = \case
- Raw.ChainBase es sign rel params es'
- -> [(es, sign, rel, params, es')]
- Raw.ChainCons es sign rel params ch'@(Raw.ChainBase es' _ _ _ _)
- -> (es, sign, rel, params, es') : splat ch'
- Raw.ChainCons es sign rel params ch'@(Raw.ChainCons es' _ _ _ _)
- -> (es, sign, rel, params, es') : splat ch'
+ Raw.ChainBase es sign rel es'
+ -> [(es, sign, rel, es')]
+ Raw.ChainCons es sign rel ch'@(Raw.ChainBase es' _ _ _)
+ -> (es, sign, rel, es') : splat ch'
+ Raw.ChainCons es sign rel ch'@(Raw.ChainCons es' _ _ _)
+ -> (es, sign, rel, es') : splat ch'
-- | Take each triple and combine the lhs/rhs to make all the conjuncts.
- conjuncts :: [(NonEmpty Raw.Expr, Sign, Raw.Relation, [Raw.Expr], NonEmpty Raw.Expr)] -> [(Sign, Raw.Relation, [Raw.Expr], Raw.Expr, Raw.Expr)]
+ conjuncts :: [(NonEmpty Raw.Expr, Sign, Raw.Relation, NonEmpty Raw.Expr)] -> [(Sign, Raw.Relation, Raw.Expr, Raw.Expr)]
conjuncts triples = do
- (e1s, sign, rel, params, e2s) <- triples
+ (e1s, sign, rel, e2s) <- triples
e1 <- toList e1s
e2 <- toList e2s
- pure (sign, rel, params, e1, e2)
+ pure (sign, rel, e1, e2)
- makeRels :: [(Sign, Raw.Relation, [Raw.Expr], Raw.Expr, Raw.Expr)] -> Gloss [Sem.Formula]
+ makeRels :: [(Sign, Raw.Relation, Raw.Expr, Raw.Expr)] -> Gloss [Sem.Formula]
makeRels triples = for triples makeRel
- makeRel :: (Sign, Raw.Relation, [Raw.Expr], Raw.Expr, Raw.Expr) -> Gloss Sem.Formula
- makeRel (sign, rel, params, e1, e2) = do
+ makeRel :: (Sign, Raw.Relation, Raw.Expr, Raw.Expr) -> Gloss Sem.Formula
+ makeRel (sign, rel, e1, e2) = do
e1' <- glossExpr e1
e2' <- glossExpr e2
- params' <- glossExpr `each` params
case rel of
- Raw.RelationSymbol tok ->
+ Raw.RelationSymbol tok params -> do
+ params' <- glossExpr `each` params
pure $ sign' $ Sem.Relation tok (params' <> [e1',e2'])
- Raw.RelationExpr e -> case params of
- [] -> do
+ Raw.RelationExpr e -> do
e' <- glossExpr e
pure (sign' (Sem.TermPair e1' e2' `Sem.IsElementOf` e'))
- _ -> throwError GlossRelationExprWithParams
where
sign' = case sign of
Positive -> id
@@ -461,9 +459,10 @@ glossBound = \case
Positive -> id
Negative -> Sem.Not
bound <- case rel of
- Raw.RelationSymbol rel' ->
+ Raw.RelationSymbol rel' params -> do
+ params' <- glossExpr `each` params
pure $ \v -> sign' $
- Sem.Relation rel' (Sem.TermVar v : [term'])
+ Sem.Relation rel' (params' <> [Sem.TermVar v, term'])
Raw.RelationExpr e -> do
e' <- glossExpr e
pure $ \v -> sign' $
diff --git a/source/Syntax/Abstract.hs b/source/Syntax/Abstract.hs
index 31a1029..ebbf9e9 100644
--- a/source/Syntax/Abstract.hs
+++ b/source/Syntax/Abstract.hs
@@ -92,12 +92,12 @@ makeTuple = foldr1 ExprPair
data Chain
- = ChainBase (NonEmpty Expr) Sign Relation [Expr] (NonEmpty Expr) -- left arguments, possibly empty list of parameters, right arguments
- | ChainCons (NonEmpty Expr) Sign Relation [Expr] Chain
+ = ChainBase (NonEmpty Expr) Sign Relation (NonEmpty Expr) -- left arguments, possibly empty list of parameters, right arguments
+ | ChainCons (NonEmpty Expr) Sign Relation Chain
deriving (Show, Eq, Ord)
data Relation
- = RelationSymbol RelationSymbol -- ^ E.g.: /@x \in X@/
+ = RelationSymbol RelationSymbol [Expr] -- ^ E.g.: /@x \in X@/, potentially with parameters in braces
| RelationExpr Expr -- ^ E.g.: /@x \mathrel{R} y@/
deriving (Show, Eq, Ord)
diff --git a/source/Syntax/Concrete.hs b/source/Syntax/Concrete.hs
index 8784a1f..ada6227 100644
--- a/source/Syntax/Concrete.hs
+++ b/source/Syntax/Concrete.hs
@@ -83,9 +83,9 @@ grammar lexicon@Lexicon{..} = mdo
relationSign <- rule $ pure Positive <|> (Negative <$ command "not")
relationExpr <- rule $ RelationExpr <$> (command "mathrel" *> group expr)
- relation <- rule $ (RelationSymbol <$> relator) <|> relationExpr
- chainBase <- rule $ ChainBase <$> exprs <*> relationSign <*> relation <*> many (brace expr) <*> exprs
- chainCons <- rule $ ChainCons <$> exprs <*> relationSign <*> relation <*> many (brace expr) <*> chain
+ relation <- rule $ (RelationSymbol <$> relator <*> many (group expr)) <|> relationExpr
+ chainBase <- rule $ ChainBase <$> exprs <*> relationSign <*> relation <*> exprs
+ chainCons <- rule $ ChainCons <$> exprs <*> relationSign <*> relation <*> chain
chain <- rule $ chainCons <|> chainBase
formulaPredicate <- rule $ asum $ prefixPredicateOf FormulaPredicate expr <$> HM.keys lexiconPrefixPredicates
@@ -270,7 +270,7 @@ grammar lexicon@Lexicon{..} = mdo
abbreviationVerb <- rule $ AbbreviationVerb <$> var <*> verbVar <* (_iff <|> _if) <*> stmt <* _dot
abbreviationAdj <- rule $ AbbreviationAdj <$> var <* _is <*> adjVar <* (_iff <|> _if) <*> stmt <* _dot
abbreviationNoun <- rule $ AbbreviationNoun <$> var <* _is <* _an <*> nounVar <* (_iff <|> _if) <*> stmt <* _dot
- abbreviationRel <- rule $ AbbreviationRel <$> (beginMath *> varSymbol) <*> relator <*> many (brace varSymbol) <*> varSymbol <* endMath <* (_iff <|> _if) <*> stmt <* _dot
+ abbreviationRel <- rule $ AbbreviationRel <$> (beginMath *> varSymbol) <*> relator <*> many (group varSymbol) <*> varSymbol <* endMath <* (_iff <|> _if) <*> stmt <* _dot
abbreviationFun <- rule $ AbbreviationFun <$> (_the *> funVar) <* (_is <|> _denotes) <*> term <* _dot
abbreviationEq <- rule $ uncurry AbbreviationEq <$> symbolicPatternEqTerm
abbreviation <- rule $ (abbreviationVerb <|> abbreviationAdj <|> abbreviationNoun <|> abbreviationRel <|> abbreviationFun <|> abbreviationEq)
diff --git a/test/golden/abbr/parsing.golden b/test/golden/abbr/parsing.golden
index 21e4c60..ba3baaf 100644
--- a/test/golden/abbr/parsing.golden
+++ b/test/golden/abbr/parsing.golden
@@ -23,8 +23,8 @@
( NamedVar "y" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "x" ) :| []
)
@@ -104,8 +104,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "x" ) :| []
)
@@ -183,8 +183,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -242,8 +242,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -269,8 +269,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "notin" )
- ) []
+ ( Command "notin" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -284,8 +284,8 @@
( NamedVar "x" ) :| []
) Negative
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -342,8 +342,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -398,8 +398,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
diff --git a/test/golden/byRef/parsing.golden b/test/golden/byRef/parsing.golden
index e7e3287..89170e5 100644
--- a/test/golden/byRef/parsing.golden
+++ b/test/golden/byRef/parsing.golden
@@ -14,8 +14,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "a" ) :| []
)
@@ -39,8 +39,8 @@
( NamedVar "b" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "b" ) :| []
)
@@ -64,8 +64,8 @@
( NamedVar "c" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "c" ) :| []
)
@@ -101,8 +101,8 @@
( NamedVar "e" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "e" ) :| []
)
@@ -127,8 +127,8 @@
( NamedVar "d" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "d" ) :| []
)
@@ -156,8 +156,8 @@
( NamedVar "f" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "f" ) :| []
)
diff --git a/test/golden/calc/parsing.golden b/test/golden/calc/parsing.golden
index 89997b4..d30032b 100644
--- a/test/golden/calc/parsing.golden
+++ b/test/golden/calc/parsing.golden
@@ -14,8 +14,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "x" ) :| []
)
@@ -39,8 +39,8 @@
( NamedVar "z" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "z" ) :| []
)
@@ -64,8 +64,8 @@
( NamedVar "y" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -116,8 +116,8 @@
( NamedVar "y" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -140,8 +140,8 @@
( NamedVar "y" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -158,8 +158,8 @@
( NamedVar "y" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
diff --git a/test/golden/coord/parsing.golden b/test/golden/coord/parsing.golden
index a2b6657..ded174d 100644
--- a/test/golden/coord/parsing.golden
+++ b/test/golden/coord/parsing.golden
@@ -30,8 +30,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "x" ) :| []
)
@@ -63,8 +63,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "x" ) :| []
)
@@ -96,8 +96,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "x" ) :| []
)
@@ -139,8 +139,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "x" ) :| []
)
@@ -189,8 +189,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "x" ) :| []
)
@@ -264,8 +264,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "x" ) :| []
)
@@ -290,8 +290,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
diff --git a/test/golden/finite-set-terms/parsing.golden b/test/golden/finite-set-terms/parsing.golden
index e255c8d..2eb0147 100644
--- a/test/golden/finite-set-terms/parsing.golden
+++ b/test/golden/finite-set-terms/parsing.golden
@@ -15,8 +15,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "cons" )
@@ -44,8 +44,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -59,8 +59,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "X" ) :| []
)
@@ -110,8 +110,8 @@
] [] :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "unit" )
diff --git a/test/golden/formula/parsing.golden b/test/golden/formula/parsing.golden
index 4012bde..40a2d7a 100644
--- a/test/golden/formula/parsing.golden
+++ b/test/golden/formula/parsing.golden
@@ -19,8 +19,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "x" ) :| []
)
@@ -32,8 +32,8 @@
( NamedVar "y" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -63,8 +63,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -94,8 +94,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -113,8 +113,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "neq" )
- ) []
+ ( Command "neq" ) []
+ )
( ExprVar
( NamedVar "x" ) :| []
)
diff --git a/test/golden/geometry/parsing.golden b/test/golden/geometry/parsing.golden
index 1d067d0..553699b 100644
--- a/test/golden/geometry/parsing.golden
+++ b/test/golden/geometry/parsing.golden
@@ -243,8 +243,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "b" ) :| []
)
@@ -515,8 +515,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "neq" )
- ) []
+ ( Command "neq" ) []
+ )
( ExprVar
( NamedVar "b" ) :| []
)
@@ -589,8 +589,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "b" ) :| []
)
@@ -797,8 +797,8 @@
( NamedVar "u" ) :| []
) Positive
( RelationSymbol
- ( Command "neq" )
- ) []
+ ( Command "neq" ) []
+ )
( ExprVar
( NamedVar "v" ) :| []
)
diff --git a/test/golden/inductive/parsing.golden b/test/golden/inductive/parsing.golden
index 6d5c0e3..c338c69 100644
--- a/test/golden/inductive/parsing.golden
+++ b/test/golden/inductive/parsing.golden
@@ -19,8 +19,8 @@
( NamedVar "A" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "B" ) :| []
)
@@ -175,8 +175,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "emptyset" )
@@ -223,8 +223,8 @@
] [] :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "fin" )
@@ -246,8 +246,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "A" ) :| []
)
@@ -258,8 +258,8 @@
( NamedVar "B" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "fin" )
@@ -292,8 +292,8 @@
] :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "fin" )
@@ -344,8 +344,8 @@
( NamedVar "A" ) :| []
) Positive
( RelationSymbol
- ( Command "subseteq" )
- ) []
+ ( Command "subseteq" ) []
+ )
( ExprVar
( NamedVar "B" ) :| []
)
@@ -368,8 +368,8 @@
] :| []
) Positive
( RelationSymbol
- ( Command "subseteq" )
- ) []
+ ( Command "subseteq" ) []
+ )
( ExprOp
[ Just
( Command "fin" )
@@ -437,8 +437,8 @@
( NamedVar "w" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "R" ) :| []
)
@@ -450,8 +450,8 @@
( NamedVar "w" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "tracl" )
@@ -486,8 +486,8 @@
] :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "tracl" )
@@ -519,8 +519,8 @@
] :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "R" ) :| []
)
@@ -545,8 +545,8 @@
] :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "tracl" )
@@ -615,8 +615,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "fld" )
@@ -649,8 +649,8 @@
] :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "qrefltracl" )
@@ -685,8 +685,8 @@
] :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "qrefltracl" )
@@ -718,8 +718,8 @@
] :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "R" ) :| []
)
@@ -744,8 +744,8 @@
] :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "qrefltracl" )
@@ -803,8 +803,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "A" ) :| []
)
@@ -829,8 +829,8 @@
] :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "refltracl" )
@@ -870,8 +870,8 @@
] :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "refltracl" )
@@ -908,8 +908,8 @@
] :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "R" ) :| []
)
@@ -934,8 +934,8 @@
] :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "refltracl" )
@@ -992,8 +992,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "fld" )
@@ -1027,8 +1027,8 @@
] :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "pow" )
@@ -1056,8 +1056,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "acc" )
diff --git a/test/golden/no-reflexive-set/parsing.golden b/test/golden/no-reflexive-set/parsing.golden
index d81dabd..474ba40 100644
--- a/test/golden/no-reflexive-set/parsing.golden
+++ b/test/golden/no-reflexive-set/parsing.golden
@@ -33,8 +33,8 @@
( NamedVar "A" ) :| []
) Negative
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "A" ) :| []
)
diff --git a/test/golden/proofassume/parsing.golden b/test/golden/proofassume/parsing.golden
index bf249ed..a83bd13 100644
--- a/test/golden/proofassume/parsing.golden
+++ b/test/golden/proofassume/parsing.golden
@@ -15,8 +15,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -30,8 +30,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -55,8 +55,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -71,8 +71,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -99,8 +99,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -114,8 +114,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "b" ) :| []
)
@@ -130,8 +130,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -155,8 +155,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "b" ) :| []
)
@@ -171,8 +171,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -187,8 +187,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
diff --git a/test/golden/proofdefinefunction/parsing.golden b/test/golden/proofdefinefunction/parsing.golden
index c1ba1d0..2034cbc 100644
--- a/test/golden/proofdefinefunction/parsing.golden
+++ b/test/golden/proofdefinefunction/parsing.golden
@@ -71,8 +71,8 @@
( NamedVar "f" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "f" ) :| []
)
@@ -112,8 +112,8 @@
( NamedVar "f" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "f" ) :| []
)
@@ -138,8 +138,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -153,8 +153,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
diff --git a/test/golden/prooffix/parsing.golden b/test/golden/prooffix/parsing.golden
index 2702f25..d254e81 100644
--- a/test/golden/prooffix/parsing.golden
+++ b/test/golden/prooffix/parsing.golden
@@ -16,8 +16,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "x" ) :| []
)
@@ -43,8 +43,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "x" ) :| []
)
diff --git a/test/golden/relation-notation/parsing.golden b/test/golden/relation-notation/parsing.golden
index bccafe0..33f2808 100644
--- a/test/golden/relation-notation/parsing.golden
+++ b/test/golden/relation-notation/parsing.golden
@@ -18,7 +18,7 @@
( ExprVar
( NamedVar "R" )
)
- ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -35,7 +35,7 @@
( ExprVar
( NamedVar "R" )
)
- ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
diff --git a/test/golden/relparam/encoding tasks.golden b/test/golden/relparam/encoding tasks.golden
new file mode 100644
index 0000000..caaabdc
--- /dev/null
+++ b/test/golden/relparam/encoding tasks.golden
@@ -0,0 +1 @@
+fof(dummy_abbr_test_noun,conjecture,![Xx]:Xx=Xx). \ No newline at end of file
diff --git a/test/golden/relparam/generating tasks.golden b/test/golden/relparam/generating tasks.golden
new file mode 100644
index 0000000..6757991
--- /dev/null
+++ b/test/golden/relparam/generating tasks.golden
@@ -0,0 +1,25 @@
+[ Task
+ { taskDirectness = Direct
+ , taskHypotheses = []
+ , taskConjectureLabel = Marker "dummy_abbr_test_noun"
+ , taskConjecture = Quantified Universally
+ ( Scope
+ ( TermSymbol
+ ( SymbolPredicate
+ ( PredicateRelation
+ ( Symbol "=" )
+ )
+ )
+ [ TermVar
+ ( B
+ ( NamedVar "x" )
+ )
+ , TermVar
+ ( B
+ ( NamedVar "x" )
+ )
+ ]
+ )
+ )
+ }
+] \ No newline at end of file
diff --git a/test/golden/relparam/glossing.golden b/test/golden/relparam/glossing.golden
new file mode 100644
index 0000000..4d217d4
--- /dev/null
+++ b/test/golden/relparam/glossing.golden
@@ -0,0 +1,66 @@
+[ BlockAbbr
+ ( SourcePos
+ { sourceName = "test/examples/relparam.tex"
+ , sourceLine = Pos 2
+ , sourceColumn = Pos 1
+ }
+ )
+ ( Marker "equalparam" )
+ ( Abbreviation
+ ( SymbolPredicate
+ ( PredicateRelation
+ ( Command "EQUAL" )
+ )
+ )
+ ( Scope
+ ( TermSymbol
+ ( SymbolPredicate
+ ( PredicateRelation
+ ( Symbol "=" )
+ )
+ )
+ [ TermVar
+ ( B 1 )
+ , TermVar
+ ( B 2 )
+ ]
+ )
+ )
+ )
+, BlockLemma
+ ( SourcePos
+ { sourceName = "test/examples/relparam.tex"
+ , sourceLine = Pos 6
+ , sourceColumn = Pos 1
+ }
+ )
+ ( Marker "dummy_abbr_test_noun" )
+ ( Lemma []
+ ( Quantified Universally
+ ( Scope
+ ( TermSymbol
+ ( SymbolPredicate
+ ( PredicateRelation
+ ( Command "EQUAL" )
+ )
+ )
+ [ TermVar
+ ( F
+ ( TermVar
+ ( NamedVar "y" )
+ )
+ )
+ , TermVar
+ ( B
+ ( NamedVar "x" )
+ )
+ , TermVar
+ ( B
+ ( NamedVar "x" )
+ )
+ ]
+ )
+ )
+ )
+ )
+] \ No newline at end of file
diff --git a/test/golden/relparam/parsing.golden b/test/golden/relparam/parsing.golden
new file mode 100644
index 0000000..78b0adb
--- /dev/null
+++ b/test/golden/relparam/parsing.golden
@@ -0,0 +1,61 @@
+[ BlockAbbr
+ ( SourcePos
+ { sourceName = "test/examples/relparam.tex"
+ , sourceLine = Pos 2
+ , sourceColumn = Pos 1
+ }
+ )
+ ( Marker "equalparam" )
+ ( AbbreviationRel
+ ( NamedVar "x" )
+ ( Command "EQUAL" )
+ [ NamedVar "y" ]
+ ( NamedVar "z" )
+ ( StmtFormula
+ ( FormulaChain
+ ( ChainBase
+ ( ExprVar
+ ( NamedVar "x" ) :| []
+ ) Positive
+ ( RelationSymbol
+ ( Symbol "=" ) []
+ )
+ ( ExprVar
+ ( NamedVar "z" ) :| []
+ )
+ )
+ )
+ )
+ )
+, BlockLemma
+ ( SourcePos
+ { sourceName = "test/examples/relparam.tex"
+ , sourceLine = Pos 6
+ , sourceColumn = Pos 1
+ }
+ )
+ ( Marker "dummy_abbr_test_noun" )
+ ( Lemma []
+ ( SymbolicQuantified Universally
+ ( NamedVar "x" :| [] ) Unbounded Nothing
+ ( StmtFormula
+ ( FormulaChain
+ ( ChainBase
+ ( ExprVar
+ ( NamedVar "x" ) :| []
+ ) Positive
+ ( RelationSymbol
+ ( Command "EQUAL" )
+ [ ExprVar
+ ( NamedVar "y" )
+ ]
+ )
+ ( ExprVar
+ ( NamedVar "x" ) :| []
+ )
+ )
+ )
+ )
+ )
+ )
+] \ No newline at end of file
diff --git a/test/golden/relparam/verification.golden b/test/golden/relparam/verification.golden
new file mode 100644
index 0000000..69b9873
--- /dev/null
+++ b/test/golden/relparam/verification.golden
@@ -0,0 +1 @@
+VerificationSuccess \ No newline at end of file
diff --git a/test/golden/replace/parsing.golden b/test/golden/replace/parsing.golden
index 241ca01..b3b8e3c 100644
--- a/test/golden/replace/parsing.golden
+++ b/test/golden/replace/parsing.golden
@@ -15,8 +15,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Just
( Command "cons" )
@@ -44,8 +44,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "y" ) :| []
)
@@ -59,8 +59,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "X" ) :| []
)
@@ -175,8 +175,8 @@
] :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Nothing
, Just
@@ -228,8 +228,8 @@
( NamedVar "y" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprFiniteSet
( ExprVar
( NamedVar "x" ) :| []
@@ -265,8 +265,8 @@
] :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprReplace
( ExprOp
[ Just
diff --git a/test/golden/russell/parsing.golden b/test/golden/russell/parsing.golden
index 9f5dc37..c674f24 100644
--- a/test/golden/russell/parsing.golden
+++ b/test/golden/russell/parsing.golden
@@ -56,8 +56,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "V" ) :| []
)
@@ -146,8 +146,8 @@
( NamedVar "x" ) :| []
) Negative
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "x" ) :| []
)
@@ -164,8 +164,8 @@
( NamedVar "R" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "R" ) :| []
)
@@ -179,8 +179,8 @@
( NamedVar "R" ) :| []
) Negative
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "R" ) :| []
)
diff --git a/test/golden/separation/parsing.golden b/test/golden/separation/parsing.golden
index 132f408..d8fc79d 100644
--- a/test/golden/separation/parsing.golden
+++ b/test/golden/separation/parsing.golden
@@ -14,8 +14,8 @@
( NamedVar "X" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprSep
( NamedVar "x" )
( ExprVar
@@ -28,8 +28,8 @@
( NamedVar "x" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "x" ) :| []
)
diff --git a/test/golden/union/parsing.golden b/test/golden/union/parsing.golden
index 3ccdc08..0949a0b 100644
--- a/test/golden/union/parsing.golden
+++ b/test/golden/union/parsing.golden
@@ -18,8 +18,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "A" ) :| []
)
@@ -33,8 +33,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "B" ) :| []
)
@@ -51,8 +51,8 @@
( NamedVar "A" ) :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprVar
( NamedVar "B" ) :| []
)
@@ -95,8 +95,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Nothing
, Just
@@ -120,8 +120,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "A" ) :| []
)
@@ -135,8 +135,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprVar
( NamedVar "B" ) :| []
)
@@ -171,8 +171,8 @@
] :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprOp
[ Nothing
, Just
@@ -223,8 +223,8 @@
] :| []
) Positive
( RelationSymbol
- ( Symbol "=" )
- ) []
+ ( Symbol "=" ) []
+ )
( ExprOp
[ Nothing
, Just
@@ -268,8 +268,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Nothing
, Just
@@ -301,8 +301,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Nothing
, Just
@@ -340,8 +340,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Nothing
, Just
@@ -373,8 +373,8 @@
( NamedVar "a" ) :| []
) Positive
( RelationSymbol
- ( Command "in" )
- ) []
+ ( Command "in" ) []
+ )
( ExprOp
[ Nothing
, Just