Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Source file intf_algebra.ml
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168(** Basic algebraic structures. The [_no_std] variants do not require
defining the contents of [Intf_std.Std]. *)openIntf_std(** Abelian group *)moduletypeAbelian_group=sigtypetvalzero:tvaladd:t->t->tvalneg:t->tendmoduletypeAbelian_group_std=sigincludeAbelian_groupincludeStdwithtypet:=tend(** Monoid *)moduletypeMonoid=sigtypetvalone:tvalmul:t->t->tendmoduletypeMonoid_std=sigincludeMonoidincludeStdwithtypet:=tend(** Ring *)moduletypeRing=sigincludeAbelian_groupincludeMonoidwithtypet:=t(* [sub x y] = [add x (neg y)] *)valsub:t->t->tvalof_int:int->tendmoduletypeRing_std=sigincludeRingincludeStdwithtypet:=tend(** Field, assuming the ring is commutative. *)moduletypeField=sigincludeRingvaldiv:t->t->tend(** Field, assuming the ring is commutative. *)moduletypeField_std=sigincludeFieldincludeStdwithtypet:=tend(** Modules over a ring [R]. *)moduletypeModule=sigmoduleR:RingtypetincludeAbelian_groupwithtypet:=tvalsmul:R.t->t->tend(** Module over a ring [R]. *)moduletypeModule_std=sigmoduleR:Ring_stdtypetincludeAbelian_group_stdwithtypet:=tvalsmul:R.t->t->tend(** Algebra over a ring *)moduletypeAlgebra=sigincludeModule(** [mul] should distribute over addition. Not necessarily
associative, nor commutative, nor unital. *)valmul:t->t->tend(** Free module *)moduletypeFree_module=sigincludeModuletypebasis(** "Dirac" delta *)valdelta:basis->t(** Project the coefficient corresponding to a basis vector. *)valeval:t->basis->R.t(** [bind] = canonical, "multilinear" extension *)valbind:t->(basis->t)->t(** [of_list [(x1,r1);...;(xn,rn)]] is equivalent to
add (smul r1 (delta x1))
(add (smul r2 (delta x2))
(add ... (smul rn (delta xn)))) *)valof_list:(basis*R.t)list->t(** Fold over the elements of a vector. Order is not specified. *)valfold:(basis->R.t->'a->'a)->t->'a->'aendmoduletypeFree_module_std=sigincludeModule_stdmoduleBasis:Stdtypebasis=Basis.t(** "Dirac" delta *)valdelta:basis->t(** Project the coefficient corresponding to a basis vector. *)valeval:t->basis->R.t(** [bind] = canonical, "multilinear" extension *)valbind:t->(basis->t)->t(** [of_list [(x1,r1);...;(xn,rn)]] is equivalent to
add (smul r1 (delta x1))
(add (smul r2 (delta x2))
(add ... (smul rn (delta xn)))) *)valof_list:(basis*R.t)list->t(** Fold over the elements of a vector. Order is not specified. *)valfold:(basis->R.t->'a->'a)->t->'a->'aendmoduletypeFinitely_generated_free_module=sigincludeFree_modulevalgenerators:basislist(** List coefficients in the order of [generators] *)valcoefficients:t->R.tlistend(** Partial order. *)moduletypePartial_order=sigtypetvalequal:t->t->boolvallt:t->t->boolend