egglog 11.2.0__cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

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.

Potentially problematic release.


This version of egglog might be problematic. Click here for more details.

Files changed (46) hide show
  1. egglog/__init__.py +13 -0
  2. egglog/bindings.cpython-314-x86_64-linux-gnu.so +0 -0
  3. egglog/bindings.pyi +734 -0
  4. egglog/builtins.py +1133 -0
  5. egglog/config.py +8 -0
  6. egglog/conversion.py +286 -0
  7. egglog/declarations.py +912 -0
  8. egglog/deconstruct.py +173 -0
  9. egglog/egraph.py +1875 -0
  10. egglog/egraph_state.py +680 -0
  11. egglog/examples/README.rst +5 -0
  12. egglog/examples/__init__.py +3 -0
  13. egglog/examples/bignum.py +32 -0
  14. egglog/examples/bool.py +38 -0
  15. egglog/examples/eqsat_basic.py +44 -0
  16. egglog/examples/fib.py +28 -0
  17. egglog/examples/higher_order_functions.py +42 -0
  18. egglog/examples/jointree.py +67 -0
  19. egglog/examples/lambda_.py +287 -0
  20. egglog/examples/matrix.py +175 -0
  21. egglog/examples/multiset.py +60 -0
  22. egglog/examples/ndarrays.py +144 -0
  23. egglog/examples/resolution.py +84 -0
  24. egglog/examples/schedule_demo.py +34 -0
  25. egglog/exp/__init__.py +3 -0
  26. egglog/exp/array_api.py +2019 -0
  27. egglog/exp/array_api_jit.py +51 -0
  28. egglog/exp/array_api_loopnest.py +74 -0
  29. egglog/exp/array_api_numba.py +69 -0
  30. egglog/exp/array_api_program_gen.py +510 -0
  31. egglog/exp/program_gen.py +425 -0
  32. egglog/exp/siu_examples.py +32 -0
  33. egglog/ipython_magic.py +41 -0
  34. egglog/pretty.py +509 -0
  35. egglog/py.typed +0 -0
  36. egglog/runtime.py +712 -0
  37. egglog/thunk.py +97 -0
  38. egglog/type_constraint_solver.py +113 -0
  39. egglog/version_compat.py +87 -0
  40. egglog/visualizer.css +1 -0
  41. egglog/visualizer.js +35777 -0
  42. egglog/visualizer_widget.py +39 -0
  43. egglog-11.2.0.dist-info/METADATA +74 -0
  44. egglog-11.2.0.dist-info/RECORD +46 -0
  45. egglog-11.2.0.dist-info/WHEEL +4 -0
  46. egglog-11.2.0.dist-info/licenses/LICENSE +21 -0
egglog/bindings.pyi ADDED
@@ -0,0 +1,734 @@
1
+ from datetime import timedelta
2
+ from pathlib import Path
3
+ from typing import TypeAlias
4
+
5
+ from typing_extensions import final
6
+
7
+ __all__ = [
8
+ "ActionCommand",
9
+ "AddRuleset",
10
+ "BiRewriteCommand",
11
+ "Bool",
12
+ "CSVPrintFunctionMode",
13
+ "Call",
14
+ "Change",
15
+ "Check",
16
+ "Constructor",
17
+ "Datatype",
18
+ "Datatypes",
19
+ "DefaultPrintFunctionMode",
20
+ "Delete",
21
+ "EGraph",
22
+ "EggSmolError",
23
+ "EgglogSpan",
24
+ "Eq",
25
+ "Expr_",
26
+ "Extract",
27
+ "ExtractBest",
28
+ "ExtractVariants",
29
+ "Fact",
30
+ "Fail",
31
+ "Float",
32
+ "Function",
33
+ "FunctionCommand",
34
+ "IdentSort",
35
+ "Include",
36
+ "Input",
37
+ "Int",
38
+ "Let",
39
+ "Lit",
40
+ "NewSort",
41
+ "Output",
42
+ "OverallStatistics",
43
+ "Panic",
44
+ "PanicSpan",
45
+ "Pop",
46
+ "PrintAllFunctionsSize",
47
+ "PrintFunction",
48
+ "PrintFunctionOutput",
49
+ "PrintFunctionSize",
50
+ "PrintOverallStatistics",
51
+ "PrintSize",
52
+ "Push",
53
+ "PyObjectSort",
54
+ "Relation",
55
+ "Repeat",
56
+ "Rewrite",
57
+ "RewriteCommand",
58
+ "Rule",
59
+ "RuleCommand",
60
+ "Run",
61
+ "RunConfig",
62
+ "RunReport",
63
+ "RunSchedule",
64
+ "RunScheduleOutput",
65
+ "RustSpan",
66
+ "Saturate",
67
+ "Schema",
68
+ "Sequence",
69
+ "SerializedEGraph",
70
+ "Set",
71
+ "Sort",
72
+ "SrcFile",
73
+ "String",
74
+ "SubVariants",
75
+ "Subsume",
76
+ "TermApp",
77
+ "TermDag",
78
+ "TermLit",
79
+ "TermVar",
80
+ "Union",
81
+ "Unit",
82
+ "UnstableCombinedRuleset",
83
+ "UserDefined",
84
+ "UserDefinedCommandOutput",
85
+ "UserDefinedOutput",
86
+ "Var",
87
+ "Variant",
88
+ ]
89
+
90
+ @final
91
+ class SerializedEGraph:
92
+ @property
93
+ def truncated_functions(self) -> list[str]: ...
94
+ @property
95
+ def discarded_functions(self) -> list[str]: ...
96
+ def inline_leaves(self) -> None: ...
97
+ def saturate_inline_leaves(self) -> None: ...
98
+ def to_dot(self) -> str: ...
99
+ def to_json(self) -> str: ...
100
+ def map_ops(self, map: dict[str, str]) -> None: ...
101
+ def split_classes(self, egraph: EGraph, ops: set[str]) -> None: ...
102
+
103
+ @final
104
+ class PyObjectSort:
105
+ def __init__(self) -> None: ...
106
+ def store(self, __o: object, /) -> _Expr: ...
107
+ def load(self, __e: _Expr, /) -> object: ...
108
+
109
+ @final
110
+ class EGraph:
111
+ def __init__(
112
+ self,
113
+ py_object_sort: PyObjectSort | None = None,
114
+ /,
115
+ *,
116
+ fact_directory: str | Path | None = None,
117
+ seminaive: bool = True,
118
+ record: bool = False,
119
+ ) -> None: ...
120
+ def parse_program(self, __input: str, /, filename: str | None = None) -> list[_Command]: ...
121
+ def commands(self) -> str | None: ...
122
+ def run_program(self, *commands: _Command) -> list[_CommandOutput]: ...
123
+ def serialize(
124
+ self,
125
+ root_eclasses: list[_Expr],
126
+ *,
127
+ max_functions: int | None = None,
128
+ max_calls_per_function: int | None = None,
129
+ include_temporary_functions: bool = False,
130
+ ) -> SerializedEGraph: ...
131
+
132
+ @final
133
+ class EggSmolError(Exception):
134
+ context: str
135
+
136
+ ##
137
+ # Spans
138
+ ##
139
+
140
+ @final
141
+ class PanicSpan:
142
+ def __init__(self) -> None: ...
143
+
144
+ @final
145
+ class SrcFile:
146
+ name: str | None
147
+ contents: str
148
+ def __init__(self, name: str | None, contents: str) -> None: ...
149
+
150
+ @final
151
+ class EgglogSpan:
152
+ file: SrcFile
153
+ i: int
154
+ j: int
155
+ def __init__(self, file: SrcFile, i: int, j: int) -> None: ...
156
+
157
+ @final
158
+ class RustSpan:
159
+ file: str
160
+ line: int
161
+ column: int
162
+ def __init__(self, file: str, line: int, column: int) -> None: ...
163
+
164
+ _Span: TypeAlias = PanicSpan | EgglogSpan | RustSpan
165
+
166
+ ##
167
+ # Literals
168
+ ##
169
+
170
+ @final
171
+ class Int:
172
+ def __init__(self, value: int) -> None: ...
173
+ value: int
174
+
175
+ @final
176
+ class Float:
177
+ value: float
178
+ def __init__(self, value: float) -> None: ...
179
+
180
+ @final
181
+ class String:
182
+ def __init__(self, value: str) -> None: ...
183
+ value: str
184
+
185
+ @final
186
+ class Unit:
187
+ def __init__(self) -> None: ...
188
+
189
+ @final
190
+ class Bool:
191
+ def __init__(self, b: bool) -> None: ...
192
+ value: bool
193
+
194
+ _Literal: TypeAlias = Int | Float | String | Bool | Unit
195
+
196
+ ##
197
+ # Expressions
198
+ ##
199
+
200
+ @final
201
+ class Lit:
202
+ def __init__(self, span: _Span, value: _Literal) -> None: ...
203
+ span: _Span
204
+ value: _Literal
205
+
206
+ @final
207
+ class Var:
208
+ def __init__(self, span: _Span, name: str) -> None: ...
209
+ span: _Span
210
+ name: str
211
+
212
+ @final
213
+ class Call:
214
+ def __init__(self, span: _Span, name: str, args: list[_Expr]) -> None: ...
215
+ span: _Span
216
+ name: str
217
+ args: list[_Expr]
218
+
219
+ # Unions must be private becuase it is not actually exposed by the runtime library.
220
+ _Expr: TypeAlias = Lit | Var | Call
221
+
222
+ ##
223
+ # Terms
224
+ ##
225
+
226
+ @final
227
+ class TermLit:
228
+ def __init__(self, value: _Literal) -> None: ...
229
+ value: _Literal
230
+
231
+ @final
232
+ class TermVar:
233
+ def __init__(self, name: str) -> None: ...
234
+ name: str
235
+
236
+ @final
237
+ class TermApp:
238
+ def __init__(self, name: str, args: list[int]) -> None: ...
239
+ name: str
240
+ args: list[int]
241
+
242
+ _Term: TypeAlias = TermLit | TermVar | TermApp
243
+
244
+ ##
245
+ # Facts
246
+ ##
247
+
248
+ @final
249
+ class Eq:
250
+ def __init__(self, span: _Span, left: _Expr, right: _Expr) -> None: ...
251
+ span: _Span
252
+ left: _Expr
253
+ right: _Expr
254
+
255
+ @final
256
+ class Fact:
257
+ def __init__(self, expr: _Expr) -> None: ...
258
+ expr: _Expr
259
+
260
+ _Fact: TypeAlias = Fact | Eq
261
+
262
+ ##
263
+ # Change
264
+ ##
265
+
266
+ @final
267
+ class Delete:
268
+ def __init__(self) -> None: ...
269
+
270
+ @final
271
+ class Subsume:
272
+ def __init__(self) -> None: ...
273
+
274
+ _Change: TypeAlias = Delete | Subsume
275
+
276
+ ##
277
+ # Actions
278
+ ##
279
+
280
+ @final
281
+ class Let:
282
+ def __init__(self, span: _Span, lhs: str, rhs: _Expr) -> None: ...
283
+ span: _Span
284
+ lhs: str
285
+ rhs: _Expr
286
+
287
+ @final
288
+ class Set:
289
+ def __init__(self, span: _Span, lhs: str, args: list[_Expr], rhs: _Expr) -> None: ...
290
+ span: _Span
291
+ lhs: str
292
+ args: list[_Expr]
293
+ rhs: _Expr
294
+
295
+ @final
296
+ class Change:
297
+ span: _Span
298
+ change: _Change
299
+ sym: str
300
+ args: list[_Expr]
301
+ def __init__(self, span: _Span, change: _Change, sym: str, args: list[_Expr]) -> None: ...
302
+
303
+ @final
304
+ class Union:
305
+ def __init__(self, span: _Span, lhs: _Expr, rhs: _Expr) -> None: ...
306
+ span: _Span
307
+ lhs: _Expr
308
+ rhs: _Expr
309
+
310
+ @final
311
+ class Panic:
312
+ def __init__(self, span: _Span, msg: str) -> None: ...
313
+ span: _Span
314
+ msg: str
315
+
316
+ @final
317
+ class Expr_: # noqa: N801
318
+ def __init__(self, span: _Span, expr: _Expr) -> None: ...
319
+ span: _Span
320
+ expr: _Expr
321
+
322
+ _Action: TypeAlias = Let | Set | Change | Union | Panic | Expr_
323
+
324
+ ##
325
+ # Other Structs
326
+ ##
327
+
328
+ @final
329
+ class Variant:
330
+ def __init__(self, span: _Span, name: str, types: list[str], cost: int | None = None) -> None: ...
331
+ span: _Span
332
+ name: str
333
+ types: list[str]
334
+ cost: int | None
335
+
336
+ @final
337
+ class Schema:
338
+ input: list[str]
339
+ output: str
340
+ def __init__(self, input: list[str], output: str) -> None: ...
341
+
342
+ @final
343
+ class Rule:
344
+ span: _Span
345
+ head: list[_Action]
346
+ body: list[_Fact]
347
+ def __init__(self, span: _Span, head: list[_Action], body: list[_Fact]) -> None: ...
348
+
349
+ @final
350
+ class Rewrite:
351
+ span: _Span
352
+ lhs: _Expr
353
+ rhs: _Expr
354
+ conditions: list[_Fact]
355
+
356
+ def __init__(self, span: _Span, lhs: _Expr, rhs: _Expr, conditions: list[_Fact] = []) -> None: ...
357
+
358
+ @final
359
+ class RunConfig:
360
+ ruleset: str
361
+ until: list[_Fact] | None
362
+ def __init__(self, ruleset: str, until: list[_Fact] | None = None) -> None: ...
363
+
364
+ @final
365
+ class IdentSort:
366
+ ident: str
367
+ sort: str
368
+ def __init__(self, ident: str, sort: str) -> None: ...
369
+
370
+ @final
371
+ class UserDefinedCommandOutput: ...
372
+
373
+ @final
374
+ class Function:
375
+ name: str
376
+
377
+ @final
378
+ class RunReport:
379
+ updated: bool
380
+ search_and_apply_time_per_rule: dict[str, timedelta]
381
+ num_matches_per_rule: dict[str, int]
382
+ search_and_apply_time_per_ruleset: dict[str, timedelta]
383
+ merge_time_per_ruleset: dict[str, timedelta]
384
+ rebuild_time_per_ruleset: dict[str, timedelta]
385
+
386
+ def __init__(
387
+ self,
388
+ updated: bool,
389
+ search_and_apply_time_per_rule: dict[str, timedelta],
390
+ num_matches_per_rule: dict[str, int],
391
+ search_and_apply_time_per_ruleset: dict[str, timedelta],
392
+ merge_time_per_ruleset: dict[str, timedelta],
393
+ rebuild_time_per_ruleset: dict[str, timedelta],
394
+ ) -> None: ...
395
+
396
+ ##
397
+ # Command Outputs
398
+ ##
399
+
400
+ @final
401
+ class PrintFunctionSize:
402
+ size: int
403
+ def __init__(self, size: int) -> None: ...
404
+
405
+ @final
406
+ class PrintAllFunctionsSize:
407
+ sizes: list[tuple[str, int]]
408
+ def __init__(self, sizes: list[tuple[str, int]]) -> None: ...
409
+
410
+ @final
411
+ class ExtractVariants:
412
+ termdag: TermDag
413
+ terms: list[_Term]
414
+ def __init__(self, termdag: TermDag, terms: list[_Term]) -> None: ...
415
+
416
+ @final
417
+ class ExtractBest:
418
+ termdag: TermDag
419
+ cost: int
420
+ term: _Term
421
+ def __init__(self, termdag: TermDag, cost: int, term: _Term) -> None: ...
422
+
423
+ @final
424
+ class OverallStatistics:
425
+ report: RunReport
426
+ def __init__(self, report: RunReport) -> None: ...
427
+
428
+ @final
429
+ class RunScheduleOutput:
430
+ report: RunReport
431
+ def __init__(self, report: RunReport) -> None: ...
432
+
433
+ @final
434
+ class PrintFunctionOutput:
435
+ function: Function
436
+ termdag: TermDag
437
+ terms: list[tuple[_Term, _Term]]
438
+ mode: _PrintFunctionMode
439
+ def __init__(
440
+ self, function: Function, termdag: TermDag, terms: list[tuple[_Term, _Term]], mode: _PrintFunctionMode
441
+ ) -> None: ...
442
+
443
+ @final
444
+ class UserDefinedOutput:
445
+ output: UserDefinedCommandOutput
446
+ def __init__(self, output: UserDefinedCommandOutput) -> None: ...
447
+
448
+ _CommandOutput: TypeAlias = (
449
+ PrintFunctionSize
450
+ | PrintAllFunctionsSize
451
+ | ExtractVariants
452
+ | ExtractBest
453
+ | OverallStatistics
454
+ | RunScheduleOutput
455
+ | PrintFunctionOutput
456
+ | UserDefinedOutput
457
+ )
458
+
459
+ ##
460
+ # Print Function Modes
461
+ ##
462
+
463
+ @final
464
+ class DefaultPrintFunctionMode: ...
465
+
466
+ @final
467
+ class CSVPrintFunctionMode: ...
468
+
469
+ _PrintFunctionMode: TypeAlias = DefaultPrintFunctionMode | CSVPrintFunctionMode
470
+
471
+ ##
472
+ # Schedules
473
+ ##
474
+
475
+ @final
476
+ class Saturate:
477
+ span: _Span
478
+ schedule: _Schedule
479
+ def __init__(self, span: _Span, schedule: _Schedule) -> None: ...
480
+
481
+ @final
482
+ class Repeat:
483
+ span: _Span
484
+ length: int
485
+ schedule: _Schedule
486
+ def __init__(self, span: _Span, length: int, schedule: _Schedule) -> None: ...
487
+
488
+ @final
489
+ class Run:
490
+ span: _Span
491
+ config: RunConfig
492
+ def __init__(self, span: _Span, config: RunConfig) -> None: ...
493
+
494
+ @final
495
+ class Sequence:
496
+ span: _Span
497
+ schedules: list[_Schedule]
498
+ def __init__(self, span: _Span, schedules: list[_Schedule]) -> None: ...
499
+
500
+ _Schedule: TypeAlias = Saturate | Repeat | Run | Sequence
501
+
502
+ ##
503
+ # Subdatatypes
504
+ ##
505
+
506
+ @final
507
+ class SubVariants:
508
+ def __init__(self, variants: list[Variant]) -> None: ...
509
+ variants: list[Variant]
510
+
511
+ @final
512
+ class NewSort:
513
+ def __init__(self, name: str, args: list[_Expr]) -> None: ...
514
+ name: str
515
+ args: list[_Expr]
516
+
517
+ _Subdatatypes: TypeAlias = SubVariants | NewSort
518
+
519
+ ##
520
+ # Commands
521
+ ##
522
+
523
+ @final
524
+ class Datatype:
525
+ span: _Span
526
+ name: str
527
+ variants: list[Variant]
528
+ def __init__(self, span: _Span, name: str, variants: list[Variant]) -> None: ...
529
+
530
+ @final
531
+ class Datatypes:
532
+ span: _Span
533
+ datatypes: list[tuple[_Span, str, _Subdatatypes]]
534
+ def __init__(self, span: _Span, datatypes: list[tuple[_Span, str, _Subdatatypes]]) -> None: ...
535
+
536
+ @final
537
+ class Sort:
538
+ span: _Span
539
+ name: str
540
+ presort_and_args: tuple[str, list[_Expr]] | None
541
+ def __init__(self, span: _Span, name: str, presort_and_args: tuple[str, list[_Expr]] | None = None) -> None: ...
542
+
543
+ @final
544
+ class FunctionCommand:
545
+ span: _Span
546
+ name: str
547
+ schema: Schema
548
+ merge: _Expr | None
549
+ def __init__(self, span: _Span, name: str, schema: Schema, merge: _Expr | None) -> None: ...
550
+
551
+ @final
552
+ class AddRuleset:
553
+ span: _Span
554
+ name: str
555
+ def __init__(self, span: _Span, name: str) -> None: ...
556
+
557
+ @final
558
+ class RuleCommand:
559
+ name: str
560
+ ruleset: str
561
+ rule: Rule
562
+ def __init__(self, name: str, ruleset: str, rule: Rule) -> None: ...
563
+
564
+ @final
565
+ class RewriteCommand:
566
+ # TODO: Rename to ruleset
567
+ name: str
568
+ rewrite: Rewrite
569
+ subsume: bool
570
+ def __init__(self, name: str, rewrite: Rewrite, subsume: bool) -> None: ...
571
+
572
+ @final
573
+ class BiRewriteCommand:
574
+ # TODO: Rename to ruleset
575
+ name: str
576
+ rewrite: Rewrite
577
+ def __init__(self, name: str, rewrite: Rewrite) -> None: ...
578
+
579
+ @final
580
+ class ActionCommand:
581
+ action: _Action
582
+ def __init__(self, action: _Action) -> None: ...
583
+
584
+ @final
585
+ class RunSchedule:
586
+ schedule: _Schedule
587
+ def __init__(self, schedule: _Schedule) -> None: ...
588
+
589
+ @final
590
+ class Extract:
591
+ span: _Span
592
+ expr: _Expr
593
+ variants: _Expr
594
+ def __init__(self, span: _Span, expr: _Expr, variants: _Expr) -> None: ...
595
+
596
+ @final
597
+ class Check:
598
+ span: _Span
599
+ facts: list[_Fact]
600
+ def __init__(self, span: _Span, facts: list[_Fact]) -> None: ...
601
+
602
+ @final
603
+ class PrintFunction:
604
+ span: _Span
605
+ name: str
606
+ length: int | None
607
+ filename: str | None
608
+ mode: _PrintFunctionMode
609
+ def __init__(
610
+ self, span: _Span, name: str, length: int | None, filename: str | None, mode: _PrintFunctionMode
611
+ ) -> None: ...
612
+
613
+ @final
614
+ class PrintSize:
615
+ span: _Span
616
+ name: str | None
617
+ def __init__(self, span: _Span, name: str | None) -> None: ...
618
+
619
+ @final
620
+ class Output:
621
+ span: _Span
622
+ file: str
623
+ exprs: list[_Expr]
624
+ def __init__(self, span: _Span, file: str, exprs: list[_Expr]) -> None: ...
625
+
626
+ @final
627
+ class Input:
628
+ span: _Span
629
+ name: str
630
+ file: str
631
+ def __init__(self, span: _Span, name: str, file: str) -> None: ...
632
+
633
+ @final
634
+ class Push:
635
+ length: int
636
+ def __init__(self, length: int) -> None: ...
637
+
638
+ @final
639
+ class Pop:
640
+ span: _Span
641
+ length: int
642
+ def __init__(self, span: _Span, length: int) -> None: ...
643
+
644
+ @final
645
+ class Fail:
646
+ span: _Span
647
+ command: _Command
648
+ def __init__(self, span: _Span, command: _Command) -> None: ...
649
+
650
+ @final
651
+ class Include:
652
+ span: _Span
653
+ path: str
654
+ def __init__(self, span: _Span, path: str) -> None: ...
655
+
656
+ @final
657
+ class Relation:
658
+ span: _Span
659
+ name: str
660
+ inputs: list[str]
661
+
662
+ def __init__(self, span: _Span, name: str, inputs: list[str]) -> None: ...
663
+
664
+ @final
665
+ class Constructor:
666
+ span: _Span
667
+ name: str
668
+ schema: Schema
669
+ cost: int | None
670
+ unextractable: bool
671
+ def __init__(self, span: _Span, name: str, schema: Schema, cost: int | None, unextractable: bool) -> None: ...
672
+
673
+ @final
674
+ class PrintOverallStatistics:
675
+ def __init__(self) -> None: ...
676
+
677
+ @final
678
+ class UserDefined:
679
+ span: _Span
680
+ name: str
681
+ args: list[_Expr]
682
+ def __init__(self, span: _Span, name: str, args: list[_Expr]) -> None: ...
683
+
684
+ @final
685
+ class UnstableCombinedRuleset:
686
+ span: _Span
687
+ name: str
688
+ rulesets: list[str]
689
+ def __init__(self, span: _Span, name: str, rulesets: list[str]) -> None: ...
690
+
691
+ _Command: TypeAlias = (
692
+ Datatype
693
+ | Datatypes
694
+ | Sort
695
+ | FunctionCommand
696
+ | AddRuleset
697
+ | RuleCommand
698
+ | RewriteCommand
699
+ | BiRewriteCommand
700
+ | ActionCommand
701
+ | RunSchedule
702
+ | Extract
703
+ | Check
704
+ | PrintFunction
705
+ | PrintSize
706
+ | Output
707
+ | Input
708
+ | Push
709
+ | Pop
710
+ | Fail
711
+ | Include
712
+ | Relation
713
+ | PrintOverallStatistics
714
+ | UnstableCombinedRuleset
715
+ | Constructor
716
+ | UserDefined
717
+ )
718
+
719
+ ##
720
+ # TermDag
721
+ ##
722
+
723
+ @final
724
+ class TermDag:
725
+ def __init__(self) -> None: ...
726
+ def size(self) -> int: ...
727
+ def lookup(self, node: _Term) -> int: ...
728
+ def get(self, id: int) -> _Term: ...
729
+ def app(self, sym: str, children: list[int]) -> _Term: ...
730
+ def lit(self, lit: _Literal) -> _Term: ...
731
+ def var(self, sym: str) -> _Term: ...
732
+ def expr_to_term(self, expr: _Expr) -> _Term: ...
733
+ def term_to_expr(self, term: _Term, span: _Span) -> _Expr: ...
734
+ def to_string(self, term: _Term) -> str: ...