[英]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
環解算器至少有兩個前端: 1和2 ,你可以用類似的方式為幺半群解算器寫一個前端。
您是否考慮過使用具有定義關聯性的差異列表?
也檢查這個帖子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.