{
  "title": "Set",
  "level": "Low",
  "elements": [
    {
      "pattern": "",
      "module": "Set",
      "name": "t",
      "type": "type",
      "signature": "type +'a t = ( 'a, bool ) Map.t",
      "description": "",
      "examples": []
    },
    {
      "pattern": "Creating an empty set",
      "module": "Set",
      "name": "empty",
      "type": "value",
      "signature": "val empty : 'a t",
      "description": "",
      "examples": []
    },
    {
      "pattern": "",
      "module": "Set",
      "name": "is_valid",
      "type": "function",
      "signature": "val is_valid : _ t -> bool",
      "description": "",
      "examples": []
    },
    {
      "pattern": "Checking if an element is in the set",
      "module": "Set",
      "name": "mem",
      "type": "function",
      "signature": "val mem : 'a -> 'a t -> bool",
      "description": "",
      "examples": []
    },
    {
      "pattern": "Adding an element to the set",
      "module": "Set",
      "name": "add",
      "type": "function",
      "signature": "val add : 'a -> 'a t -> 'a t",
      "description": "",
      "examples": []
    },
    {
      "pattern": "Removing an element from the set",
      "module": "Set",
      "name": "remove",
      "type": "function",
      "signature": "val remove : 'a -> 'a t -> 'a t",
      "description": "",
      "examples": []
    },
    {
      "pattern": "Checking if one set is a subset of another",
      "module": "Set",
      "name": "subset",
      "type": "function",
      "signature": "val subset : 'a t -> 'a t -> bool",
      "description": "",
      "examples": []
    },
    {
      "pattern": "Union of two sets",
      "module": "Set",
      "name": "union",
      "type": "function",
      "signature": "val union : 'a t -> 'a t -> 'a t",
      "description": "",
      "examples": []
    },
    {
      "pattern": "Complement of a set",
      "module": "Set",
      "name": "complement",
      "type": "function",
      "signature": "val complement : 'a t -> 'a t",
      "description": "",
      "examples": []
    },
    {
      "pattern": "Intersection of two sets",
      "module": "Set",
      "name": "inter",
      "type": "function",
      "signature": "val inter : 'a t -> 'a t -> 'a t",
      "description": "",
      "examples": []
    },
    {
      "pattern": "Difference of two sets",
      "module": "Set",
      "name": "diff",
      "type": "function",
      "signature": "val diff : 'a t -> 'a t -> 'a t",
      "description": "",
      "examples": []
    },
    {
      "pattern": "Union of two sets",
      "module": "Set",
      "name": "( ++ )",
      "type": "function",
      "signature": "val (++) : 'a t -> 'a t -> 'a t",
      "description": "",
      "examples": []
    },
    {
      "pattern": "Difference of two sets",
      "module": "Set",
      "name": "( -- )",
      "type": "function",
      "signature": "val (--) : 'a t -> 'a t -> 'a t",
      "description": "",
      "examples": []
    },
    {
      "pattern": "Creating a set from a list",
      "module": "Set",
      "name": "of_list",
      "type": "function",
      "signature": "val of_list : 'a list -> 'a t",
      "description": "",
      "examples": []
    },
    {
      "pattern": "Converting a set to a list",
      "module": "Set",
      "name": "to_list",
      "type": "function",
      "signature": "val to_list : 'a t -> 'a list",
      "description": "",
      "examples": []
    },
    {
      "pattern": "",
      "module": "Set",
      "name": "pp",
      "type": "function",
      "signature": "val pp : 'a printer -> 'a t printer",
      "description": "",
      "examples": []
    }
  ],
  "metadata": {
    "signatures": [
      "type +'a t = ( 'a, bool ) Map.t",
      "val empty : 'a t",
      "val is_valid : _ t -> bool",
      "val is_empty : _ t -> bool",
      "val mem : 'a -> 'a t -> bool",
      "val add : 'a -> 'a t -> 'a t",
      "val remove : 'a -> 'a t -> 'a t",
      "val subset : 'a t -> 'a t -> bool",
      "val union : 'a t -> 'a t -> 'a t",
      "val complement : 'a t -> 'a t",
      "val inter : 'a t -> 'a t -> 'a t",
      "val diff : 'a t -> 'a t -> 'a t",
      "val (++) : 'a t -> 'a t -> 'a t",
      "val (--) : 'a t -> 'a t -> 'a t",
      "val of_list : 'a list -> 'a t",
      "val to_list : 'a t -> 'a list",
      "val pp : 'a printer -> 'a t printer"
    ],
    "source": "https://docs.imandra.ai/imandra-docs/odoc/imandra-base/Imandra_prelude/Set/index.html"
  }
}