Skip to content

Commit 46b712b

Browse files
committed
cleanup
1 parent 0c60745 commit 46b712b

File tree

2 files changed

+20
-27
lines changed

2 files changed

+20
-27
lines changed

prover/drivers/coq-driver.md

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -28,36 +28,32 @@ module DRIVER-COQ
2828
imports PROVER-CORE-SYNTAX
2929
imports STRATEGIES-EXPORTED-SYNTAX
3030
31+
// Add sort "Term" to declarations
3132
rule <k> CS:CoqSentence CSs:CoqSentences => CS ~> CSs ... </k>
3233
<declarations> ( .Bag
3334
=> <declaration> sort StringToSort("Term") </declaration>
3435
) ...
3536
</declarations>
3637
37-
rule <k> Definition ID BINDERs : TYPE := TERM .
38-
=> .K
39-
...
40-
</k>
41-
<declarations> ( .Bag
42-
=> <declaration> symbol CoqIdentToSymbol(ID)(CoqBindersToSorts(BINDERs)) : CoqTermToSort(ID) </declaration>
43-
) ...
44-
</declarations>
45-
38+
// Add symbol (of sort Term) and equality axiom corresponding to each definition
39+
rule Definition ID BINDERs : TYPE := TERM . => Definition ID := TERM .
4640
rule <k> Definition ID := TERM .
4741
=> .K
4842
...
4943
</k>
5044
<declarations> ( .Bag
51-
=> <declaration> axiom \equals(CoqIdentToSymbol(ID), CoqTermToPattern(TERM)) </declaration>
45+
=> <declaration> symbol CoqIdentToSymbol(ID)(.Sorts) : StringToSort("Term") </declaration>
46+
<declaration> axiom \equals(CoqIdentToSymbol(ID), CoqTermToPattern(TERM)) </declaration>
5247
) ...
5348
</declarations>
5449
50+
// Translate inductive cases
5551
rule <k> Inductive ID BINDERs : TERM := .CoqIndCases .
5652
=> .K
5753
...
5854
</k>
5955
<declarations> ( .Bag
60-
=> <declaration> symbol CoqIdentToSymbol(ID)(CoqBindersToSorts(BINDERs)) : CoqTermToSort(ID) </declaration>
56+
=> <declaration> symbol CoqIdentToSymbol(ID)(.Sorts) : StringToSort("Term") </declaration>
6157
) ...
6258
</declarations>
6359
@@ -66,20 +62,12 @@ module DRIVER-COQ
6662
...
6763
</k>
6864
<declarations> ( .Bag
69-
=> <declaration> symbol CoqIdentToSymbol(IDC)(CoqBindersToSorts(BINDERCs)) : CoqTermToSort(ID) </declaration>
65+
=> <declaration> symbol CoqIdentToSymbol(IDC)(.Sorts) : StringToSort("Term") </declaration>
7066
<declaration> axiom \type(CoqIdentToSymbol(IDC)(.Patterns), CoqTermToPattern(TERMC)) </declaration>
7167
) ...
7268
</declarations>
7369
74-
syntax Sorts ::= CoqBindersToSorts(CoqBinders) [function]
75-
rule CoqBindersToSorts(.CoqBinders) => .Sorts
76-
rule CoqBindersToSorts(NAME:CoqName BINDERs) => StringToSort("Term"), CoqBindersToSorts(BINDERs)
77-
rule CoqBindersToSorts((NAMES : TYPE) BINDERs) => CoqNamesToSorts(NAMES) ++Sorts CoqBindersToSorts(BINDERs)
78-
79-
syntax Sorts ::= CoqNamesToSorts(CoqNames) [function]
80-
rule CoqNamesToSorts(.CoqNames) => .Sorts
81-
rule CoqNamesToSorts(NAME:CoqName NAMEs) => StringToSort("Term"), CoqNamesToSorts(NAMEs)
82-
70+
// Converting Term to Pattern
8371
syntax Pattern ::= CoqTermToPattern(CoqTerm) [function]
8472
rule CoqTermToPattern(UN:UpperName) => CoqIdentToSymbol(UN)
8573
rule CoqTermToPattern(LN:LowerName) => CoqIdentToSymbol(LN)
@@ -127,7 +115,7 @@ module DRIVER-COQ
127115
rule CoqPatternToPatterns(ID:CoqQualID) => CoqIdentToSymbol(ID), .Patterns
128116
rule CoqPatternToPatterns(ID:CoqQualID P:CoqPattern) => CoqIdentToSymbol(ID) ++Patterns CoqPatternToPatterns(P)
129117
130-
// Get binders from MultPattern
118+
// Get binders from MultPattern
131119
syntax Patterns ::= CoqMultPatternToBinders(CoqMultPattern) [function]
132120
syntax Patterns ::= CoqPatternToBinders(CoqMultPattern) [function]
133121
rule CoqMultPatternToBinders(ID:CoqQualID) => .Patterns

prover/lang/coq-lang.md

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,7 @@ module COQ
2727
// Seralize to String:
2828
syntax String ::= CoqNameToString(CoqName) [function, functional, hook(STRING.token2string)]
2929
30-
// Converting between Sorts:
31-
syntax Sort ::= CoqTermToSort(CoqTerm) [function]
32-
rule CoqTermToSort(SORT:UpperName) => StringToSort("Term")
33-
rule CoqTermToSort(SORT:LowerName) => StringToSort("Term")
34-
30+
// Sort conversions
3531
syntax Symbol ::= CoqIdentToSymbol(CoqIdent) [function]
3632
rule CoqIdentToSymbol(IDENT:UpperName) => IDENT
3733
rule CoqIdentToSymbol(IDENT:LowerName) => IDENT
@@ -42,6 +38,15 @@ module COQ
4238
syntax VariableName ::= CoqNameToVariableName(CoqName) [function]
4339
rule CoqNameToVariableName(NAME) => StringToVariableName(CoqNameToString(NAME))
4440
41+
syntax Sorts ::= CoqBindersToSorts(CoqBinders) [function]
42+
rule CoqBindersToSorts(.CoqBinders) => .Sorts
43+
rule CoqBindersToSorts(NAME:CoqName BINDERs) => StringToSort("Term"), CoqBindersToSorts(BINDERs)
44+
rule CoqBindersToSorts((NAMES : TYPE) BINDERs) => CoqNamesToSorts(NAMES) ++Sorts CoqBindersToSorts(BINDERs)
45+
46+
syntax Sorts ::= CoqNamesToSorts(CoqNames) [function]
47+
rule CoqNamesToSorts(.CoqNames) => .Sorts
48+
rule CoqNamesToSorts(NAME:CoqName NAMEs) => StringToSort("Term"), CoqNamesToSorts(NAMEs)
49+
4550
// Terms
4651
syntax CoqTerm ::= "fun" CoqBinders "=>" CoqTerm
4752
| "fix" CoqFixBodies

0 commit comments

Comments
 (0)