Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 40s
lib/maude/pretty.sx — mau/term->maude renders internal prefix terms back in Maude mixfix syntax driven by op forms; mau/red->maude / mau/rew->maude reduce-then-render. Output now reads as idiomatic Maude. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
51 lines
1.7 KiB
Plaintext
51 lines
1.7 KiB
Plaintext
;; lib/maude/tests/pretty.sx — mixfix surface-syntax printer.
|
|
|
|
(define mpp-pass 0)
|
|
(define mpp-fail 0)
|
|
(define mpp-failures (list))
|
|
|
|
(define
|
|
mpp-check!
|
|
(fn
|
|
(name got expected)
|
|
(if
|
|
(= got expected)
|
|
(set! mpp-pass (+ mpp-pass 1))
|
|
(do
|
|
(set! mpp-fail (+ mpp-fail 1))
|
|
(append!
|
|
mpp-failures
|
|
(str name " expected: " expected " got: " got))))))
|
|
|
|
(define
|
|
mpp-m
|
|
(mau/parse-module
|
|
"fmod PEANO is\n sort Nat .\n op 0 : -> Nat .\n op s_ : Nat -> Nat .\n op _+_ : Nat Nat -> Nat .\n op _! : Nat -> Nat .\n op f : Nat Nat -> Nat .\n vars X Y : Nat .\n eq 0 + Y = Y .\n eq s X + Y = s (X + Y) .\nendfm"))
|
|
|
|
(define
|
|
mpp-render
|
|
(fn (src) (mau/term->maude mpp-m (mau/parse-term-in mpp-m src))))
|
|
|
|
(mpp-check! "const" (mpp-render "0") "0")
|
|
(mpp-check! "var" (mau/term->maude mpp-m (mau/var "X" "Nat")) "X")
|
|
(mpp-check! "prefix" (mpp-render "s 0") "(s 0)")
|
|
(mpp-check! "infix" (mpp-render "X + Y") "(X + Y)")
|
|
(mpp-check! "nested" (mpp-render "s X + Y") "((s X) + Y)")
|
|
(mpp-check! "paren" (mpp-render "s (X + Y)") "(s (X + Y))")
|
|
;; postfix: built directly (the parser does not produce postfix applications)
|
|
(mpp-check!
|
|
"postfix"
|
|
(mau/term->maude mpp-m (mau/app "_!" (list (mau/var "X" "Nat"))))
|
|
"(X !)")
|
|
(mpp-check! "funcall" (mpp-render "f(0, s 0)") "f(0, (s 0))")
|
|
(mpp-check! "prefix-form-infix" (mpp-render "_+_(0, 0)") "(0 + 0)")
|
|
|
|
;; reduce then render in surface syntax
|
|
(mpp-check!
|
|
"red-surface"
|
|
(mau/red->maude mpp-m "s 0 + s s 0")
|
|
"(s (s (s 0)))")
|
|
(mpp-check! "red-zero" (mau/red->maude mpp-m "0 + 0") "0")
|
|
|
|
(define mau-pretty-tests-run! (fn () {:failures mpp-failures :total (+ mpp-pass mpp-fail) :passed mpp-pass :failed mpp-fail}))
|