簡體   English   中英

關於如何使用Agda標准庫幺半群解算器的示例

[英]An example on how to use Agda Standard Library monoid solver

我正在開發一個具有很多無聊列表級聯等式的代碼,所以我確實想要使用一個幺半群解算器。 我知道模塊Algebra.Monoid-solver實現了一個幺半群解算器,但是我找不到任何關於如何使用它的例子。

有人可以使用stdlib幺半群解算器提供快速示例嗎?

最好,

這是一個簡單的例子:

open import Relation.Binary.PropositionalEquality
open import Data.List
open import Data.List.Properties
open List-solver renaming (nil to :[]; _⊕_ to _:++_; _⊜_ to _:≡_)

assoc : {A : Set} (xs ys zs : List A) -> xs ++ (ys ++ zs) ≡ (xs ++ ys) ++ zs
assoc = solve 3 (λ xs ys zs -> xs :++ (ys :++ zs) :≡ (xs :++ ys) :++ zs) refl

Agda可以部分推斷類型簽名:

assoc : {A : Set} (xs ys zs : List A) -> _
assoc = solve 3 (λ xs ys zs -> xs :++ (ys :++ zs) :≡ (xs :++ ys) :++ zs) refl

環解算器至少有兩個前端: 12 ,你可以用類似的方式為幺半群解算器寫一個前端。

您是否考慮過使用具有定義關聯性的差異列表?

也檢查這個帖子。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM