maude: run.sx search command + result-sort output (254 total)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 36s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 36s
run.sx now handles 'search START =>* GOAL .' (reports the witness path) and mau/run-pretty prints Maude-style 'result SORT: TERM' using least-sort inference. searchpath.sx exposes mau/search-path-terms (term-level entry). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
|
||||
(define
|
||||
mrn-peano
|
||||
"fmod PEANO is\n sort Nat .\n op 0 : -> Nat .\n op s_ : Nat -> Nat .\n op _+_ : Nat Nat -> Nat .\n op _*_ : Nat Nat -> Nat .\n vars X Y : Nat .\n eq 0 + Y = Y .\n eq s X + Y = s (X + Y) .\n eq 0 * Y = 0 .\n eq s X * Y = Y + (X * Y) .\nendfm\nred s 0 + s s 0 .\nred 0 + 0 .\nreduce in PEANO : s s 0 * s s 0 .")
|
||||
"fmod PEANO is\n sorts Nat NzNat .\n subsort NzNat < Nat .\n op 0 : -> Nat .\n op s_ : Nat -> NzNat .\n op _+_ : Nat Nat -> Nat .\n op _*_ : Nat Nat -> Nat .\n vars X Y : Nat .\n eq 0 + Y = Y .\n eq s X + Y = s (X + Y) .\n eq 0 * Y = 0 .\n eq s X * Y = Y + (X * Y) .\nendfm\nred s 0 + s s 0 .\nred 0 + 0 .\nreduce in PEANO : s s 0 * s s 0 .")
|
||||
|
||||
(mrn-check!
|
||||
"peano-results"
|
||||
@@ -32,6 +32,15 @@
|
||||
(get (first (mau/run-program mrn-peano)) :cmd)
|
||||
"reduce")
|
||||
|
||||
;; least-sort annotated output: s_ : Nat -> NzNat, so s(...) is NzNat
|
||||
(mrn-check!
|
||||
"peano-pretty"
|
||||
(mau/run-pretty mrn-peano)
|
||||
(list
|
||||
"result NzNat: (s (s (s 0)))"
|
||||
"result Nat: 0"
|
||||
"result NzNat: (s (s (s (s 0))))"))
|
||||
|
||||
(define
|
||||
mrn-coins
|
||||
"mod COINS is\n sort M .\n op nil : -> M .\n op q : -> M .\n op d : -> M .\n op _;_ : M M -> M [assoc comm id: nil] .\n rl [change] : q ; q ; q ; q => d .\nendm\nrew q ; q ; q ; q ; q .\nrewrite q ; q ; q ; q ; q ; q ; q ; q .")
|
||||
@@ -43,6 +52,24 @@
|
||||
(get (first (mau/run-program mrn-coins)) :cmd)
|
||||
"rewrite")
|
||||
|
||||
;; search command
|
||||
(define
|
||||
mrn-ndet
|
||||
"mod NDET is\n sort S .\n ops a b c goal : -> S .\n rl [r1] : a => b .\n rl [r2] : a => c .\n rl [r3] : c => goal .\nendm\nsearch a =>* goal .\nsearch a =>* b .\nsearch b =>* goal .")
|
||||
|
||||
(mrn-check!
|
||||
"search-results"
|
||||
(mau/run mrn-ndet)
|
||||
(list "a => c => goal" "a => b" "no solution"))
|
||||
(mrn-check!
|
||||
"search-cmd-kind"
|
||||
(get (first (mau/run-program mrn-ndet)) :cmd)
|
||||
"search")
|
||||
(mrn-check!
|
||||
"search-pretty"
|
||||
(first (mau/run-pretty mrn-ndet))
|
||||
"search: a => c => goal")
|
||||
|
||||
;; module-only (no commands) runs to an empty result list
|
||||
(mrn-check!
|
||||
"no-commands"
|
||||
|
||||
Reference in New Issue
Block a user