From 5bbbbc976d25859082014f3720b82bcd2d05a2f0 Mon Sep 17 00:00:00 2001 From: Marcos Magueta Date: Fri, 6 Mar 2026 04:10:31 -0300 Subject: encode relations on module base --- lib/conventions.ml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 lib/conventions.ml (limited to 'lib/conventions.ml') diff --git a/lib/conventions.ml b/lib/conventions.ml new file mode 100644 index 0000000..74f6cc3 --- /dev/null +++ b/lib/conventions.ml @@ -0,0 +1,26 @@ +module Hash = struct + type t = Interop.Sha256.t + let hash_text text = Interop.Sha256.compute_hash (Bytes.of_string text) + let compare = String.compare +end + +module Name = struct + type t = string +end + +module Cardinality = struct + type t = Finite of int | AlephZero | Continuum +end + +module AbstractValue = struct + module StringMap = Map.Make(String) + type t = { + fields: string StringMap.t; + } + let hash_text value = + let folder (name: string) (value: string) (acc: Hash.t) = + Hash.(hash_text (acc ^ hash_text name ^ hash_text value)) + in StringMap.fold folder value.fields "" + let compare a b = + StringMap.compare String.compare a.fields b.fields +end \ No newline at end of file -- cgit v1.2.3