sparql-view-unfold
    Preparing search index...

    What an operation binds, as one structure: its key set is exactly the variables in scope - what SELECT * expands to, the pVars - and the range stored for one is the term types it can hold when it is bound.

    Key presence and range are independent on purpose, which is what makes the merge sound. A key at emptyRange is a variable in scope that provably never binds, and it has to stay a key: pVars(Empty_S) := S. A rewrite may still shrink the scope of an empty operation, as transformations/filterFalse!transformFilterFalse does.

    One case deliberately drops a key rather than bottoming its range: a FILTER(!bound(?x)) takes ?x out of scope, which is what the pVars this replaced did too. The bottom range would say it more precisely, but (FBndII) reads absence as its emptiness proof, so moving it would change what the assertion pushdown concludes. Worth revisiting once the bottom has consumers.

    Hierarchy

    Index

    Constructors

    • Parameters

      • Optionalentries: readonly (readonly [string, RangeSet])[] | null

      Returns VRanges

    • Parameters

      • Optionaliterable: Iterable<readonly [string, RangeSet], any, any> | null

      Returns VRanges

    Properties

    "[toStringTag]": string
    size: number

    the number of elements in the Map.

    "[species]": MapConstructor

    Methods

    • Returns an iterable of entries in the map.

      Returns MapIterator<[string, RangeSet]>

    • Brings names into scope without saying anything about the terms they take.

      Parameters

      • names: Iterable<string>

        The variables to bring into scope

      Returns void

    • Whether some solution here can bind name: it is in scope and has a term left to take. The dual of neverBinds, for the licences and guards that read the fact positively.

      Parameters

      • name: string

        The variable to check

      Returns boolean

      whether it can bind

    • Returns void

    • Parameters

      • key: string

      Returns boolean

      true if an element in the Map existed and has been removed, or false if the element does not exist.

    • Returns an iterable of key, value pairs for every entry in the map.

      Returns MapIterator<[string, RangeSet]>

    • Executes a provided function once per each key/value pair in the Map, in insertion order.

      Parameters

      • callbackfn: (value: RangeSet, key: string, map: Map<string, RangeSet>) => void
      • OptionalthisArg: any

      Returns void

    • Returns a specified element from the Map object. If the value that is associated to the provided key is an object, then you will get a reference to that object and any change made to that object will effectively modify it inside the Map.

      Parameters

      • key: string

      Returns RangeSet | undefined

      Returns the element associated with the specified key. If no element is associated with the specified key, undefined is returned.

    • Parameters

      • key: string

      Returns boolean

      boolean indicating whether an element with the specified key exists or not.

    • Returns an iterable of keys in the map

      Returns MapIterator<string>

    • Brings name into scope and narrows what is known about it: the variable has to satisfy both.

      Parameters

      • name: string

        The variable to narrow

      • range: RangeSet

        The term types it also has to satisfy

      Returns void

    • Whether no solution here binds name: it is out of scope, or in scope with a range no term satisfies.

      Parameters

      • name: string

        The variable to check

      Returns boolean

      whether it never binds; anything reading assertions against an operation wants those two as one fact, bound(?x) being false either way

    • The term types name can be bound to here.

      Parameters

      • name: string

        The variable to look up

      Returns RangeSet

      its range, emptyRange when it is not in scope at all, since a variable this operation cannot bind takes no value in any of its solutions

    • Adds a new element with a specified key and value to the Map. If an element with the same key already exists, the element will be updated.

      Parameters

      Returns this

    • Returns an iterable of values in the map

      Returns MapIterator<RangeSet>