sig
type lname = LName of string
module RowLabel :
sig
type t
val compare : CoreAlgebra.RowLabel.t -> CoreAlgebra.RowLabel.t -> int
val export : CoreAlgebra.RowLabel.t -> CoreAlgebra.lname
val import : CoreAlgebra.lname -> CoreAlgebra.RowLabel.t
end
type 'a term =
RowCons of CoreAlgebra.RowLabel.t * 'a * 'a
| RowUniform of 'a
| App of 'a * 'a
| Var of 'a
type 'a arterm =
TVariable of 'a
| TTerm of 'a CoreAlgebra.arterm CoreAlgebra.term
val iter : ('a -> unit) -> 'a CoreAlgebra.term -> unit
val map : ('a -> 'b) -> 'a CoreAlgebra.term -> 'b CoreAlgebra.term
val fold : ('a -> 'b -> 'b) -> 'a CoreAlgebra.term -> 'b -> 'b
val fold2 :
('a -> 'b -> 'c -> 'c) ->
'a CoreAlgebra.term -> 'b CoreAlgebra.term -> 'c -> 'c
val change_arterm_vars :
('a * 'a) list -> 'a CoreAlgebra.arterm -> 'a CoreAlgebra.arterm
val app :
'a CoreAlgebra.arterm ->
'a CoreAlgebra.arterm list -> 'a CoreAlgebra.arterm
val uniform : 'a CoreAlgebra.arterm -> 'a CoreAlgebra.arterm
val rowcons :
CoreAlgebra.lname ->
'a CoreAlgebra.arterm -> 'a CoreAlgebra.arterm -> 'a CoreAlgebra.arterm
val n_rowcons :
(CoreAlgebra.lname * 'a CoreAlgebra.arterm) list ->
'a CoreAlgebra.arterm -> 'a CoreAlgebra.arterm
end