Higher-Order indexingΒΆ
Ideas for indexing of HOTerm.t
. We draw some ideas from fingerprint indexing
and mostly path indexing.
The basic idea currently is to extend path indexing so that it can deal with binders, extensible records and mainly multisets. To do so, we use an extended representation of positions in terms, with a non-deterministic variant:
Left
go to the left part of an application:(l @ r).left = l
.Right
go to the right part of an application:(l @ r).right = r
.Record_field of string
access the given record field, as in{x:t | _}.x = t
.Record_rest
access the rest of the extensible record. Basically{_ | R}.rest = R
.multiset of int
access some element of a multiset that hasn
elements. Here the choice is non-deterministic, and insertion and retrieval operations will need to take it into account.