Skip to content

Commit

Permalink
Implement method _free_binders
Browse files Browse the repository at this point in the history
  • Loading branch information
tothtamas28 committed Jan 22, 2025
1 parent 213ad55 commit 5d40d2f
Showing 1 changed file with 21 additions and 5 deletions.
26 changes: 21 additions & 5 deletions pyk/src/pyk/k2lean4/k2lean4.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

from ..konvert import unmunge
from ..kore.internal import CollectionKind
from ..kore.manip import elim_aliases
from ..kore.manip import elim_aliases, free_occs
from ..kore.syntax import DV, And, App, EVar, SortApp, String, Top
from ..utils import FrozenDict, POSet
from .model import (
Expand Down Expand Up @@ -314,8 +314,25 @@ def _elim_fun_apps(self, pattern: Pattern, free: Iterator[str]) -> tuple[Pattern
return pattern, {}

def _free_binders(self, pattern: Pattern) -> list[Binder]:
# TODO
return []
free_vars = {occ for _, occs in free_occs(pattern).items() for occ in occs}
grouped_vars: dict[str, set[str]] = {}
for var in free_vars:
match var:
case EVar(name, SortApp(sort)):
ident = self._var_ident(name)
assert ident not in grouped_vars.get(sort, ())
grouped_vars.setdefault(sort, set()).add(ident)
case _:
raise AssertionError()
sorted_vars: dict[str, list[str]] = dict(
sorted(((sort, sorted(idents)) for sort, idents in grouped_vars.items()), key=lambda item: item[1][0])
)
return [ImplBinder(idents, Term(sort)) for sort, idents in sorted_vars.items()]

@staticmethod
def _var_ident(name: str) -> str:
assert name.startswith('Var')
return K2Lean4._symbol_ident(name[3:])

def _def_binders(self, defs: Mapping[str, Pattern]) -> list[Binder]:
# TODO
Expand All @@ -333,8 +350,7 @@ def _transform_pattern(self, pattern: Pattern) -> Term:
raise ValueError(f'Unsupported pattern: {pattern.text}')

def _transform_evar(self, name: str) -> Term:
assert name.startswith('Var')
return Term(self._symbol_ident(name[3:]))
return Term(self._var_ident(name))

def _transform_dv(self, sort: str, value: str) -> Term:
match sort:
Expand Down

0 comments on commit 5d40d2f

Please sign in to comment.