mcard-js 2.1.12 → 2.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (362) hide show
  1. package/README.md +14 -0
  2. package/dist/hash/HashValidator.d.ts +14 -0
  3. package/dist/hash/HashValidator.d.ts.map +1 -0
  4. package/dist/hash/HashValidator.js +57 -0
  5. package/dist/hash/HashValidator.js.map +1 -0
  6. package/dist/index.d.ts +29 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +38 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/model/CardCollection.d.ts +92 -0
  11. package/dist/model/CardCollection.d.ts.map +1 -0
  12. package/dist/model/CardCollection.js +217 -0
  13. package/dist/model/CardCollection.js.map +1 -0
  14. package/dist/model/ContentTypeInterpreter.d.ts +23 -0
  15. package/dist/model/ContentTypeInterpreter.d.ts.map +1 -0
  16. package/dist/model/ContentTypeInterpreter.js +140 -0
  17. package/dist/model/ContentTypeInterpreter.js.map +1 -0
  18. package/dist/model/EventProducer.d.ts +10 -0
  19. package/dist/model/EventProducer.d.ts.map +1 -0
  20. package/dist/model/EventProducer.js +46 -0
  21. package/dist/model/EventProducer.js.map +1 -0
  22. package/dist/model/GTime.d.ts +44 -0
  23. package/dist/model/GTime.d.ts.map +1 -0
  24. package/dist/model/GTime.js +91 -0
  25. package/dist/model/GTime.js.map +1 -0
  26. package/dist/model/Handle.d.ts +37 -0
  27. package/dist/model/Handle.d.ts.map +1 -0
  28. package/dist/model/Handle.js +90 -0
  29. package/dist/model/Handle.js.map +1 -0
  30. package/dist/model/MCard.d.ts +43 -0
  31. package/dist/model/MCard.d.ts.map +1 -0
  32. package/dist/model/MCard.js +76 -0
  33. package/dist/model/MCard.js.map +1 -0
  34. package/dist/model/constants.d.ts +45 -0
  35. package/dist/model/constants.d.ts.map +1 -0
  36. package/dist/model/constants.js +27 -0
  37. package/dist/model/constants.js.map +1 -0
  38. package/dist/model/detectors/BaseDetector.d.ts +26 -0
  39. package/dist/model/detectors/BaseDetector.d.ts.map +1 -0
  40. package/dist/model/detectors/BaseDetector.js +5 -0
  41. package/dist/model/detectors/BaseDetector.js.map +1 -0
  42. package/dist/model/detectors/BinaryDetector.d.ts +12 -0
  43. package/dist/model/detectors/BinaryDetector.d.ts.map +1 -0
  44. package/dist/model/detectors/BinaryDetector.js +82 -0
  45. package/dist/model/detectors/BinaryDetector.js.map +1 -0
  46. package/dist/model/detectors/ContentTypeInterpreter.d.ts +11 -0
  47. package/dist/model/detectors/ContentTypeInterpreter.d.ts.map +1 -0
  48. package/dist/model/detectors/ContentTypeInterpreter.js +51 -0
  49. package/dist/model/detectors/ContentTypeInterpreter.js.map +1 -0
  50. package/dist/model/detectors/DataFormatDetectors.d.ts +29 -0
  51. package/dist/model/detectors/DataFormatDetectors.d.ts.map +1 -0
  52. package/dist/model/detectors/DataFormatDetectors.js +223 -0
  53. package/dist/model/detectors/DataFormatDetectors.js.map +1 -0
  54. package/dist/model/detectors/LanguageDetector.d.ts +11 -0
  55. package/dist/model/detectors/LanguageDetector.d.ts.map +1 -0
  56. package/dist/model/detectors/LanguageDetector.js +148 -0
  57. package/dist/model/detectors/LanguageDetector.js.map +1 -0
  58. package/dist/model/detectors/MarkupDetectors.d.ts +22 -0
  59. package/dist/model/detectors/MarkupDetectors.d.ts.map +1 -0
  60. package/dist/model/detectors/MarkupDetectors.js +132 -0
  61. package/dist/model/detectors/MarkupDetectors.js.map +1 -0
  62. package/dist/model/detectors/OBJDetector.d.ts +8 -0
  63. package/dist/model/detectors/OBJDetector.d.ts.map +1 -0
  64. package/dist/model/detectors/OBJDetector.js +48 -0
  65. package/dist/model/detectors/OBJDetector.js.map +1 -0
  66. package/dist/model/detectors/registry.d.ts +13 -0
  67. package/dist/model/detectors/registry.d.ts.map +1 -0
  68. package/dist/model/detectors/registry.js +67 -0
  69. package/dist/model/detectors/registry.js.map +1 -0
  70. package/dist/monads/Either.d.ts +51 -0
  71. package/dist/monads/Either.d.ts.map +1 -0
  72. package/dist/monads/Either.js +82 -0
  73. package/dist/monads/Either.js.map +1 -0
  74. package/dist/monads/IO.d.ts +38 -0
  75. package/dist/monads/IO.d.ts.map +1 -0
  76. package/dist/monads/IO.js +66 -0
  77. package/dist/monads/IO.js.map +1 -0
  78. package/dist/monads/Maybe.d.ts +45 -0
  79. package/dist/monads/Maybe.d.ts.map +1 -0
  80. package/dist/monads/Maybe.js +73 -0
  81. package/dist/monads/Maybe.js.map +1 -0
  82. package/dist/monads/Reader.d.ts +29 -0
  83. package/dist/monads/Reader.d.ts.map +1 -0
  84. package/dist/monads/Reader.js +44 -0
  85. package/dist/monads/Reader.js.map +1 -0
  86. package/dist/monads/State.d.ts +33 -0
  87. package/dist/monads/State.d.ts.map +1 -0
  88. package/dist/monads/State.js +50 -0
  89. package/dist/monads/State.js.map +1 -0
  90. package/dist/monads/Writer.d.ts +29 -0
  91. package/dist/monads/Writer.d.ts.map +1 -0
  92. package/dist/monads/Writer.js +46 -0
  93. package/dist/monads/Writer.js.map +1 -0
  94. package/dist/ptr/FaroSidecar.d.ts +56 -0
  95. package/dist/ptr/FaroSidecar.d.ts.map +1 -0
  96. package/dist/ptr/FaroSidecar.js +102 -0
  97. package/dist/ptr/FaroSidecar.js.map +1 -0
  98. package/dist/ptr/LensProtocol.d.ts +84 -0
  99. package/dist/ptr/LensProtocol.d.ts.map +1 -0
  100. package/dist/ptr/LensProtocol.js +98 -0
  101. package/dist/ptr/LensProtocol.js.map +1 -0
  102. package/dist/ptr/SandboxWorker.d.ts +54 -0
  103. package/dist/ptr/SandboxWorker.d.ts.map +1 -0
  104. package/dist/ptr/SandboxWorker.js +172 -0
  105. package/dist/ptr/SandboxWorker.js.map +1 -0
  106. package/dist/ptr/common_types.d.ts +39 -0
  107. package/dist/ptr/common_types.d.ts.map +1 -0
  108. package/dist/ptr/common_types.js +12 -0
  109. package/dist/ptr/common_types.js.map +1 -0
  110. package/dist/ptr/lambda/AlphaConversion.d.ts +42 -0
  111. package/dist/ptr/lambda/AlphaConversion.d.ts.map +1 -0
  112. package/dist/ptr/lambda/AlphaConversion.js +244 -0
  113. package/dist/ptr/lambda/AlphaConversion.js.map +1 -0
  114. package/dist/ptr/lambda/BetaReduction.d.ts +73 -0
  115. package/dist/ptr/lambda/BetaReduction.d.ts.map +1 -0
  116. package/dist/ptr/lambda/BetaReduction.js +322 -0
  117. package/dist/ptr/lambda/BetaReduction.js.map +1 -0
  118. package/dist/ptr/lambda/EtaConversion.d.ts +65 -0
  119. package/dist/ptr/lambda/EtaConversion.d.ts.map +1 -0
  120. package/dist/ptr/lambda/EtaConversion.js +228 -0
  121. package/dist/ptr/lambda/EtaConversion.js.map +1 -0
  122. package/dist/ptr/lambda/FreeVariables.d.ts +44 -0
  123. package/dist/ptr/lambda/FreeVariables.d.ts.map +1 -0
  124. package/dist/ptr/lambda/FreeVariables.js +207 -0
  125. package/dist/ptr/lambda/FreeVariables.js.map +1 -0
  126. package/dist/ptr/lambda/LambdaRuntime.d.ts +80 -0
  127. package/dist/ptr/lambda/LambdaRuntime.d.ts.map +1 -0
  128. package/dist/ptr/lambda/LambdaRuntime.js +433 -0
  129. package/dist/ptr/lambda/LambdaRuntime.js.map +1 -0
  130. package/dist/ptr/lambda/LambdaTerm.d.ts +95 -0
  131. package/dist/ptr/lambda/LambdaTerm.d.ts.map +1 -0
  132. package/dist/ptr/lambda/LambdaTerm.js +159 -0
  133. package/dist/ptr/lambda/LambdaTerm.js.map +1 -0
  134. package/dist/ptr/lambda/index.d.ts +24 -0
  135. package/dist/ptr/lambda/index.d.ts.map +1 -0
  136. package/dist/ptr/lambda/index.js +34 -0
  137. package/dist/ptr/lambda/index.js.map +1 -0
  138. package/dist/ptr/llm/Config.d.ts +57 -0
  139. package/dist/ptr/llm/Config.d.ts.map +1 -0
  140. package/dist/ptr/llm/Config.js +183 -0
  141. package/dist/ptr/llm/Config.js.map +1 -0
  142. package/dist/ptr/llm/LLMRuntime.d.ts +35 -0
  143. package/dist/ptr/llm/LLMRuntime.d.ts.map +1 -0
  144. package/dist/ptr/llm/LLMRuntime.js +176 -0
  145. package/dist/ptr/llm/LLMRuntime.js.map +1 -0
  146. package/dist/ptr/llm/providers/LLMProvider.d.ts +43 -0
  147. package/dist/ptr/llm/providers/LLMProvider.d.ts.map +1 -0
  148. package/dist/ptr/llm/providers/LLMProvider.js +31 -0
  149. package/dist/ptr/llm/providers/LLMProvider.js.map +1 -0
  150. package/dist/ptr/llm/providers/MLCLLMProvider.d.ts +22 -0
  151. package/dist/ptr/llm/providers/MLCLLMProvider.d.ts.map +1 -0
  152. package/dist/ptr/llm/providers/MLCLLMProvider.js +155 -0
  153. package/dist/ptr/llm/providers/MLCLLMProvider.js.map +1 -0
  154. package/dist/ptr/llm/providers/OllamaEmbeddingProvider.d.ts +20 -0
  155. package/dist/ptr/llm/providers/OllamaEmbeddingProvider.d.ts.map +1 -0
  156. package/dist/ptr/llm/providers/OllamaEmbeddingProvider.js +42 -0
  157. package/dist/ptr/llm/providers/OllamaEmbeddingProvider.js.map +1 -0
  158. package/dist/ptr/llm/providers/OllamaProvider.d.ts +21 -0
  159. package/dist/ptr/llm/providers/OllamaProvider.d.ts.map +1 -0
  160. package/dist/ptr/llm/providers/OllamaProvider.js +158 -0
  161. package/dist/ptr/llm/providers/OllamaProvider.js.map +1 -0
  162. package/dist/ptr/llm/providers/WebLLMProvider.d.ts +22 -0
  163. package/dist/ptr/llm/providers/WebLLMProvider.d.ts.map +1 -0
  164. package/dist/ptr/llm/providers/WebLLMProvider.js +151 -0
  165. package/dist/ptr/llm/providers/WebLLMProvider.js.map +1 -0
  166. package/dist/ptr/node/Action.d.ts +426 -0
  167. package/dist/ptr/node/Action.d.ts.map +1 -0
  168. package/dist/ptr/node/Action.js +711 -0
  169. package/dist/ptr/node/Action.js.map +1 -0
  170. package/dist/ptr/node/CLMLoader.d.ts +18 -0
  171. package/dist/ptr/node/CLMLoader.d.ts.map +1 -0
  172. package/dist/ptr/node/CLMLoader.js +18 -0
  173. package/dist/ptr/node/CLMLoader.js.map +1 -0
  174. package/dist/ptr/node/CLMRunner.d.ts +34 -0
  175. package/dist/ptr/node/CLMRunner.d.ts.map +1 -0
  176. package/dist/ptr/node/CLMRunner.js +36 -0
  177. package/dist/ptr/node/CLMRunner.js.map +1 -0
  178. package/dist/ptr/node/FileSystemUtils.d.ts +40 -0
  179. package/dist/ptr/node/FileSystemUtils.d.ts.map +1 -0
  180. package/dist/ptr/node/FileSystemUtils.js +170 -0
  181. package/dist/ptr/node/FileSystemUtils.js.map +1 -0
  182. package/dist/ptr/node/NetworkConfig.d.ts +191 -0
  183. package/dist/ptr/node/NetworkConfig.d.ts.map +1 -0
  184. package/dist/ptr/node/NetworkConfig.js +8 -0
  185. package/dist/ptr/node/NetworkConfig.js.map +1 -0
  186. package/dist/ptr/node/NetworkRuntime.d.ts +38 -0
  187. package/dist/ptr/node/NetworkRuntime.d.ts.map +1 -0
  188. package/dist/ptr/node/NetworkRuntime.js +871 -0
  189. package/dist/ptr/node/NetworkRuntime.js.map +1 -0
  190. package/dist/ptr/node/P2PChatSession.d.ts +53 -0
  191. package/dist/ptr/node/P2PChatSession.d.ts.map +1 -0
  192. package/dist/ptr/node/P2PChatSession.js +154 -0
  193. package/dist/ptr/node/P2PChatSession.js.map +1 -0
  194. package/dist/ptr/node/RuntimeInterface.d.ts +4 -0
  195. package/dist/ptr/node/RuntimeInterface.d.ts.map +1 -0
  196. package/dist/ptr/node/RuntimeInterface.js +2 -0
  197. package/dist/ptr/node/RuntimeInterface.js.map +1 -0
  198. package/dist/ptr/node/Runtimes.d.ts +34 -0
  199. package/dist/ptr/node/Runtimes.d.ts.map +1 -0
  200. package/dist/ptr/node/Runtimes.js +38 -0
  201. package/dist/ptr/node/Runtimes.js.map +1 -0
  202. package/dist/ptr/node/SignalingServer.d.ts +37 -0
  203. package/dist/ptr/node/SignalingServer.d.ts.map +1 -0
  204. package/dist/ptr/node/SignalingServer.js +218 -0
  205. package/dist/ptr/node/SignalingServer.js.map +1 -0
  206. package/dist/ptr/node/cli.d.ts +3 -0
  207. package/dist/ptr/node/cli.d.ts.map +1 -0
  208. package/dist/ptr/node/cli.js +266 -0
  209. package/dist/ptr/node/cli.js.map +1 -0
  210. package/dist/ptr/node/clm/builtins/handle.d.ts +14 -0
  211. package/dist/ptr/node/clm/builtins/handle.d.ts.map +1 -0
  212. package/dist/ptr/node/clm/builtins/handle.js +177 -0
  213. package/dist/ptr/node/clm/builtins/handle.js.map +1 -0
  214. package/dist/ptr/node/clm/builtins/index.d.ts +20 -0
  215. package/dist/ptr/node/clm/builtins/index.d.ts.map +1 -0
  216. package/dist/ptr/node/clm/builtins/index.js +60 -0
  217. package/dist/ptr/node/clm/builtins/index.js.map +1 -0
  218. package/dist/ptr/node/clm/index.d.ts +25 -0
  219. package/dist/ptr/node/clm/index.d.ts.map +1 -0
  220. package/dist/ptr/node/clm/index.js +28 -0
  221. package/dist/ptr/node/clm/index.js.map +1 -0
  222. package/dist/ptr/node/clm/loader.d.ts +25 -0
  223. package/dist/ptr/node/clm/loader.d.ts.map +1 -0
  224. package/dist/ptr/node/clm/loader.js +146 -0
  225. package/dist/ptr/node/clm/loader.js.map +1 -0
  226. package/dist/ptr/node/clm/multiruntime.d.ts +9 -0
  227. package/dist/ptr/node/clm/multiruntime.d.ts.map +1 -0
  228. package/dist/ptr/node/clm/multiruntime.js +121 -0
  229. package/dist/ptr/node/clm/multiruntime.js.map +1 -0
  230. package/dist/ptr/node/clm/runner.d.ts +70 -0
  231. package/dist/ptr/node/clm/runner.d.ts.map +1 -0
  232. package/dist/ptr/node/clm/runner.js +324 -0
  233. package/dist/ptr/node/clm/runner.js.map +1 -0
  234. package/dist/ptr/node/clm/types.d.ts +166 -0
  235. package/dist/ptr/node/clm/types.d.ts.map +1 -0
  236. package/dist/ptr/node/clm/types.js +5 -0
  237. package/dist/ptr/node/clm/types.js.map +1 -0
  238. package/dist/ptr/node/clm/utils.d.ts +29 -0
  239. package/dist/ptr/node/clm/utils.d.ts.map +1 -0
  240. package/dist/ptr/node/clm/utils.js +88 -0
  241. package/dist/ptr/node/clm/utils.js.map +1 -0
  242. package/dist/ptr/node/network/HttpClient.d.ts +14 -0
  243. package/dist/ptr/node/network/HttpClient.d.ts.map +1 -0
  244. package/dist/ptr/node/network/HttpClient.js +139 -0
  245. package/dist/ptr/node/network/HttpClient.js.map +1 -0
  246. package/dist/ptr/node/network/MCardSerialization.d.ts +19 -0
  247. package/dist/ptr/node/network/MCardSerialization.d.ts.map +1 -0
  248. package/dist/ptr/node/network/MCardSerialization.js +41 -0
  249. package/dist/ptr/node/network/MCardSerialization.js.map +1 -0
  250. package/dist/ptr/node/network/NetworkInfrastructure.d.ts +37 -0
  251. package/dist/ptr/node/network/NetworkInfrastructure.d.ts.map +1 -0
  252. package/dist/ptr/node/network/NetworkInfrastructure.js +121 -0
  253. package/dist/ptr/node/network/NetworkInfrastructure.js.map +1 -0
  254. package/dist/ptr/node/network/NetworkSecurity.d.ts +24 -0
  255. package/dist/ptr/node/network/NetworkSecurity.d.ts.map +1 -0
  256. package/dist/ptr/node/network/NetworkSecurity.js +104 -0
  257. package/dist/ptr/node/network/NetworkSecurity.js.map +1 -0
  258. package/dist/ptr/node/runtimes/base.d.ts +31 -0
  259. package/dist/ptr/node/runtimes/base.d.ts.map +1 -0
  260. package/dist/ptr/node/runtimes/base.js +33 -0
  261. package/dist/ptr/node/runtimes/base.js.map +1 -0
  262. package/dist/ptr/node/runtimes/binary.d.ts +10 -0
  263. package/dist/ptr/node/runtimes/binary.d.ts.map +1 -0
  264. package/dist/ptr/node/runtimes/binary.js +16 -0
  265. package/dist/ptr/node/runtimes/binary.js.map +1 -0
  266. package/dist/ptr/node/runtimes/factory.d.ts +22 -0
  267. package/dist/ptr/node/runtimes/factory.d.ts.map +1 -0
  268. package/dist/ptr/node/runtimes/factory.js +152 -0
  269. package/dist/ptr/node/runtimes/factory.js.map +1 -0
  270. package/dist/ptr/node/runtimes/index.d.ts +28 -0
  271. package/dist/ptr/node/runtimes/index.d.ts.map +1 -0
  272. package/dist/ptr/node/runtimes/index.js +30 -0
  273. package/dist/ptr/node/runtimes/index.js.map +1 -0
  274. package/dist/ptr/node/runtimes/javascript.d.ts +22 -0
  275. package/dist/ptr/node/runtimes/javascript.d.ts.map +1 -0
  276. package/dist/ptr/node/runtimes/javascript.js +125 -0
  277. package/dist/ptr/node/runtimes/javascript.js.map +1 -0
  278. package/dist/ptr/node/runtimes/lean.d.ts +10 -0
  279. package/dist/ptr/node/runtimes/lean.d.ts.map +1 -0
  280. package/dist/ptr/node/runtimes/lean.js +60 -0
  281. package/dist/ptr/node/runtimes/lean.js.map +1 -0
  282. package/dist/ptr/node/runtimes/loader.d.ts +21 -0
  283. package/dist/ptr/node/runtimes/loader.d.ts.map +1 -0
  284. package/dist/ptr/node/runtimes/loader.js +126 -0
  285. package/dist/ptr/node/runtimes/loader.js.map +1 -0
  286. package/dist/ptr/node/runtimes/python.d.ts +14 -0
  287. package/dist/ptr/node/runtimes/python.d.ts.map +1 -0
  288. package/dist/ptr/node/runtimes/python.js +100 -0
  289. package/dist/ptr/node/runtimes/python.js.map +1 -0
  290. package/dist/ptr/node/runtimes/wasm.d.ts +10 -0
  291. package/dist/ptr/node/runtimes/wasm.d.ts.map +1 -0
  292. package/dist/ptr/node/runtimes/wasm.js +55 -0
  293. package/dist/ptr/node/runtimes/wasm.js.map +1 -0
  294. package/dist/rag/GraphRAGEngine.d.ts +26 -0
  295. package/dist/rag/GraphRAGEngine.d.ts.map +1 -0
  296. package/dist/rag/GraphRAGEngine.js +166 -0
  297. package/dist/rag/GraphRAGEngine.js.map +1 -0
  298. package/dist/rag/HandleVectorStore.d.ts +201 -0
  299. package/dist/rag/HandleVectorStore.d.ts.map +1 -0
  300. package/dist/rag/HandleVectorStore.js +527 -0
  301. package/dist/rag/HandleVectorStore.js.map +1 -0
  302. package/dist/rag/PersistentIndexer.d.ts +148 -0
  303. package/dist/rag/PersistentIndexer.d.ts.map +1 -0
  304. package/dist/rag/PersistentIndexer.js +302 -0
  305. package/dist/rag/PersistentIndexer.js.map +1 -0
  306. package/dist/rag/embeddings/VisionEmbeddingProvider.d.ts +87 -0
  307. package/dist/rag/embeddings/VisionEmbeddingProvider.d.ts.map +1 -0
  308. package/dist/rag/embeddings/VisionEmbeddingProvider.js +164 -0
  309. package/dist/rag/embeddings/VisionEmbeddingProvider.js.map +1 -0
  310. package/dist/rag/graph/community.d.ts +56 -0
  311. package/dist/rag/graph/community.d.ts.map +1 -0
  312. package/dist/rag/graph/community.js +247 -0
  313. package/dist/rag/graph/community.js.map +1 -0
  314. package/dist/rag/graph/extractor.d.ts +99 -0
  315. package/dist/rag/graph/extractor.d.ts.map +1 -0
  316. package/dist/rag/graph/extractor.js +210 -0
  317. package/dist/rag/graph/extractor.js.map +1 -0
  318. package/dist/rag/graph/store.d.ts +176 -0
  319. package/dist/rag/graph/store.d.ts.map +1 -0
  320. package/dist/rag/graph/store.js +504 -0
  321. package/dist/rag/graph/store.js.map +1 -0
  322. package/dist/rag/index.d.ts +20 -0
  323. package/dist/rag/index.d.ts.map +1 -0
  324. package/dist/rag/index.js +26 -0
  325. package/dist/rag/index.js.map +1 -0
  326. package/dist/rag/semanticVersioning.d.ts +187 -0
  327. package/dist/rag/semanticVersioning.d.ts.map +1 -0
  328. package/dist/rag/semanticVersioning.js +253 -0
  329. package/dist/rag/semanticVersioning.js.map +1 -0
  330. package/dist/storage/IndexedDBEngine.d.ts +33 -0
  331. package/dist/storage/IndexedDBEngine.d.ts.map +1 -0
  332. package/dist/storage/IndexedDBEngine.js +198 -0
  333. package/dist/storage/IndexedDBEngine.js.map +1 -0
  334. package/dist/storage/SqliteNodeEngine.d.ts +123 -0
  335. package/dist/storage/SqliteNodeEngine.d.ts.map +1 -0
  336. package/dist/storage/SqliteNodeEngine.js +385 -0
  337. package/dist/storage/SqliteNodeEngine.js.map +1 -0
  338. package/dist/storage/SqliteWasmEngine.d.ts +60 -0
  339. package/dist/storage/SqliteWasmEngine.d.ts.map +1 -0
  340. package/dist/storage/SqliteWasmEngine.js +193 -0
  341. package/dist/storage/SqliteWasmEngine.js.map +1 -0
  342. package/dist/storage/StorageAdapter.d.ts +42 -0
  343. package/dist/storage/StorageAdapter.d.ts.map +1 -0
  344. package/dist/storage/StorageAdapter.js +2 -0
  345. package/dist/storage/StorageAdapter.js.map +1 -0
  346. package/dist/storage/VectorStore.d.ts +202 -0
  347. package/dist/storage/VectorStore.d.ts.map +1 -0
  348. package/dist/storage/VectorStore.js +557 -0
  349. package/dist/storage/VectorStore.js.map +1 -0
  350. package/dist/storage/schema.d.ts +162 -0
  351. package/dist/storage/schema.d.ts.map +1 -0
  352. package/dist/storage/schema.js +373 -0
  353. package/dist/storage/schema.js.map +1 -0
  354. package/dist/util/FileIO.d.ts +44 -0
  355. package/dist/util/FileIO.d.ts.map +1 -0
  356. package/dist/util/FileIO.js +203 -0
  357. package/dist/util/FileIO.js.map +1 -0
  358. package/dist/util/Loader.d.ts +34 -0
  359. package/dist/util/Loader.d.ts.map +1 -0
  360. package/dist/util/Loader.js +168 -0
  361. package/dist/util/Loader.js.map +1 -0
  362. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BetaReduction.js","sourceRoot":"","sources":["../../../src/ptr/lambda/BetaReduction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Eta Conversion (η-conversion)
3
+ *
4
+ * Captures extensional equality of functions.
5
+ *
6
+ * η-reduction: λx.(f x) →η f (if x ∉ FV(f))
7
+ * η-expansion: f →η λx.(f x) (where x is fresh)
8
+ *
9
+ * Two functions are η-equivalent if they produce the same output for all inputs.
10
+ * This is the principle of extensionality: functions are determined by their behavior.
11
+ *
12
+ * @module mcard-js/ptr/lambda/EtaConversion
13
+ */
14
+ import { CardCollection } from '../../model/CardCollection';
15
+ import { IO } from '../../monads/IO';
16
+ import { Either } from '../../monads/Either';
17
+ import { Maybe } from '../../monads/Maybe';
18
+ /**
19
+ * Check if a term is an η-redex: λx.(f x) where x ∉ FV(f)
20
+ */
21
+ export declare function isEtaRedex(collection: CardCollection, termHash: string): IO<boolean>;
22
+ /**
23
+ * Eta reduction: λx.(f x) →η f
24
+ *
25
+ * Only valid if x does not occur free in f.
26
+ *
27
+ * @param collection - Card collection
28
+ * @param termHash - Hash of the abstraction λx.(f x)
29
+ * @returns Maybe<resultHash> - Nothing if not an η-redex
30
+ */
31
+ export declare function etaReduce(collection: CardCollection, termHash: string): IO<Maybe<string>>;
32
+ /**
33
+ * Try eta reduction, returning Either for error handling
34
+ */
35
+ export declare function etaReduceE(collection: CardCollection, termHash: string): IO<Either<string, string>>;
36
+ /**
37
+ * Eta expansion: f →η λx.(f x)
38
+ *
39
+ * Wraps a function in a lambda that immediately applies it.
40
+ * The new variable must be fresh (not occurring in f).
41
+ *
42
+ * @param collection - Card collection
43
+ * @param termHash - Hash of the term to expand
44
+ * @param baseName - Base name for the fresh variable (default: 'x')
45
+ * @returns Hash of the expanded term λx.(f x)
46
+ */
47
+ export declare function etaExpand(collection: CardCollection, termHash: string, baseName?: string): IO<string>;
48
+ /**
49
+ * Check if two terms are η-equivalent
50
+ *
51
+ * Two terms f and g are η-equivalent if:
52
+ * - They are the same, or
53
+ * - One η-reduces to the other, or
54
+ * - They both η-expand to equivalent terms
55
+ */
56
+ export declare function etaEquivalent(collection: CardCollection, hash1: string, hash2: string): IO<boolean>;
57
+ /**
58
+ * Eta-normalize a term by reducing all η-redexes
59
+ */
60
+ export declare function etaNormalize(collection: CardCollection, termHash: string): IO<string>;
61
+ /**
62
+ * Find all η-redexes in a term
63
+ */
64
+ export declare function findEtaRedexes(collection: CardCollection, termHash: string): IO<string[]>;
65
+ //# sourceMappingURL=EtaConversion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EtaConversion.d.ts","sourceRoot":"","sources":["../../../src/ptr/lambda/EtaConversion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAa5D,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAM3C;;GAEG;AACH,wBAAgB,UAAU,CACtB,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,MAAM,GACjB,EAAE,CAAC,OAAO,CAAC,CAkBb;AAMD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACrB,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,MAAM,GACjB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAiCnB;AAED;;GAEG;AACH,wBAAgB,UAAU,CACtB,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,MAAM,GACjB,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAO5B;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CACrB,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAY,GACvB,EAAE,CAAC,MAAM,CAAC,CAmBZ;AAMD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CACzB,UAAU,EAAE,cAAc,EAC1B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACd,EAAE,CAAC,OAAO,CAAC,CAWb;AAgDD;;GAEG;AACH,wBAAgB,YAAY,CACxB,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,MAAM,GACjB,EAAE,CAAC,MAAM,CAAC,CAEZ;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC1B,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,MAAM,GACjB,EAAE,CAAC,MAAM,EAAE,CAAC,CAMd"}
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Eta Conversion (η-conversion)
3
+ *
4
+ * Captures extensional equality of functions.
5
+ *
6
+ * η-reduction: λx.(f x) →η f (if x ∉ FV(f))
7
+ * η-expansion: f →η λx.(f x) (where x is fresh)
8
+ *
9
+ * Two functions are η-equivalent if they produce the same output for all inputs.
10
+ * This is the principle of extensionality: functions are determined by their behavior.
11
+ *
12
+ * @module mcard-js/ptr/lambda/EtaConversion
13
+ */
14
+ import { loadTerm, storeTerm, mkVar, mkAbs, mkApp, isVar, isAbs, isApp } from './LambdaTerm';
15
+ import { freeVariables, generateFreshFor } from './FreeVariables';
16
+ import { IO } from '../../monads/IO';
17
+ import { Either } from '../../monads/Either';
18
+ import { Maybe } from '../../monads/Maybe';
19
+ // ─────────────────────────────────────────────────────────────────────────────
20
+ // Eta Redex Detection
21
+ // ─────────────────────────────────────────────────────────────────────────────
22
+ /**
23
+ * Check if a term is an η-redex: λx.(f x) where x ∉ FV(f)
24
+ */
25
+ export function isEtaRedex(collection, termHash) {
26
+ return IO.of(async () => {
27
+ const term = await loadTerm(collection, termHash);
28
+ if (!term || !isAbs(term))
29
+ return false;
30
+ const body = await loadTerm(collection, term.body);
31
+ if (!body || !isApp(body))
32
+ return false;
33
+ // Check if argument is the bound variable
34
+ const arg = await loadTerm(collection, body.arg);
35
+ if (!arg || !isVar(arg) || arg.name !== term.param)
36
+ return false;
37
+ // Check if x is not free in f
38
+ const funcFV = await freeVariables(collection, body.func).run();
39
+ if (funcFV.isNothing)
40
+ return false;
41
+ return !funcFV.value.has(term.param);
42
+ });
43
+ }
44
+ // ─────────────────────────────────────────────────────────────────────────────
45
+ // Eta Reduction
46
+ // ─────────────────────────────────────────────────────────────────────────────
47
+ /**
48
+ * Eta reduction: λx.(f x) →η f
49
+ *
50
+ * Only valid if x does not occur free in f.
51
+ *
52
+ * @param collection - Card collection
53
+ * @param termHash - Hash of the abstraction λx.(f x)
54
+ * @returns Maybe<resultHash> - Nothing if not an η-redex
55
+ */
56
+ export function etaReduce(collection, termHash) {
57
+ return IO.of(async () => {
58
+ const term = await loadTerm(collection, termHash);
59
+ if (!term)
60
+ return Maybe.nothing();
61
+ // Must be λx.E
62
+ if (!isAbs(term))
63
+ return Maybe.nothing();
64
+ const body = await loadTerm(collection, term.body);
65
+ if (!body)
66
+ return Maybe.nothing();
67
+ // Body must be application (f x)
68
+ if (!isApp(body))
69
+ return Maybe.nothing();
70
+ // Argument must be the bound variable
71
+ const arg = await loadTerm(collection, body.arg);
72
+ if (!arg)
73
+ return Maybe.nothing();
74
+ if (!isVar(arg) || arg.name !== term.param) {
75
+ return Maybe.nothing();
76
+ }
77
+ // x must not be free in f
78
+ const funcFV = await freeVariables(collection, body.func).run();
79
+ if (funcFV.isNothing)
80
+ return Maybe.nothing();
81
+ if (funcFV.value.has(term.param)) {
82
+ return Maybe.nothing();
83
+ }
84
+ // η-reduce: return f's hash
85
+ return Maybe.just(body.func);
86
+ });
87
+ }
88
+ /**
89
+ * Try eta reduction, returning Either for error handling
90
+ */
91
+ export function etaReduceE(collection, termHash) {
92
+ return etaReduce(collection, termHash).map(maybe => {
93
+ if (maybe.isNothing) {
94
+ return Either.left('Not an η-redex');
95
+ }
96
+ return Either.right(maybe.value);
97
+ });
98
+ }
99
+ // ─────────────────────────────────────────────────────────────────────────────
100
+ // Eta Expansion
101
+ // ─────────────────────────────────────────────────────────────────────────────
102
+ /**
103
+ * Eta expansion: f →η λx.(f x)
104
+ *
105
+ * Wraps a function in a lambda that immediately applies it.
106
+ * The new variable must be fresh (not occurring in f).
107
+ *
108
+ * @param collection - Card collection
109
+ * @param termHash - Hash of the term to expand
110
+ * @param baseName - Base name for the fresh variable (default: 'x')
111
+ * @returns Hash of the expanded term λx.(f x)
112
+ */
113
+ export function etaExpand(collection, termHash, baseName = 'x') {
114
+ return IO.of(async () => {
115
+ // Generate fresh variable name
116
+ const freshVar = await generateFreshFor(collection, baseName, termHash);
117
+ // Create variable term
118
+ const varTerm = mkVar(freshVar);
119
+ const varHash = await storeTerm(collection, varTerm);
120
+ // Create application (f x)
121
+ const appTerm = mkApp(termHash, varHash);
122
+ const appHash = await storeTerm(collection, appTerm);
123
+ // Create abstraction λx.(f x)
124
+ const absTerm = mkAbs(freshVar, appHash);
125
+ const absHash = await storeTerm(collection, absTerm);
126
+ return absHash;
127
+ });
128
+ }
129
+ // ─────────────────────────────────────────────────────────────────────────────
130
+ // Eta Equivalence
131
+ // ─────────────────────────────────────────────────────────────────────────────
132
+ /**
133
+ * Check if two terms are η-equivalent
134
+ *
135
+ * Two terms f and g are η-equivalent if:
136
+ * - They are the same, or
137
+ * - One η-reduces to the other, or
138
+ * - They both η-expand to equivalent terms
139
+ */
140
+ export function etaEquivalent(collection, hash1, hash2) {
141
+ return IO.of(async () => {
142
+ // Same hash = definitely equivalent
143
+ if (hash1 === hash2)
144
+ return true;
145
+ // Try reducing both to see if they meet
146
+ const reduced1 = await etaReduceDeep(collection, hash1);
147
+ const reduced2 = await etaReduceDeep(collection, hash2);
148
+ return reduced1 === reduced2;
149
+ });
150
+ }
151
+ /**
152
+ * Recursively apply η-reduction until no more η-redexes
153
+ */
154
+ async function etaReduceDeep(collection, termHash) {
155
+ const term = await loadTerm(collection, termHash);
156
+ if (!term)
157
+ return termHash;
158
+ switch (term.tag) {
159
+ case 'Var':
160
+ return termHash;
161
+ case 'Abs': {
162
+ // First try η-reduction at this level
163
+ const etaResult = await etaReduce(collection, termHash).run();
164
+ if (etaResult.isJust) {
165
+ // η-reduced - continue reducing the result
166
+ return etaReduceDeep(collection, etaResult.value);
167
+ }
168
+ // Not an η-redex - recurse into body
169
+ const newBody = await etaReduceDeep(collection, term.body);
170
+ if (newBody === term.body)
171
+ return termHash;
172
+ const newAbs = mkAbs(term.param, newBody);
173
+ return storeTerm(collection, newAbs);
174
+ }
175
+ case 'App': {
176
+ const newFunc = await etaReduceDeep(collection, term.func);
177
+ const newArg = await etaReduceDeep(collection, term.arg);
178
+ if (newFunc === term.func && newArg === term.arg)
179
+ return termHash;
180
+ const newApp = mkApp(newFunc, newArg);
181
+ return storeTerm(collection, newApp);
182
+ }
183
+ }
184
+ }
185
+ // ─────────────────────────────────────────────────────────────────────────────
186
+ // Combined Eta Operations
187
+ // ─────────────────────────────────────────────────────────────────────────────
188
+ /**
189
+ * Eta-normalize a term by reducing all η-redexes
190
+ */
191
+ export function etaNormalize(collection, termHash) {
192
+ return IO.of(() => etaReduceDeep(collection, termHash));
193
+ }
194
+ /**
195
+ * Find all η-redexes in a term
196
+ */
197
+ export function findEtaRedexes(collection, termHash) {
198
+ return IO.of(async () => {
199
+ const redexes = [];
200
+ await collectEtaRedexes(collection, termHash, redexes);
201
+ return redexes;
202
+ });
203
+ }
204
+ async function collectEtaRedexes(collection, termHash, redexes) {
205
+ const term = await loadTerm(collection, termHash);
206
+ if (!term)
207
+ return;
208
+ switch (term.tag) {
209
+ case 'Var':
210
+ break;
211
+ case 'Abs': {
212
+ // Check if this is an η-redex
213
+ const isRedex = await isEtaRedex(collection, termHash).run();
214
+ if (isRedex) {
215
+ redexes.push(termHash);
216
+ }
217
+ // Also check body
218
+ await collectEtaRedexes(collection, term.body, redexes);
219
+ break;
220
+ }
221
+ case 'App': {
222
+ await collectEtaRedexes(collection, term.func, redexes);
223
+ await collectEtaRedexes(collection, term.arg, redexes);
224
+ break;
225
+ }
226
+ }
227
+ }
228
+ //# sourceMappingURL=EtaConversion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EtaConversion.js","sourceRoot":"","sources":["../../../src/ptr/lambda/EtaConversion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Free Variables Analysis
3
+ *
4
+ * Computes the set of free variables in a Lambda term.
5
+ * Free variables are those not bound by any enclosing λ.
6
+ *
7
+ * FV(x) = {x}
8
+ * FV(λx.M) = FV(M) \ {x}
9
+ * FV(M N) = FV(M) ∪ FV(N)
10
+ *
11
+ * @module mcard-js/ptr/lambda/FreeVariables
12
+ */
13
+ import { CardCollection } from '../../model/CardCollection';
14
+ import { IO } from '../../monads/IO';
15
+ import { Maybe } from '../../monads/Maybe';
16
+ /**
17
+ * Compute free variables of a term (by hash)
18
+ * Returns IO<Maybe<Set<string>>> - Nothing if term not found
19
+ */
20
+ export declare function freeVariables(collection: CardCollection, termHash: string): IO<Maybe<Set<string>>>;
21
+ /**
22
+ * Compute bound variables of a term (by hash)
23
+ * Bound variables are those occurring in binding positions (λx)
24
+ */
25
+ export declare function boundVariables(collection: CardCollection, termHash: string): IO<Maybe<Set<string>>>;
26
+ /**
27
+ * Check if a variable is free in a term
28
+ */
29
+ export declare function isFreeIn(collection: CardCollection, variable: string, termHash: string): IO<boolean>;
30
+ /**
31
+ * Check if a term is closed (has no free variables)
32
+ */
33
+ export declare function isClosed(collection: CardCollection, termHash: string): IO<boolean>;
34
+ /**
35
+ * Generate a fresh variable name that is not in the given set
36
+ */
37
+ export declare function generateFresh(base: string, avoid: Set<string>): string;
38
+ /**
39
+ * Generate a fresh variable avoiding all variables in a term
40
+ */
41
+ export declare function generateFreshFor(collection: CardCollection, base: string, termHash: string): Promise<string>;
42
+ export declare function difference<T>(a: Set<T>, b: Set<T>): Set<T>;
43
+ export declare function intersection<T>(a: Set<T>, b: Set<T>): Set<T>;
44
+ //# sourceMappingURL=FreeVariables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FreeVariables.d.ts","sourceRoot":"","sources":["../../../src/ptr/lambda/FreeVariables.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAM3C;;;GAGG;AACH,wBAAgB,aAAa,CACzB,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,MAAM,GACjB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAKxB;AAqED;;;GAGG;AACH,wBAAgB,cAAc,CAC1B,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,MAAM,GACjB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAIxB;AAkDD;;GAEG;AACH,wBAAgB,QAAQ,CACpB,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACjB,EAAE,CAAC,OAAO,CAAC,CAKb;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACpB,UAAU,EAAE,cAAc,EAC1B,QAAQ,EAAE,MAAM,GACjB,EAAE,CAAC,OAAO,CAAC,CAKb;AAMD;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CActE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAClC,UAAU,EAAE,cAAc,EAC1B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAcjB;AAcD,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAQ1D;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAQ5D"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Free Variables Analysis
3
+ *
4
+ * Computes the set of free variables in a Lambda term.
5
+ * Free variables are those not bound by any enclosing λ.
6
+ *
7
+ * FV(x) = {x}
8
+ * FV(λx.M) = FV(M) \ {x}
9
+ * FV(M N) = FV(M) ∪ FV(N)
10
+ *
11
+ * @module mcard-js/ptr/lambda/FreeVariables
12
+ */
13
+ import { loadTerm } from './LambdaTerm';
14
+ import { IO } from '../../monads/IO';
15
+ import { Maybe } from '../../monads/Maybe';
16
+ // ─────────────────────────────────────────────────────────────────────────────
17
+ // Free Variable Computation
18
+ // ─────────────────────────────────────────────────────────────────────────────
19
+ /**
20
+ * Compute free variables of a term (by hash)
21
+ * Returns IO<Maybe<Set<string>>> - Nothing if term not found
22
+ */
23
+ export function freeVariables(collection, termHash) {
24
+ return IO.of(async () => {
25
+ const result = await computeFreeVars(collection, termHash, new Set());
26
+ return result;
27
+ });
28
+ }
29
+ /**
30
+ * Internal recursive implementation with memoization via visited set
31
+ */
32
+ async function computeFreeVars(collection, termHash, visited) {
33
+ // Cycle detection
34
+ if (visited.has(termHash)) {
35
+ return Maybe.just(new Set());
36
+ }
37
+ visited.add(termHash);
38
+ const term = await loadTerm(collection, termHash);
39
+ if (!term) {
40
+ return Maybe.nothing();
41
+ }
42
+ return Maybe.just(await freeVarsOfTerm(collection, term, visited));
43
+ }
44
+ /**
45
+ * Compute free variables of a term structure
46
+ */
47
+ async function freeVarsOfTerm(collection, term, visited) {
48
+ switch (term.tag) {
49
+ case 'Var':
50
+ // FV(x) = {x}
51
+ return new Set([term.name]);
52
+ case 'Abs': {
53
+ // FV(λx.M) = FV(M) \ {x}
54
+ const bodyFV = await computeFreeVars(collection, term.body, visited);
55
+ if (bodyFV.isNothing) {
56
+ throw new Error(`Body term not found: ${term.body}`);
57
+ }
58
+ const result = new Set(bodyFV.value);
59
+ result.delete(term.param);
60
+ return result;
61
+ }
62
+ case 'App': {
63
+ // FV(M N) = FV(M) ∪ FV(N)
64
+ const funcFV = await computeFreeVars(collection, term.func, visited);
65
+ const argFV = await computeFreeVars(collection, term.arg, visited);
66
+ if (funcFV.isNothing) {
67
+ throw new Error(`Function term not found: ${term.func}`);
68
+ }
69
+ if (argFV.isNothing) {
70
+ throw new Error(`Argument term not found: ${term.arg}`);
71
+ }
72
+ return union(funcFV.value, argFV.value);
73
+ }
74
+ }
75
+ }
76
+ // ─────────────────────────────────────────────────────────────────────────────
77
+ // Bound Variables
78
+ // ─────────────────────────────────────────────────────────────────────────────
79
+ /**
80
+ * Compute bound variables of a term (by hash)
81
+ * Bound variables are those occurring in binding positions (λx)
82
+ */
83
+ export function boundVariables(collection, termHash) {
84
+ return IO.of(async () => {
85
+ return computeBoundVars(collection, termHash, new Set());
86
+ });
87
+ }
88
+ async function computeBoundVars(collection, termHash, visited) {
89
+ if (visited.has(termHash)) {
90
+ return Maybe.just(new Set());
91
+ }
92
+ visited.add(termHash);
93
+ const term = await loadTerm(collection, termHash);
94
+ if (!term) {
95
+ return Maybe.nothing();
96
+ }
97
+ switch (term.tag) {
98
+ case 'Var':
99
+ // No bound variables in a variable
100
+ return Maybe.just(new Set());
101
+ case 'Abs': {
102
+ // BV(λx.M) = {x} ∪ BV(M)
103
+ const bodyBV = await computeBoundVars(collection, term.body, visited);
104
+ if (bodyBV.isNothing)
105
+ return bodyBV;
106
+ const result = new Set(bodyBV.value);
107
+ result.add(term.param);
108
+ return Maybe.just(result);
109
+ }
110
+ case 'App': {
111
+ // BV(M N) = BV(M) ∪ BV(N)
112
+ const funcBV = await computeBoundVars(collection, term.func, visited);
113
+ const argBV = await computeBoundVars(collection, term.arg, visited);
114
+ if (funcBV.isNothing || argBV.isNothing) {
115
+ return Maybe.nothing();
116
+ }
117
+ return Maybe.just(union(funcBV.value, argBV.value));
118
+ }
119
+ }
120
+ }
121
+ // ─────────────────────────────────────────────────────────────────────────────
122
+ // Utility: Check if variable is free in term
123
+ // ─────────────────────────────────────────────────────────────────────────────
124
+ /**
125
+ * Check if a variable is free in a term
126
+ */
127
+ export function isFreeIn(collection, variable, termHash) {
128
+ return freeVariables(collection, termHash).map(maybeFV => {
129
+ if (maybeFV.isNothing)
130
+ return false;
131
+ return maybeFV.value.has(variable);
132
+ });
133
+ }
134
+ /**
135
+ * Check if a term is closed (has no free variables)
136
+ */
137
+ export function isClosed(collection, termHash) {
138
+ return freeVariables(collection, termHash).map(maybeFV => {
139
+ if (maybeFV.isNothing)
140
+ return false;
141
+ return maybeFV.value.size === 0;
142
+ });
143
+ }
144
+ // ─────────────────────────────────────────────────────────────────────────────
145
+ // Fresh Variable Generation
146
+ // ─────────────────────────────────────────────────────────────────────────────
147
+ /**
148
+ * Generate a fresh variable name that is not in the given set
149
+ */
150
+ export function generateFresh(base, avoid) {
151
+ if (!avoid.has(base)) {
152
+ return base;
153
+ }
154
+ let counter = 1;
155
+ let candidate = `${base}${counter}`;
156
+ while (avoid.has(candidate)) {
157
+ counter++;
158
+ candidate = `${base}${counter}`;
159
+ }
160
+ return candidate;
161
+ }
162
+ /**
163
+ * Generate a fresh variable avoiding all variables in a term
164
+ */
165
+ export async function generateFreshFor(collection, base, termHash) {
166
+ const fvResult = await freeVariables(collection, termHash).run();
167
+ const bvResult = await boundVariables(collection, termHash).run();
168
+ const avoid = new Set();
169
+ if (fvResult.isJust) {
170
+ for (const v of fvResult.value)
171
+ avoid.add(v);
172
+ }
173
+ if (bvResult.isJust) {
174
+ for (const v of bvResult.value)
175
+ avoid.add(v);
176
+ }
177
+ return generateFresh(base, avoid);
178
+ }
179
+ // ─────────────────────────────────────────────────────────────────────────────
180
+ // Set Utilities
181
+ // ─────────────────────────────────────────────────────────────────────────────
182
+ function union(a, b) {
183
+ const result = new Set(a);
184
+ for (const item of b) {
185
+ result.add(item);
186
+ }
187
+ return result;
188
+ }
189
+ export function difference(a, b) {
190
+ const result = new Set();
191
+ for (const item of a) {
192
+ if (!b.has(item)) {
193
+ result.add(item);
194
+ }
195
+ }
196
+ return result;
197
+ }
198
+ export function intersection(a, b) {
199
+ const result = new Set();
200
+ for (const item of a) {
201
+ if (b.has(item)) {
202
+ result.add(item);
203
+ }
204
+ }
205
+ return result;
206
+ }
207
+ //# sourceMappingURL=FreeVariables.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FreeVariables.js","sourceRoot":"","sources":["../../../src/ptr/lambda/FreeVariables.ts"],"names":[],"mappings":"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"}