Free monoid over a given alphabet #
Main definitions #
FreeMonoid α: free monoid over alphabetα; defined as a synonym forList αwith multiplication given by(++).FreeMonoid.of: embeddingα → FreeMonoid αsending each elementxto[x];FreeMonoid.lift: natural equivalence betweenα → MandFreeMonoid α →* MFreeMonoid.map: embedding ofα → βintoFreeMonoid α →* FreeMonoid βgiven byList.map.
Equations
- FreeAddMonoid.instDecidableEqFreeAddMonoid = instDecidableEqList
Equations
- FreeMonoid.instDecidableEqFreeMonoid = instDecidableEqList
The identity equivalence between FreeAddMonoid α and List α.
Equations
- FreeAddMonoid.toList = Equiv.refl (FreeAddMonoid α)
Instances For
The identity equivalence between FreeMonoid α and List α.
Equations
- FreeMonoid.toList = Equiv.refl (FreeMonoid α)
Instances For
The identity equivalence between List α and FreeAddMonoid α.
Equations
- FreeAddMonoid.ofList = Equiv.refl (List α)
Instances For
The identity equivalence between List α and FreeMonoid α.
Equations
- FreeMonoid.ofList = Equiv.refl (List α)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- FreeAddMonoid.instInhabitedFreeAddMonoid = { default := 0 }
Equations
- FreeMonoid.instInhabitedFreeMonoid = { default := 1 }
Embeds an element of α into FreeAddMonoid α as a singleton list.
Equations
- FreeAddMonoid.of x = ↑FreeAddMonoid.ofList [x]
Instances For
Embeds an element of α into FreeMonoid α as a singleton list.
Equations
- FreeMonoid.of x = ↑FreeMonoid.ofList [x]
Instances For
Recursor for FreeAddMonoid using 0 and
FreeAddMonoid.of x + xs instead of [] and x :: xs.
Equations
- FreeAddMonoid.recOn xs h0 ih = List.rec h0 ih xs
Instances For
Recursor for FreeMonoid using 1 and FreeMonoid.of x * xs instead of [] and x :: xs.
Equations
- FreeMonoid.recOn xs h0 ih = List.rec h0 ih xs
Instances For
A version of List.casesOn for FreeAddMonoid using 0 and
FreeAddMonoid.of x + xs instead of [] and x :: xs.
Equations
- FreeAddMonoid.casesOn xs h0 ih = List.casesOn xs h0 ih
Instances For
A version of List.cases_on for FreeMonoid using 1 and FreeMonoid.of x * xs instead of
[] and x :: xs.
Equations
- FreeMonoid.casesOn xs h0 ih = List.casesOn xs h0 ih
Instances For
A variant of List.sum that has [x].sum = x true definitionally.
The purpose is to make FreeAddMonoid.lift_eval_of true by rfl.
Equations
- FreeAddMonoid.sumAux x = FreeAddMonoid.sumAux.match_1 (fun x => M) x (fun _ => 0) fun x xs => List.foldl (fun x x_1 => x + x_1) x xs
Instances For
Equations
- FreeAddMonoid.sumAux.match_1 motive x h_1 h_2 = List.casesOn x (h_1 ()) fun head tail => h_2 head tail
Instances For
A variant of List.prod that has [x].prod = x true definitionally.
The purpose is to make FreeMonoid.lift_eval_of true by rfl.
Equations
- FreeMonoid.prodAux x = match x with | [] => 1 | x :: xs => List.foldl (fun x x_1 => x * x_1) x xs
Instances For
Equations
- FreeAddMonoid.sumAux_eq.match_1 motive x h_1 h_2 = List.casesOn x (h_1 ()) fun head tail => h_2 head tail
Instances For
Equivalence between maps α → A and additive monoid homomorphisms
FreeAddMonoid α →+ A.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equivalence between maps α → M and monoid homomorphisms FreeMonoid α →* M.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Define an additive action of FreeAddMonoid α on β.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Define a multiplicative action of FreeMonoid α on β.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The unique additive monoid homomorphism FreeAddMonoid α →+ FreeAddMonoid β
that sends each of x to of (f x).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The unique monoid homomorphism FreeMonoid α →* FreeMonoid β that sends
each of x to of (f x).
Equations
- One or more equations did not get rendered due to their size.