lattice

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 22, 2022 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Consts

func Consts() consts

Commonly used constant factory. WARNING: Not to be confused with constant propagation lattice.

func Create

func Create() factory

Factory method to create lattices or lattice elements.

func Elements

func Elements() elementFactory

Element factories

func IsTopLocation

func IsTopLocation(l loc.Location) bool

Checks whether a location is a top location. This is the case for local locations, or for allocation sites where the owning goroutine is the top goroutine

func MemOps

func MemOps(mem Memory) _mops

Types

type AbstractValue

type AbstractValue struct {
	// contains filtered or unexported fields
}

func TopValueForType

func TopValueForType(t T.Type) (top AbstractValue)

Compute the top abstract value for a given type

func ZeroValueForType

func ZeroValueForType(t T.Type) (zero AbstractValue)

Computes the zero abstract value for a given type. Only provides partial coverage for all given types.

func (AbstractValue) AbstractValue

func (m AbstractValue) AbstractValue() AbstractValue

func (AbstractValue) AddPointers

func (m AbstractValue) AddPointers(ls ...loc.Location) AbstractValue

func (AbstractValue) Analysis

func (AbstractValue) Analysis() Analysis

func (AbstractValue) AnalysisIntraprocess

func (AbstractValue) AnalysisIntraprocess() AnalysisIntraprocess

func (AbstractValue) AnalysisState

func (AbstractValue) AnalysisState() AnalysisState

func (AbstractValue) BasicValue

func (m AbstractValue) BasicValue() FlatElement

func (AbstractValue) ChanValue

func (m AbstractValue) ChanValue() ChannelInfo

func (AbstractValue) ChannelInfo

func (m AbstractValue) ChannelInfo() ChannelInfo

func (AbstractValue) Charges

func (AbstractValue) Charges() Charges

func (AbstractValue) Closure

func (m AbstractValue) Closure() *ssa.Function

func (AbstractValue) Cond

func (m AbstractValue) Cond() Cond

func (AbstractValue) CondValue

func (m AbstractValue) CondValue() Cond

func (AbstractValue) Difference

func (v1 AbstractValue) Difference(v2 AbstractValue) (AbstractValue, bool)

Recursively create a difference between values with variable-height lattices. It takes the receiver abstract value as the "base", and computes increases compared to the parameter abstract value.

func (AbstractValue) Dropped

func (AbstractValue) Dropped() *DroppedTop

func (AbstractValue) Eq

func (e1 AbstractValue) Eq(e2 Element) bool

func (AbstractValue) Flat

func (m AbstractValue) Flat() FlatElement

func (AbstractValue) FlatInt

func (AbstractValue) FlatInt() FlatIntElement

func (AbstractValue) ForEachField

func (e AbstractValue) ForEachField(do func(interface{}, AbstractValue))

For struct values, execute a piece of code for each field found in the struct

func (AbstractValue) Geq

func (e1 AbstractValue) Geq(e2 Element) bool

func (AbstractValue) HasFixedHeight

func (v AbstractValue) HasFixedHeight() bool

func (AbstractValue) Height

func (m AbstractValue) Height() int

func (AbstractValue) InfiniteMap

func (m AbstractValue) InfiniteMap() InfiniteMap

func (AbstractValue) InjectTopLocation

func (e AbstractValue) InjectTopLocation(l loc.AddressableLocation) AbstractValue

Inject represented top location into the value. Recursively traverse the abstract value and replace references to other locations represented by the given top location with the top location itself. Depending on value type:

- Pointer values insert the represented location and remove all references to other locations represented by the top location

- Struct values recursively inject fields

- Channel values recursively inject the payload

- All other values are returned as-is

func (AbstractValue) Interval

func (AbstractValue) Interval() Interval

func (AbstractValue) IsArray

func (m AbstractValue) IsArray() bool

func (AbstractValue) IsBasic

func (m AbstractValue) IsBasic() bool

func (AbstractValue) IsBot

func (e AbstractValue) IsBot() bool

func (AbstractValue) IsBotStruct

func (m AbstractValue) IsBotStruct() bool

Checks whether the struct is bot

func (AbstractValue) IsChan

func (m AbstractValue) IsChan() bool

func (AbstractValue) IsClosure

func (m AbstractValue) IsClosure() bool

func (AbstractValue) IsCond

func (m AbstractValue) IsCond() bool

func (AbstractValue) IsKnownStruct

func (m AbstractValue) IsKnownStruct() bool

func (AbstractValue) IsLocker

func (m AbstractValue) IsLocker() bool

func (AbstractValue) IsMap

func (m AbstractValue) IsMap() bool

func (AbstractValue) IsMutex

func (m AbstractValue) IsMutex() bool

func (AbstractValue) IsPointer

func (m AbstractValue) IsPointer() bool

func (AbstractValue) IsRWMutex

func (m AbstractValue) IsRWMutex() bool

func (AbstractValue) IsStruct

func (m AbstractValue) IsStruct() bool

func (AbstractValue) IsTopStruct

func (m AbstractValue) IsTopStruct() bool

Checks whether the struct is top

func (AbstractValue) IsWildcard

func (e AbstractValue) IsWildcard() bool

func (AbstractValue) Join

func (e1 AbstractValue) Join(e2 Element) Element

func (AbstractValue) Lattice

func (e AbstractValue) Lattice() Lattice

func (AbstractValue) Leq

func (e1 AbstractValue) Leq(e2 Element) bool

func (AbstractValue) Lifted

func (AbstractValue) Lifted() *LiftedBot

func (AbstractValue) Map

func (AbstractValue) Map() Map

func (AbstractValue) Meet

func (e1 AbstractValue) Meet(e2 Element) Element

func (AbstractValue) Memory

func (AbstractValue) Memory() Memory

func (AbstractValue) MonoJoin

func (e1 AbstractValue) MonoJoin(e2 AbstractValue) AbstractValue

func (AbstractValue) MonoMeet

func (e1 AbstractValue) MonoMeet(e2 AbstractValue) AbstractValue

func (AbstractValue) MutexValue

func (m AbstractValue) MutexValue() FlatElement

func (AbstractValue) OneElement

func (AbstractValue) OneElement() oneElementLatticeElement

func (AbstractValue) OpOutcomes

func (AbstractValue) OpOutcomes() OpOutcomes

func (AbstractValue) PointerValue

func (m AbstractValue) PointerValue() PointsTo

func (AbstractValue) PointsTo

func (m AbstractValue) PointsTo() PointsTo

func (AbstractValue) Product

func (AbstractValue) Product() Product

func (AbstractValue) RWMutex

func (m AbstractValue) RWMutex() RWMutex

func (AbstractValue) RWMutexValue

func (m AbstractValue) RWMutexValue() RWMutex

func (AbstractValue) Set

func (AbstractValue) Set() Set

func (AbstractValue) String

func (m AbstractValue) String() string

func (AbstractValue) Struct

func (m AbstractValue) Struct() Element

Retrieve Struct component without coercing into an infinite map

func (AbstractValue) StructValue

func (m AbstractValue) StructValue() InfiniteMap

func (AbstractValue) ThreadCharges

func (AbstractValue) ThreadCharges() ThreadCharges

func (AbstractValue) ToBot

func (e AbstractValue) ToBot() AbstractValue

func (AbstractValue) ToTop

func (e AbstractValue) ToTop() AbstractValue

func (AbstractValue) TwoElement

func (AbstractValue) TwoElement() twoElementLatticeElement

func (AbstractValue) Update

func (m AbstractValue) Update(x Element) AbstractValue

func (AbstractValue) UpdateChan

func (m AbstractValue) UpdateChan(x Element) AbstractValue

func (AbstractValue) UpdateCond

func (m AbstractValue) UpdateCond(x Element) AbstractValue

func (AbstractValue) UpdateMutex

func (m AbstractValue) UpdateMutex(x Element) AbstractValue

func (AbstractValue) UpdatePointer

func (m AbstractValue) UpdatePointer(x Element) AbstractValue

func (AbstractValue) UpdateRWMutex

func (m AbstractValue) UpdateRWMutex(x Element) AbstractValue

type AbstractValueConfig

type AbstractValueConfig struct {
	// Constant value (wrapped in interface)
	Basic interface{}
	// Reference to location array. The reference
	// helps distinguish between no PointsTo information
	// (a nil pointer), and the empty pointer location
	// (a nil slice stored at PointsTo)
	PointsTo *[]loc.Location
	// Struct fields
	Struct map[interface{}]Element
	// Abstract value is one of the following.
	// Mutually eclusive.
	Channel  bool
	Mutex    bool
	RWMutex  bool
	Cond     bool
	Wildcard bool
}

Configuration structure for creating abstract values

func (AbstractValueConfig) String

func (config AbstractValueConfig) String() string

type AbstractValueLattice

type AbstractValueLattice struct {
	ProductLattice
}

func (*AbstractValueLattice) AbstractValue

func (v *AbstractValueLattice) AbstractValue() *AbstractValueLattice

func (*AbstractValueLattice) Analysis

func (*AbstractValueLattice) Analysis() *AnalysisLattice

func (*AbstractValueLattice) AnalysisIntraprocess

func (*AbstractValueLattice) AnalysisIntraprocess() *AnalysisIntraprocessLattice

func (*AbstractValueLattice) Bot

func (v *AbstractValueLattice) Bot() Element

func (*AbstractValueLattice) ChannelInfo

func (*AbstractValueLattice) ChannelInfo() *ChannelInfoLattice

func (*AbstractValueLattice) Dropped

func (*AbstractValueLattice) Dropped() *Dropped

func (*AbstractValueLattice) Eq

func (l1 *AbstractValueLattice) Eq(l2 Lattice) bool

func (*AbstractValueLattice) Flat

func (*AbstractValueLattice) Flat() *FlatLattice

func (*AbstractValueLattice) FlatFinite

func (*AbstractValueLattice) FlatFinite() *FlatFiniteLattice

func (*AbstractValueLattice) FlatInt

func (*AbstractValueLattice) FlatInt() *FlatIntLattice

func (*AbstractValueLattice) Get

func (l *AbstractValueLattice) Get(i int) Lattice

func (*AbstractValueLattice) InfiniteMap

func (*AbstractValueLattice) InfiniteMap() *InfiniteMapLattice

func (*AbstractValueLattice) Interval

func (*AbstractValueLattice) Interval() *IntervalLattice

func (*AbstractValueLattice) LatticeForType

func (l *AbstractValueLattice) LatticeForType(T types.Type) Lattice

func (*AbstractValueLattice) Lifted

func (*AbstractValueLattice) Lifted() *Lifted

func (*AbstractValueLattice) Map

func (*AbstractValueLattice) Map() *MapLattice

func (*AbstractValueLattice) Memory

func (*AbstractValueLattice) Memory() *MemoryLattice

func (*AbstractValueLattice) OneElement

func (*AbstractValueLattice) OneElement() *OneElementLattice

func (*AbstractValueLattice) OpOutcomes

func (*AbstractValueLattice) OpOutcomes() *OpOutcomesLattice

func (*AbstractValueLattice) Powerset

func (*AbstractValueLattice) Powerset() *Powerset

func (*AbstractValueLattice) Preheight

func (*AbstractValueLattice) Preheight() int

func (*AbstractValueLattice) Product

func (l *AbstractValueLattice) Product() *ProductLattice

func (AbstractValueLattice) String

func (AbstractValueLattice) String() string

func (*AbstractValueLattice) Top

func (v *AbstractValueLattice) Top() Element

func (*AbstractValueLattice) TwoElement

func (*AbstractValueLattice) TwoElement() *TwoElementLattice

func (*AbstractValueLattice) Value

type AnalysisStateLattice

type AnalysisStateLattice struct {
	ProductLattice
}

func (*AnalysisStateLattice) AbstractValue

func (*AnalysisStateLattice) AbstractValue() *AbstractValueLattice

func (*AnalysisStateLattice) Analysis

func (*AnalysisStateLattice) Analysis() *AnalysisLattice

func (*AnalysisStateLattice) AnalysisIntraprocess

func (*AnalysisStateLattice) AnalysisIntraprocess() *AnalysisIntraprocessLattice

func (*AnalysisStateLattice) AnalysisState

func (c *AnalysisStateLattice) AnalysisState() *AnalysisStateLattice

func (*AnalysisStateLattice) Bot

func (c *AnalysisStateLattice) Bot() Element

func (*AnalysisStateLattice) ChannelInfo

func (*AnalysisStateLattice) ChannelInfo() *ChannelInfoLattice

func (*AnalysisStateLattice) Dropped

func (*AnalysisStateLattice) Dropped() *Dropped

func (*AnalysisStateLattice) Eq

func (l1 *AnalysisStateLattice) Eq(l2 Lattice) bool

func (*AnalysisStateLattice) Flat

func (*AnalysisStateLattice) Flat() *FlatLattice

func (*AnalysisStateLattice) FlatFinite

func (*AnalysisStateLattice) FlatFinite() *FlatFiniteLattice

func (*AnalysisStateLattice) FlatInt

func (*AnalysisStateLattice) FlatInt() *FlatIntLattice

func (*AnalysisStateLattice) InfiniteMap

func (*AnalysisStateLattice) InfiniteMap() *InfiniteMapLattice

func (*AnalysisStateLattice) Interval

func (*AnalysisStateLattice) Interval() *IntervalLattice

func (*AnalysisStateLattice) Lifted

func (*AnalysisStateLattice) Lifted() *Lifted

func (*AnalysisStateLattice) Map

func (*AnalysisStateLattice) Map() *MapLattice

func (*AnalysisStateLattice) Memory

func (*AnalysisStateLattice) Memory() *MemoryLattice

func (*AnalysisStateLattice) OneElement

func (*AnalysisStateLattice) OneElement() *OneElementLattice

func (*AnalysisStateLattice) OpOutcomes

func (*AnalysisStateLattice) OpOutcomes() *OpOutcomesLattice

func (*AnalysisStateLattice) Powerset

func (*AnalysisStateLattice) Powerset() *Powerset

func (*AnalysisStateLattice) Preheight

func (*AnalysisStateLattice) Preheight() int

func (*AnalysisStateLattice) Product

func (c *AnalysisStateLattice) Product() *ProductLattice

func (*AnalysisStateLattice) String

func (*AnalysisStateLattice) String() string

func (*AnalysisStateLattice) Top

func (c *AnalysisStateLattice) Top() Element

func (*AnalysisStateLattice) TwoElement

func (*AnalysisStateLattice) TwoElement() *TwoElementLattice

type ChannelInfoLattice

type ChannelInfoLattice struct {
	ProductLattice
}

Information about channels used during abstract interpretation.

func (*ChannelInfoLattice) AbstractValue

func (*ChannelInfoLattice) AbstractValue() *AbstractValueLattice

func (*ChannelInfoLattice) Analysis

func (*ChannelInfoLattice) Analysis() *AnalysisLattice

func (*ChannelInfoLattice) AnalysisIntraprocess

func (*ChannelInfoLattice) AnalysisIntraprocess() *AnalysisIntraprocessLattice

func (*ChannelInfoLattice) Bot

func (c *ChannelInfoLattice) Bot() Element

func (*ChannelInfoLattice) BufferFlat

func (c *ChannelInfoLattice) BufferFlat() *FlatIntLattice

func (*ChannelInfoLattice) BufferInterval

func (c *ChannelInfoLattice) BufferInterval() *IntervalLattice

func (*ChannelInfoLattice) Capacity

func (c *ChannelInfoLattice) Capacity() *FlatIntLattice

func (*ChannelInfoLattice) ChannelInfo

func (c *ChannelInfoLattice) ChannelInfo() *ChannelInfoLattice

func (*ChannelInfoLattice) Dropped

func (*ChannelInfoLattice) Dropped() *Dropped

func (*ChannelInfoLattice) Eq

func (l1 *ChannelInfoLattice) Eq(l2 Lattice) bool

func (*ChannelInfoLattice) Flat

func (*ChannelInfoLattice) Flat() *FlatLattice

func (*ChannelInfoLattice) FlatFinite

func (*ChannelInfoLattice) FlatFinite() *FlatFiniteLattice

func (*ChannelInfoLattice) FlatInt

func (*ChannelInfoLattice) FlatInt() *FlatIntLattice

func (*ChannelInfoLattice) InfiniteMap

func (*ChannelInfoLattice) InfiniteMap() *InfiniteMapLattice

func (*ChannelInfoLattice) Interval

func (*ChannelInfoLattice) Interval() *IntervalLattice

func (*ChannelInfoLattice) Lifted

func (*ChannelInfoLattice) Lifted() *Lifted

func (*ChannelInfoLattice) Map

func (*ChannelInfoLattice) Map() *MapLattice

func (*ChannelInfoLattice) Memory

func (*ChannelInfoLattice) Memory() *MemoryLattice

func (*ChannelInfoLattice) OneElement

func (*ChannelInfoLattice) OneElement() *OneElementLattice

func (*ChannelInfoLattice) OpOutcomes

func (*ChannelInfoLattice) OpOutcomes() *OpOutcomesLattice

func (*ChannelInfoLattice) Payload

func (*ChannelInfoLattice) Powerset

func (*ChannelInfoLattice) Powerset() *Powerset

func (*ChannelInfoLattice) Preheight

func (*ChannelInfoLattice) Preheight() int

func (*ChannelInfoLattice) Product

func (c *ChannelInfoLattice) Product() *ProductLattice

func (*ChannelInfoLattice) Status

func (*ChannelInfoLattice) String

func (*ChannelInfoLattice) String() string

func (*ChannelInfoLattice) Top

func (c *ChannelInfoLattice) Top() Element

func (*ChannelInfoLattice) TwoElement

func (*ChannelInfoLattice) TwoElement() *TwoElementLattice

type CondLattice

type CondLattice struct {
	ProductLattice
}

func (*CondLattice) AbstractValue

func (*CondLattice) AbstractValue() *AbstractValueLattice

func (*CondLattice) Analysis

func (*CondLattice) Analysis() *AnalysisLattice

func (*CondLattice) AnalysisIntraprocess

func (*CondLattice) AnalysisIntraprocess() *AnalysisIntraprocessLattice

func (CondLattice) Bot

func (l CondLattice) Bot() Element

func (*CondLattice) ChannelInfo

func (*CondLattice) ChannelInfo() *ChannelInfoLattice

func (*CondLattice) Dropped

func (*CondLattice) Dropped() *Dropped

func (CondLattice) Eq

func (l1 CondLattice) Eq(l2 Lattice) bool

func (*CondLattice) Flat

func (*CondLattice) Flat() *FlatLattice

func (*CondLattice) FlatFinite

func (*CondLattice) FlatFinite() *FlatFiniteLattice

func (*CondLattice) FlatInt

func (*CondLattice) FlatInt() *FlatIntLattice

func (*CondLattice) InfiniteMap

func (*CondLattice) InfiniteMap() *InfiniteMapLattice

func (*CondLattice) Interval

func (*CondLattice) Interval() *IntervalLattice

func (*CondLattice) Lifted

func (*CondLattice) Lifted() *Lifted

func (*CondLattice) Map

func (*CondLattice) Map() *MapLattice

func (*CondLattice) Memory

func (*CondLattice) Memory() *MemoryLattice

func (*CondLattice) OneElement

func (*CondLattice) OneElement() *OneElementLattice

func (*CondLattice) OpOutcomes

func (*CondLattice) OpOutcomes() *OpOutcomesLattice

func (*CondLattice) Powerset

func (*CondLattice) Powerset() *Powerset

func (*CondLattice) Preheight

func (*CondLattice) Preheight() int

func (CondLattice) String

func (CondLattice) String() string

func (CondLattice) Top

func (l CondLattice) Top() Element

func (*CondLattice) TwoElement

func (*CondLattice) TwoElement() *TwoElementLattice

type ConstantPropagationLattice

type ConstantPropagationLattice struct {
	FlatLattice
	// contains filtered or unexported fields
}

func (*ConstantPropagationLattice) AbstractValue

func (*ConstantPropagationLattice) AbstractValue() *AbstractValueLattice

func (*ConstantPropagationLattice) Analysis

func (*ConstantPropagationLattice) Analysis() *AnalysisLattice

func (*ConstantPropagationLattice) AnalysisIntraprocess

func (*ConstantPropagationLattice) AnalysisIntraprocess() *AnalysisIntraprocessLattice

func (*ConstantPropagationLattice) ChannelInfo

func (*ConstantPropagationLattice) ChannelInfo() *ChannelInfoLattice

func (*ConstantPropagationLattice) Dropped

func (*ConstantPropagationLattice) Dropped() *Dropped

func (*ConstantPropagationLattice) Eq

func (*ConstantPropagationLattice) Flat

func (*ConstantPropagationLattice) Flat() *FlatLattice

func (*ConstantPropagationLattice) FlatFinite

func (*ConstantPropagationLattice) FlatFinite() *FlatFiniteLattice

func (*ConstantPropagationLattice) FlatInt

func (*ConstantPropagationLattice) FlatInt() *FlatIntLattice

func (*ConstantPropagationLattice) InfiniteMap

func (*ConstantPropagationLattice) InfiniteMap() *InfiniteMapLattice

func (*ConstantPropagationLattice) Interval

func (*ConstantPropagationLattice) Interval() *IntervalLattice

func (*ConstantPropagationLattice) Lifted

func (*ConstantPropagationLattice) Lifted() *Lifted

func (*ConstantPropagationLattice) Map

func (*ConstantPropagationLattice) Map() *MapLattice

func (*ConstantPropagationLattice) Memory

func (*ConstantPropagationLattice) Memory() *MemoryLattice

func (*ConstantPropagationLattice) OneElement

func (*ConstantPropagationLattice) OneElement() *OneElementLattice

func (*ConstantPropagationLattice) OpOutcomes

func (*ConstantPropagationLattice) OpOutcomes() *OpOutcomesLattice

func (*ConstantPropagationLattice) Powerset

func (*ConstantPropagationLattice) Powerset() *Powerset

func (*ConstantPropagationLattice) Preheight

func (*ConstantPropagationLattice) Preheight() int

func (*ConstantPropagationLattice) Product

func (*ConstantPropagationLattice) Product() *ProductLattice

func (ConstantPropagationLattice) String

func (*ConstantPropagationLattice) TwoElement

func (*ConstantPropagationLattice) TwoElement() *TwoElementLattice

type Dropped

type Dropped struct {
	Lattice
	// contains filtered or unexported fields
}

func Drop

func Drop(lat Lattice) *Dropped

func (*Dropped) Dropped

func (l *Dropped) Dropped() *Dropped

func (*Dropped) Eq

func (l1 *Dropped) Eq(l2 Lattice) bool

func (*Dropped) Flat

func (l *Dropped) Flat() *FlatLattice

func (*Dropped) FlatFinite

func (l *Dropped) FlatFinite() *FlatFiniteLattice

func (*Dropped) FlatInt

func (l *Dropped) FlatInt() *FlatIntLattice

func (*Dropped) InfiniteMap

func (l *Dropped) InfiniteMap() *InfiniteMapLattice

func (*Dropped) Interval

func (l *Dropped) Interval() *IntervalLattice

func (*Dropped) Lifted

func (l *Dropped) Lifted() *Lifted

func (*Dropped) Map

func (l *Dropped) Map() *MapLattice

func (*Dropped) Powerset

func (l *Dropped) Powerset() *Powerset

func (*Dropped) Preheight

func (l *Dropped) Preheight() int

func (*Dropped) Product

func (l *Dropped) Product() *ProductLattice

func (*Dropped) String

func (l *Dropped) String() string

func (*Dropped) Top

func (l *Dropped) Top() Element

func (*Dropped) TwoElement

func (l *Dropped) TwoElement() *TwoElementLattice

type DroppedTop

type DroppedTop struct {
	// contains filtered or unexported fields
}

func (DroppedTop) AbstractValue

func (e DroppedTop) AbstractValue() AbstractValue

func (DroppedTop) Analysis

func (DroppedTop) Analysis() Analysis

func (DroppedTop) AnalysisIntraprocess

func (DroppedTop) AnalysisIntraprocess() AnalysisIntraprocess

func (DroppedTop) AnalysisState

func (DroppedTop) AnalysisState() AnalysisState

func (DroppedTop) ChannelInfo

func (DroppedTop) ChannelInfo() ChannelInfo

func (DroppedTop) Charges

func (DroppedTop) Charges() Charges

func (DroppedTop) Cond

func (DroppedTop) Cond() Cond

func (DroppedTop) Dropped

func (DroppedTop) Dropped() *DroppedTop

func (*DroppedTop) Eq

func (e1 *DroppedTop) Eq(e2 Element) bool

func (DroppedTop) Flat

func (DroppedTop) Flat() FlatElement

func (DroppedTop) FlatInt

func (DroppedTop) FlatInt() FlatIntElement

func (*DroppedTop) Geq

func (e1 *DroppedTop) Geq(e2 Element) bool

func (*DroppedTop) Height

func (e *DroppedTop) Height() int

func (*DroppedTop) Index

func (e *DroppedTop) Index() int

func (DroppedTop) InfiniteMap

func (DroppedTop) InfiniteMap() InfiniteMap

func (DroppedTop) Interval

func (DroppedTop) Interval() Interval

func (*DroppedTop) Join

func (e1 *DroppedTop) Join(e2 Element) Element

func (DroppedTop) Lattice

func (e DroppedTop) Lattice() Lattice

func (*DroppedTop) Leq

func (e1 *DroppedTop) Leq(e2 Element) bool

func (DroppedTop) Lifted

func (DroppedTop) Lifted() *LiftedBot

func (DroppedTop) Map

func (DroppedTop) Map() Map

func (*DroppedTop) Meet

func (e1 *DroppedTop) Meet(e2 Element) Element

func (DroppedTop) Memory

func (DroppedTop) Memory() Memory

func (DroppedTop) OneElement

func (DroppedTop) OneElement() oneElementLatticeElement

func (DroppedTop) OpOutcomes

func (DroppedTop) OpOutcomes() OpOutcomes

func (DroppedTop) PointsTo

func (DroppedTop) PointsTo() PointsTo

func (DroppedTop) Product

func (DroppedTop) Product() Product

func (DroppedTop) RWMutex

func (DroppedTop) RWMutex() RWMutex

func (DroppedTop) Set

func (DroppedTop) Set() Set

func (*DroppedTop) String

func (e *DroppedTop) String() string

func (DroppedTop) ThreadCharges

func (DroppedTop) ThreadCharges() ThreadCharges

func (DroppedTop) TwoElement

func (DroppedTop) TwoElement() twoElementLatticeElement

type Element

type Element interface {
	// Type conversion API
	OneElement() oneElementLatticeElement
	TwoElement() twoElementLatticeElement
	AbstractValue() AbstractValue
	AnalysisState() AnalysisState
	Analysis() Analysis
	AnalysisIntraprocess() AnalysisIntraprocess
	ChannelInfo() ChannelInfo
	Charges() Charges
	Dropped() *DroppedTop
	Flat() FlatElement
	FlatInt() FlatIntElement
	InfiniteMap() InfiniteMap
	Interval() Interval
	Lifted() *LiftedBot
	Map() Map
	Memory() Memory
	OpOutcomes() OpOutcomes
	PointsTo() PointsTo
	Product() Product
	RWMutex() RWMutex
	Cond() Cond
	Set() Set
	ThreadCharges() ThreadCharges

	Lattice() Lattice

	// External API for lattice element operations.
	// They dynamically perform lattice type checking.
	Leq(Element) bool
	Geq(Element) bool
	Eq(Element) bool
	Join(Element) Element
	Meet(Element) Element

	// Representational components
	String() string
	// Encodes the distance from the bottom of the lattice
	// to the element that calls this method.
	Height() int
	// contains filtered or unexported methods
}

type FiniteBound

type FiniteBound int

func (FiniteBound) Div

func (FiniteBound) Eq

func (b1 FiniteBound) Eq(b2 IntervalBound) bool

func (FiniteBound) Geq

func (b1 FiniteBound) Geq(b2 IntervalBound) bool

func (FiniteBound) Gt

func (b1 FiniteBound) Gt(b2 IntervalBound) bool

func (FiniteBound) IsInfinite

func (FiniteBound) IsInfinite() bool

func (FiniteBound) Leq

func (b1 FiniteBound) Leq(b2 IntervalBound) bool

func (FiniteBound) Lt

func (b1 FiniteBound) Lt(b2 IntervalBound) bool

func (FiniteBound) Max

func (FiniteBound) Min

func (FiniteBound) Minus

func (FiniteBound) Mult

func (FiniteBound) Plus

func (FiniteBound) String

func (b FiniteBound) String() string

type FlatBot

type FlatBot struct {
	// contains filtered or unexported fields
}

func (FlatBot) Eq

func (e1 FlatBot) Eq(e2 Element) bool

func (FlatBot) Flat

func (e FlatBot) Flat() FlatElement

func (FlatBot) Geq

func (e1 FlatBot) Geq(e2 Element) bool

func (FlatBot) Height

func (FlatBot) Height() int

func (FlatBot) Is

func (f1 FlatBot) Is(f2 interface{}) bool

func (FlatBot) IsBot

func (e FlatBot) IsBot() bool

func (FlatBot) IsTop

func (e FlatBot) IsTop() bool

func (FlatBot) Join

func (e1 FlatBot) Join(e2 Element) Element

func (FlatBot) Leq

func (e1 FlatBot) Leq(e2 Element) bool

func (FlatBot) Meet

func (e1 FlatBot) Meet(e2 Element) Element

func (FlatBot) String

func (FlatBot) String() string

func (FlatBot) Value

func (FlatBot) Value() interface{}

type FlatElement

type FlatElement interface {
	Element
	IsBot() bool
	IsTop() bool
	Value() interface{}
	// Check via equality whether the flat element
	// represents the given value. May also be overloaded
	// with flat elements directly to leverage lattice element equality.
	Is(x interface{}) bool
}

type FlatFiniteLattice

type FlatFiniteLattice struct {
	FlatLattice
	// contains filtered or unexported fields
}

func (*FlatFiniteLattice) AbstractValue

func (*FlatFiniteLattice) AbstractValue() *AbstractValueLattice

func (*FlatFiniteLattice) Analysis

func (*FlatFiniteLattice) Analysis() *AnalysisLattice

func (*FlatFiniteLattice) AnalysisIntraprocess

func (*FlatFiniteLattice) AnalysisIntraprocess() *AnalysisIntraprocessLattice

func (*FlatFiniteLattice) ChannelInfo

func (*FlatFiniteLattice) ChannelInfo() *ChannelInfoLattice

func (*FlatFiniteLattice) Dropped

func (*FlatFiniteLattice) Dropped() *Dropped

func (*FlatFiniteLattice) Eq

func (l1 *FlatFiniteLattice) Eq(l2 Lattice) bool

func (*FlatFiniteLattice) Flat

func (*FlatFiniteLattice) Flat() *FlatLattice

func (*FlatFiniteLattice) FlatFinite

func (l *FlatFiniteLattice) FlatFinite() *FlatFiniteLattice

func (*FlatFiniteLattice) FlatInt

func (*FlatFiniteLattice) FlatInt() *FlatIntLattice

func (*FlatFiniteLattice) InfiniteMap

func (*FlatFiniteLattice) InfiniteMap() *InfiniteMapLattice

func (*FlatFiniteLattice) Interval

func (*FlatFiniteLattice) Interval() *IntervalLattice

func (*FlatFiniteLattice) Lifted

func (*FlatFiniteLattice) Lifted() *Lifted

func (*FlatFiniteLattice) Map

func (*FlatFiniteLattice) Map() *MapLattice

func (*FlatFiniteLattice) Memory

func (*FlatFiniteLattice) Memory() *MemoryLattice

func (*FlatFiniteLattice) OneElement

func (*FlatFiniteLattice) OneElement() *OneElementLattice

func (*FlatFiniteLattice) OpOutcomes

func (*FlatFiniteLattice) OpOutcomes() *OpOutcomesLattice

func (*FlatFiniteLattice) Powerset

func (*FlatFiniteLattice) Powerset() *Powerset

func (*FlatFiniteLattice) Preheight

func (*FlatFiniteLattice) Preheight() int

func (*FlatFiniteLattice) Product

func (*FlatFiniteLattice) Product() *ProductLattice

func (*FlatFiniteLattice) String

func (l *FlatFiniteLattice) String() string

func (*FlatFiniteLattice) TwoElement

func (*FlatFiniteLattice) TwoElement() *TwoElementLattice

type FlatIntElement

type FlatIntElement struct {
	// contains filtered or unexported fields
}

func (FlatIntElement) AbstractValue

func (e FlatIntElement) AbstractValue() AbstractValue

func (FlatIntElement) Analysis

func (FlatIntElement) Analysis() Analysis

func (FlatIntElement) AnalysisIntraprocess

func (FlatIntElement) AnalysisIntraprocess() AnalysisIntraprocess

func (FlatIntElement) AnalysisState

func (FlatIntElement) AnalysisState() AnalysisState

func (FlatIntElement) ChannelInfo

func (FlatIntElement) ChannelInfo() ChannelInfo

func (FlatIntElement) Charges

func (FlatIntElement) Charges() Charges

func (FlatIntElement) Cond

func (FlatIntElement) Cond() Cond

func (FlatIntElement) Dropped

func (FlatIntElement) Dropped() *DroppedTop

func (FlatIntElement) Eq

func (e1 FlatIntElement) Eq(e2 Element) bool

func (FlatIntElement) Flat

func (e FlatIntElement) Flat() FlatElement

func (FlatIntElement) FlatInt

func (e FlatIntElement) FlatInt() FlatIntElement

func (FlatIntElement) Geq

func (e1 FlatIntElement) Geq(e2 Element) bool

func (FlatIntElement) Height

func (e FlatIntElement) Height() int

func (FlatIntElement) IValue

func (e FlatIntElement) IValue() int

func (FlatIntElement) InfiniteMap

func (FlatIntElement) InfiniteMap() InfiniteMap

func (FlatIntElement) Interval

func (FlatIntElement) Interval() Interval

func (FlatIntElement) Is

func (e FlatIntElement) Is(x interface{}) bool

func (FlatIntElement) IsBot

func (e FlatIntElement) IsBot() bool

func (FlatIntElement) IsTop

func (e FlatIntElement) IsTop() bool

func (FlatIntElement) Join

func (e1 FlatIntElement) Join(e2 Element) Element

func (FlatIntElement) Lattice

func (e FlatIntElement) Lattice() Lattice

func (FlatIntElement) Leq

func (e1 FlatIntElement) Leq(e2 Element) bool

func (FlatIntElement) Lifted

func (FlatIntElement) Lifted() *LiftedBot

func (FlatIntElement) Map

func (FlatIntElement) Map() Map

func (FlatIntElement) Meet

func (e1 FlatIntElement) Meet(e2 Element) Element

func (FlatIntElement) Memory

func (FlatIntElement) Memory() Memory

func (FlatIntElement) OneElement

func (FlatIntElement) OneElement() oneElementLatticeElement

func (FlatIntElement) OpOutcomes

func (FlatIntElement) OpOutcomes() OpOutcomes

func (FlatIntElement) PointsTo

func (FlatIntElement) PointsTo() PointsTo

func (FlatIntElement) Product

func (FlatIntElement) Product() Product

func (FlatIntElement) RWMutex

func (FlatIntElement) RWMutex() RWMutex

func (FlatIntElement) Set

func (FlatIntElement) Set() Set

func (FlatIntElement) String

func (e FlatIntElement) String() string

func (FlatIntElement) ThreadCharges

func (FlatIntElement) ThreadCharges() ThreadCharges

func (FlatIntElement) TwoElement

func (FlatIntElement) TwoElement() twoElementLatticeElement

func (FlatIntElement) Value

func (e FlatIntElement) Value() interface{}

Satisfy the FlatElement interface

type FlatIntLattice

type FlatIntLattice struct {
	FlatLattice
	// contains filtered or unexported fields
}

func (*FlatIntLattice) AbstractValue

func (*FlatIntLattice) AbstractValue() *AbstractValueLattice

func (*FlatIntLattice) Analysis

func (*FlatIntLattice) Analysis() *AnalysisLattice

func (*FlatIntLattice) AnalysisIntraprocess

func (*FlatIntLattice) AnalysisIntraprocess() *AnalysisIntraprocessLattice

func (*FlatIntLattice) ChannelInfo

func (*FlatIntLattice) ChannelInfo() *ChannelInfoLattice

func (*FlatIntLattice) Dropped

func (*FlatIntLattice) Dropped() *Dropped

func (*FlatIntLattice) Eq

func (l1 *FlatIntLattice) Eq(l2 Lattice) bool

func (*FlatIntLattice) Flat

func (*FlatIntLattice) Flat() *FlatLattice

func (*FlatIntLattice) FlatFinite

func (*FlatIntLattice) FlatFinite() *FlatFiniteLattice

func (*FlatIntLattice) FlatInt

func (l *FlatIntLattice) FlatInt() *FlatIntLattice

func (*FlatIntLattice) InfiniteMap

func (*FlatIntLattice) InfiniteMap() *InfiniteMapLattice

func (*FlatIntLattice) Interval

func (*FlatIntLattice) Interval() *IntervalLattice

func (*FlatIntLattice) Lifted

func (*FlatIntLattice) Lifted() *Lifted

func (*FlatIntLattice) Map

func (*FlatIntLattice) Map() *MapLattice

func (*FlatIntLattice) Memory

func (*FlatIntLattice) Memory() *MemoryLattice

func (*FlatIntLattice) OneElement

func (*FlatIntLattice) OneElement() *OneElementLattice

func (*FlatIntLattice) OpOutcomes

func (*FlatIntLattice) OpOutcomes() *OpOutcomesLattice

func (*FlatIntLattice) Powerset

func (*FlatIntLattice) Powerset() *Powerset

func (*FlatIntLattice) Preheight

func (*FlatIntLattice) Preheight() int

func (*FlatIntLattice) Product

func (*FlatIntLattice) Product() *ProductLattice

func (*FlatIntLattice) String

func (l *FlatIntLattice) String() string

func (*FlatIntLattice) TwoElement

func (*FlatIntLattice) TwoElement() *TwoElementLattice

type FlatLattice

type FlatLattice struct {
	// contains filtered or unexported fields
}

func (*FlatLattice) Bot

func (l *FlatLattice) Bot() Element

func (*FlatLattice) Top

func (l *FlatLattice) Top() Element

type FlatTop

type FlatTop struct {
	// contains filtered or unexported fields
}

func (FlatTop) Eq

func (e1 FlatTop) Eq(e2 Element) bool

func (FlatTop) Flat

func (e FlatTop) Flat() FlatElement

func (FlatTop) Geq

func (e1 FlatTop) Geq(e2 Element) bool

func (FlatTop) Height

func (FlatTop) Height() int

func (FlatTop) Is

func (f1 FlatTop) Is(f2 interface{}) bool

func (FlatTop) IsBot

func (e FlatTop) IsBot() bool

func (FlatTop) IsTop

func (e FlatTop) IsTop() bool

func (FlatTop) Join

func (e1 FlatTop) Join(e2 Element) Element

func (FlatTop) Leq

func (e1 FlatTop) Leq(e2 Element) bool

func (FlatTop) Meet

func (e1 FlatTop) Meet(e2 Element) Element

func (FlatTop) String

func (FlatTop) String() string

func (FlatTop) Value

func (FlatTop) Value() interface{}

type InfiniteMap

type InfiniteMap struct {
	MapBase
}

func (InfiniteMap) AbstractValue

func (e InfiniteMap) AbstractValue() AbstractValue

func (InfiniteMap) Analysis

func (InfiniteMap) Analysis() Analysis

func (InfiniteMap) AnalysisIntraprocess

func (InfiniteMap) AnalysisIntraprocess() AnalysisIntraprocess

func (InfiniteMap) AnalysisState

func (InfiniteMap) AnalysisState() AnalysisState

func (InfiniteMap) ChannelInfo

func (InfiniteMap) ChannelInfo() ChannelInfo

func (InfiniteMap) Charges

func (InfiniteMap) Charges() Charges

func (InfiniteMap) Cond

func (InfiniteMap) Cond() Cond

func (InfiniteMap) Dropped

func (InfiniteMap) Dropped() *DroppedTop

func (InfiniteMap) Eq

func (e1 InfiniteMap) Eq(e2 Element) bool

func (InfiniteMap) Flat

func (InfiniteMap) Flat() FlatElement

func (InfiniteMap) FlatInt

func (InfiniteMap) FlatInt() FlatIntElement

func (InfiniteMap) ForEach

func (e InfiniteMap) ForEach(do func(interface{}, Element))

func (InfiniteMap) Geq

func (e1 InfiniteMap) Geq(e2 Element) bool

func (InfiniteMap) Get

func (e InfiniteMap) Get(x interface{}) Element

func (InfiniteMap) InfiniteMap

func (e1 InfiniteMap) InfiniteMap() InfiniteMap

func (InfiniteMap) Interval

func (InfiniteMap) Interval() Interval

func (InfiniteMap) Join

func (e1 InfiniteMap) Join(e2 Element) Element

func (InfiniteMap) Lattice

func (e InfiniteMap) Lattice() Lattice

func (InfiniteMap) Leq

func (e1 InfiniteMap) Leq(e2 Element) bool

func (InfiniteMap) Lifted

func (InfiniteMap) Lifted() *LiftedBot

func (InfiniteMap) Map

func (InfiniteMap) Map() Map

func (InfiniteMap) Meet

func (e1 InfiniteMap) Meet(e2 Element) Element

func (InfiniteMap) Memory

func (InfiniteMap) Memory() Memory

func (InfiniteMap) MonoJoin

func (e1 InfiniteMap) MonoJoin(e2 InfiniteMap) InfiniteMap

func (InfiniteMap) MonoMeet

func (e1 InfiniteMap) MonoMeet(e2 InfiniteMap) InfiniteMap

func (InfiniteMap) OneElement

func (InfiniteMap) OneElement() oneElementLatticeElement

func (InfiniteMap) OpOutcomes

func (InfiniteMap) OpOutcomes() OpOutcomes

func (InfiniteMap) PointsTo

func (InfiniteMap) PointsTo() PointsTo

func (InfiniteMap) Product

func (InfiniteMap) Product() Product

func (InfiniteMap) RWMutex

func (InfiniteMap) RWMutex() RWMutex

func (InfiniteMap) Set

func (InfiniteMap) Set() Set

func (InfiniteMap) ThreadCharges

func (InfiniteMap) ThreadCharges() ThreadCharges

func (InfiniteMap) TwoElement

func (InfiniteMap) TwoElement() twoElementLatticeElement

func (InfiniteMap) Update

func (e1 InfiniteMap) Update(x interface{}, e2 Element) InfiniteMap

type InfiniteMapLattice

type InfiniteMapLattice struct {
	// contains filtered or unexported fields
}

func (*InfiniteMapLattice) Bot

func (l *InfiniteMapLattice) Bot() Element

func (*InfiniteMapLattice) Eq

func (l1 *InfiniteMapLattice) Eq(l2 Lattice) bool

func (*InfiniteMapLattice) InfiniteMap

func (l *InfiniteMapLattice) InfiniteMap() *InfiniteMapLattice

func (InfiniteMapLattice) RngBot

func (m InfiniteMapLattice) RngBot() Element

func (*InfiniteMapLattice) String

func (l *InfiniteMapLattice) String() string

func (*InfiniteMapLattice) Top

func (l *InfiniteMapLattice) Top() Element

type Interval

type Interval struct {
	// contains filtered or unexported fields
}

func (Interval) AbstractValue

func (e Interval) AbstractValue() AbstractValue

func (Interval) Analysis

func (Interval) Analysis() Analysis

func (Interval) AnalysisIntraprocess

func (Interval) AnalysisIntraprocess() AnalysisIntraprocess

func (Interval) AnalysisState

func (Interval) AnalysisState() AnalysisState

func (Interval) ChannelInfo

func (Interval) ChannelInfo() ChannelInfo

func (Interval) Charges

func (Interval) Charges() Charges

func (Interval) Cond

func (Interval) Cond() Cond

func (Interval) Dropped

func (Interval) Dropped() *DroppedTop

func (Interval) Eq

func (e1 Interval) Eq(e2 Element) bool

func (Interval) Flat

func (Interval) Flat() FlatElement

func (Interval) FlatInt

func (Interval) FlatInt() FlatIntElement

func (Interval) Geq

func (e1 Interval) Geq(e2 Element) bool

func (Interval) GetFiniteBounds

func (i Interval) GetFiniteBounds() (int, int)

If bounds are finite, retrieve them. Otherwise panic.

func (Interval) Height

func (e Interval) Height() int

func (Interval) High

func (i Interval) High() int

Return the upper bound as an integer, if finite. Otherwise, panic.

func (Interval) InfiniteMap

func (Interval) InfiniteMap() InfiniteMap

func (Interval) Interval

func (e Interval) Interval() Interval

func (Interval) IsBot

func (e Interval) IsBot() bool

func (Interval) IsTop

func (e Interval) IsTop() bool

func (Interval) Join

func (e1 Interval) Join(e2 Element) Element

func (Interval) Lattice

func (Interval) Lattice() Lattice

func (Interval) Leq

func (e1 Interval) Leq(e2 Element) bool

func (Interval) Lifted

func (Interval) Lifted() *LiftedBot

func (Interval) Low

func (i Interval) Low() int

Return the lower bound as an integer, if finite. Otherwise, panic.

func (Interval) Map

func (Interval) Map() Map

func (Interval) Meet

func (e1 Interval) Meet(e2 Element) Element

func (Interval) Memory

func (Interval) Memory() Memory

func (Interval) OneElement

func (Interval) OneElement() oneElementLatticeElement

func (Interval) OpOutcomes

func (Interval) OpOutcomes() OpOutcomes

func (Interval) PointsTo

func (Interval) PointsTo() PointsTo

func (Interval) Product

func (Interval) Product() Product

func (Interval) RWMutex

func (Interval) RWMutex() RWMutex

func (Interval) Set

func (Interval) Set() Set

func (Interval) String

func (e Interval) String() string

func (Interval) ThreadCharges

func (Interval) ThreadCharges() ThreadCharges

func (Interval) TwoElement

func (Interval) TwoElement() twoElementLatticeElement

type IntervalBound

type IntervalBound interface {
	String() string

	// Predicates
	IsInfinite() bool

	// Binary relations
	Eq(IntervalBound) bool
	Leq(IntervalBound) bool
	Geq(IntervalBound) bool
	Lt(IntervalBound) bool
	Gt(IntervalBound) bool

	// Binary operations
	Plus(IntervalBound) IntervalBound
	Minus(IntervalBound) IntervalBound
	Mult(IntervalBound) IntervalBound
	Div(IntervalBound) IntervalBound
	Max(IntervalBound) IntervalBound
	Min(IntervalBound) IntervalBound
}

type IntervalLattice

type IntervalLattice struct {
	// contains filtered or unexported fields
}

func (*IntervalLattice) AbstractValue

func (*IntervalLattice) AbstractValue() *AbstractValueLattice

func (*IntervalLattice) Analysis

func (*IntervalLattice) Analysis() *AnalysisLattice

func (*IntervalLattice) AnalysisIntraprocess

func (*IntervalLattice) AnalysisIntraprocess() *AnalysisIntraprocessLattice

func (*IntervalLattice) Bot

func (*IntervalLattice) Bot() Element

func (*IntervalLattice) ChannelInfo

func (*IntervalLattice) ChannelInfo() *ChannelInfoLattice

func (*IntervalLattice) Dropped

func (*IntervalLattice) Dropped() *Dropped

func (*IntervalLattice) Eq

func (l1 *IntervalLattice) Eq(l2 Lattice) bool

func (*IntervalLattice) Flat

func (*IntervalLattice) Flat() *FlatLattice

func (*IntervalLattice) FlatFinite

func (*IntervalLattice) FlatFinite() *FlatFiniteLattice

func (*IntervalLattice) FlatInt

func (*IntervalLattice) FlatInt() *FlatIntLattice

func (*IntervalLattice) InfiniteMap

func (*IntervalLattice) InfiniteMap() *InfiniteMapLattice

func (*IntervalLattice) Interval

func (l1 *IntervalLattice) Interval() *IntervalLattice

func (*IntervalLattice) Lifted

func (*IntervalLattice) Lifted() *Lifted

func (*IntervalLattice) Map

func (*IntervalLattice) Map() *MapLattice

func (*IntervalLattice) Memory

func (*IntervalLattice) Memory() *MemoryLattice

func (*IntervalLattice) OneElement

func (*IntervalLattice) OneElement() *OneElementLattice

func (*IntervalLattice) OpOutcomes

func (*IntervalLattice) OpOutcomes() *OpOutcomesLattice

func (*IntervalLattice) Powerset

func (*IntervalLattice) Powerset() *Powerset

func (*IntervalLattice) Preheight

func (*IntervalLattice) Preheight() int

func (*IntervalLattice) Product

func (*IntervalLattice) Product() *ProductLattice

func (*IntervalLattice) String

func (*IntervalLattice) String() string

func (*IntervalLattice) Top

func (*IntervalLattice) Top() Element

func (*IntervalLattice) TwoElement

func (*IntervalLattice) TwoElement() *TwoElementLattice

type Lattice

type Lattice interface {
	Top() Element
	Bot() Element

	String() string
	Eq(Lattice) bool
	// Pre-height returns how many times a lattice is lifted.
	Preheight() int

	// These methods allow for quick type conversions.
	// Suitable, if you know what lattice type to expect.
	// If the lattice is lifted/dropped, type conversion
	// will attempt to retrieve the underlying un-lifted/dropped
	// lattice.
	Lifted() *Lifted
	Dropped() *Dropped

	AbstractValue() *AbstractValueLattice
	Analysis() *AnalysisLattice
	AnalysisIntraprocess() *AnalysisIntraprocessLattice
	ChannelInfo() *ChannelInfoLattice
	Flat() *FlatLattice
	FlatFinite() *FlatFiniteLattice
	FlatInt() *FlatIntLattice
	Interval() *IntervalLattice
	Map() *MapLattice
	InfiniteMap() *InfiniteMapLattice
	Memory() *MemoryLattice
	OneElement() *OneElementLattice
	OpOutcomes() *OpOutcomesLattice
	Powerset() *Powerset
	Product() *ProductLattice
	TwoElement() *TwoElementLattice
}

type Lifted

type Lifted struct {
	Lattice
	// contains filtered or unexported fields
}

func Lift

func Lift(lat Lattice) *Lifted

func (*Lifted) Bot

func (l *Lifted) Bot() Element

func (*Lifted) Dropped

func (l *Lifted) Dropped() *Dropped

func (*Lifted) Eq

func (l1 *Lifted) Eq(l2 Lattice) bool

func (*Lifted) Flat

func (l *Lifted) Flat() *FlatLattice

func (*Lifted) FlatFinite

func (l *Lifted) FlatFinite() *FlatFiniteLattice

func (*Lifted) FlatInt

func (l *Lifted) FlatInt() *FlatIntLattice

func (*Lifted) InfiniteMap

func (l *Lifted) InfiniteMap() *InfiniteMapLattice

func (*Lifted) Interval

func (l *Lifted) Interval() *IntervalLattice

func (*Lifted) Lifted

func (l *Lifted) Lifted() *Lifted

func (*Lifted) Map

func (l *Lifted) Map() *MapLattice

func (*Lifted) Powerset

func (l *Lifted) Powerset() *Powerset

func (*Lifted) Preheight

func (l *Lifted) Preheight() int

func (*Lifted) Product

func (l *Lifted) Product() *ProductLattice

func (*Lifted) String

func (l *Lifted) String() string

func (*Lifted) TwoElement

func (l *Lifted) TwoElement() *TwoElementLattice

type LiftedBot

type LiftedBot struct {
	// contains filtered or unexported fields
}

func (LiftedBot) AbstractValue

func (e LiftedBot) AbstractValue() AbstractValue

func (LiftedBot) Analysis

func (LiftedBot) Analysis() Analysis

func (LiftedBot) AnalysisIntraprocess

func (LiftedBot) AnalysisIntraprocess() AnalysisIntraprocess

func (LiftedBot) AnalysisState

func (LiftedBot) AnalysisState() AnalysisState

func (LiftedBot) ChannelInfo

func (LiftedBot) ChannelInfo() ChannelInfo

func (LiftedBot) Charges

func (LiftedBot) Charges() Charges

func (LiftedBot) Cond

func (LiftedBot) Cond() Cond

func (LiftedBot) Dropped

func (LiftedBot) Dropped() *DroppedTop

func (*LiftedBot) Eq

func (e1 *LiftedBot) Eq(e2 Element) bool

func (LiftedBot) Flat

func (LiftedBot) Flat() FlatElement

func (LiftedBot) FlatInt

func (LiftedBot) FlatInt() FlatIntElement

func (*LiftedBot) Geq

func (e1 *LiftedBot) Geq(e2 Element) bool

func (*LiftedBot) Height

func (e *LiftedBot) Height() int

func (*LiftedBot) Index

func (e *LiftedBot) Index() int

func (LiftedBot) InfiniteMap

func (LiftedBot) InfiniteMap() InfiniteMap

func (LiftedBot) Interval

func (LiftedBot) Interval() Interval

func (*LiftedBot) Join

func (e1 *LiftedBot) Join(e2 Element) Element

func (LiftedBot) Lattice

func (e LiftedBot) Lattice() Lattice

func (*LiftedBot) Leq

func (e1 *LiftedBot) Leq(e2 Element) bool

func (*LiftedBot) Lifted

func (e *LiftedBot) Lifted() *LiftedBot

func (LiftedBot) Map

func (LiftedBot) Map() Map

func (*LiftedBot) Meet

func (e1 *LiftedBot) Meet(e2 Element) Element

func (LiftedBot) Memory

func (LiftedBot) Memory() Memory

func (LiftedBot) OneElement

func (LiftedBot) OneElement() oneElementLatticeElement

func (LiftedBot) OpOutcomes

func (LiftedBot) OpOutcomes() OpOutcomes

func (LiftedBot) PointsTo

func (LiftedBot) PointsTo() PointsTo

func (LiftedBot) Product

func (LiftedBot) Product() Product

func (LiftedBot) RWMutex

func (LiftedBot) RWMutex() RWMutex

func (LiftedBot) Set

func (LiftedBot) Set() Set

func (*LiftedBot) String

func (e *LiftedBot) String() string

func (LiftedBot) ThreadCharges

func (LiftedBot) ThreadCharges() ThreadCharges

func (LiftedBot) TwoElement

func (LiftedBot) TwoElement() twoElementLatticeElement

type Map

type Map struct {
	MapBase
}

func (Map) AbstractValue

func (e Map) AbstractValue() AbstractValue

func (Map) Analysis

func (Map) Analysis() Analysis

func (Map) AnalysisIntraprocess

func (Map) AnalysisIntraprocess() AnalysisIntraprocess

func (Map) AnalysisState

func (Map) AnalysisState() AnalysisState

func (Map) ChannelInfo

func (Map) ChannelInfo() ChannelInfo

func (Map) Charges

func (Map) Charges() Charges

func (Map) Cond

func (Map) Cond() Cond

func (Map) Dropped

func (Map) Dropped() *DroppedTop

func (Map) Eq

func (e1 Map) Eq(e2 Element) bool

func (Map) Flat

func (Map) Flat() FlatElement

func (Map) FlatInt

func (Map) FlatInt() FlatIntElement

func (Map) ForAll

func (e Map) ForAll(f func(interface{}, Element) bool) bool

func (Map) ForEach

func (e Map) ForEach(f func(interface{}, Element))

func (Map) Geq

func (e1 Map) Geq(e2 Element) bool

func (Map) Get

func (e Map) Get(x interface{}) Element

func (Map) InfiniteMap

func (Map) InfiniteMap() InfiniteMap

func (Map) Interval

func (Map) Interval() Interval

func (Map) Join

func (e1 Map) Join(e2 Element) Element

func (Map) Lattice

func (e Map) Lattice() Lattice

func (Map) Leq

func (e1 Map) Leq(e2 Element) bool

func (Map) Lifted

func (Map) Lifted() *LiftedBot

func (Map) Map

func (e Map) Map() Map

func (Map) Meet

func (e1 Map) Meet(e2 Element) Element

func (Map) Memory

func (Map) Memory() Memory

func (Map) MonoJoin

func (e1 Map) MonoJoin(e2 Map) Map

func (Map) MonoMeet

func (e1 Map) MonoMeet(e2 Map) Map

func (Map) OneElement

func (Map) OneElement() oneElementLatticeElement

func (Map) OpOutcomes

func (Map) OpOutcomes() OpOutcomes

func (Map) PointsTo

func (Map) PointsTo() PointsTo

func (Map) Product

func (Map) Product() Product

func (Map) RWMutex

func (Map) RWMutex() RWMutex

func (Map) Set

func (Map) Set() Set

func (Map) ThreadCharges

func (Map) ThreadCharges() ThreadCharges

func (Map) TwoElement

func (Map) TwoElement() twoElementLatticeElement

func (Map) Update

func (e1 Map) Update(x interface{}, e2 Element) Map

type MapBase

type MapBase struct {
	// contains filtered or unexported fields
}

func (MapBase) AbstractValue

func (e MapBase) AbstractValue() AbstractValue

func (MapBase) Analysis

func (MapBase) Analysis() Analysis

func (MapBase) AnalysisIntraprocess

func (MapBase) AnalysisIntraprocess() AnalysisIntraprocess

func (MapBase) AnalysisState

func (MapBase) AnalysisState() AnalysisState

func (MapBase) ChannelInfo

func (MapBase) ChannelInfo() ChannelInfo

func (MapBase) Charges

func (MapBase) Charges() Charges

func (MapBase) Cond

func (MapBase) Cond() Cond

func (MapBase) Dropped

func (MapBase) Dropped() *DroppedTop

func (MapBase) Flat

func (MapBase) Flat() FlatElement

func (MapBase) FlatInt

func (MapBase) FlatInt() FlatIntElement

func (MapBase) Height

func (m MapBase) Height() (h int)

func (MapBase) InfiniteMap

func (MapBase) InfiniteMap() InfiniteMap

func (MapBase) Interval

func (MapBase) Interval() Interval

func (MapBase) Lattice

func (e MapBase) Lattice() Lattice

func (MapBase) Lifted

func (MapBase) Lifted() *LiftedBot

func (MapBase) Map

func (MapBase) Map() Map

func (MapBase) Memory

func (MapBase) Memory() Memory

func (MapBase) OneElement

func (MapBase) OneElement() oneElementLatticeElement

func (MapBase) OpOutcomes

func (MapBase) OpOutcomes() OpOutcomes

func (MapBase) PointsTo

func (MapBase) PointsTo() PointsTo

func (MapBase) Product

func (MapBase) Product() Product

func (MapBase) RWMutex

func (MapBase) RWMutex() RWMutex

func (MapBase) Set

func (MapBase) Set() Set

func (MapBase) String

func (e MapBase) String() string

func (MapBase) ThreadCharges

func (MapBase) ThreadCharges() ThreadCharges

func (MapBase) TwoElement

func (MapBase) TwoElement() twoElementLatticeElement

type MapLattice

type MapLattice struct {
	// contains filtered or unexported fields
}

func (*MapLattice) Bot

func (l *MapLattice) Bot() Element

func (*MapLattice) Contains

func (e *MapLattice) Contains(x interface{}) bool

Specifies whether the map lattice domain includes x

func (*MapLattice) Domain

func (l *MapLattice) Domain() set

func (*MapLattice) Eq

func (l1 *MapLattice) Eq(l2 Lattice) bool

func (*MapLattice) Map

func (e *MapLattice) Map() *MapLattice

func (*MapLattice) Range

func (l *MapLattice) Range() Lattice

func (MapLattice) RngBot

func (m MapLattice) RngBot() Element

func (*MapLattice) String

func (l *MapLattice) String() string

func (*MapLattice) Top

func (l *MapLattice) Top() Element

type Memory

type Memory struct {
	// contains filtered or unexported fields
}

func PopulateGlobals

func PopulateGlobals(mem Memory, pkgs []*ssa.Package, harnessed bool) Memory

func (Memory) AbstractValue

func (e Memory) AbstractValue() AbstractValue

func (Memory) Allocate

func (w Memory) Allocate(key loc.AllocationSiteLocation, value AbstractValue, forceMultialloc bool) Memory

func (Memory) Analysis

func (Memory) Analysis() Analysis

func (Memory) AnalysisIntraprocess

func (Memory) AnalysisIntraprocess() AnalysisIntraprocess

func (Memory) AnalysisState

func (Memory) AnalysisState() AnalysisState

func (Memory) ChannelInfo

func (Memory) ChannelInfo() ChannelInfo

func (Memory) Channels

func (mem Memory) Channels() Memory

func (Memory) Charges

func (Memory) Charges() Charges

func (Memory) Cond

func (Memory) Cond() Cond

func (Memory) Difference

func (m1 Memory) Difference(m2 Memory) (diff Memory)

Check the differences between two abstract memories

func (Memory) Dropped

func (Memory) Dropped() *DroppedTop

func (Memory) EffectiveSize

func (w Memory) EffectiveSize() (count int)

Returns the size in terms of non-bottom locations

func (Memory) Eq

func (w Memory) Eq(e Element) bool

func (Memory) Filter

func (mem Memory) Filter(pred func(loc.AddressableLocation, AbstractValue) bool) Memory

func (Memory) Flat

func (Memory) Flat() FlatElement

func (Memory) FlatInt

func (Memory) FlatInt() FlatIntElement

func (Memory) ForEach

func (w Memory) ForEach(f func(loc.AddressableLocation, AbstractValue))

func (Memory) Geq

func (w Memory) Geq(e Element) bool

func (Memory) Get

func (Memory) GetOrDefault

func (w Memory) GetOrDefault(key loc.AddressableLocation, dflt AbstractValue) AbstractValue

func (Memory) GetUnsafe

func (w Memory) GetUnsafe(key loc.AddressableLocation) AbstractValue

func (Memory) Height

func (m Memory) Height() (h int)

func (Memory) HeightDiff

func (m1 Memory) HeightDiff(m2 Memory) (h int)

Get the difference in height between all elements of two abstract memories.

func (Memory) InfiniteMap

func (Memory) InfiniteMap() InfiniteMap

func (Memory) InjectTopValues

func (mem Memory) InjectTopValues(locs ...loc.AddressableLocation) Memory

Updates memory to have a list of locations bound to top values

func (Memory) Interval

func (Memory) Interval() Interval

func (Memory) IsMultialloc

func (w Memory) IsMultialloc(key loc.AddressableLocation) bool

func (Memory) Join

func (w Memory) Join(o Element) Element

func (Memory) Lattice

func (e Memory) Lattice() Lattice

func (Memory) Leq

func (w Memory) Leq(e Element) bool

Lattice element methods

func (Memory) Lifted

func (Memory) Lifted() *LiftedBot

func (Memory) LocsToTop

func (m Memory) LocsToTop(locs ...loc.Location) Memory

func (Memory) Map

func (Memory) Map() Map

func (Memory) MaxElementHeight

func (m Memory) MaxElementHeight() (h int)

func (Memory) Meet

func (w Memory) Meet(o Element) Element

func (Memory) Memory

func (w Memory) Memory() Memory

Type conversion

func (Memory) MonoJoin

func (w Memory) MonoJoin(o Memory) Memory

func (Memory) OneElement

func (Memory) OneElement() oneElementLatticeElement

func (Memory) OpOutcomes

func (Memory) OpOutcomes() OpOutcomes

func (Memory) PointsTo

func (Memory) PointsTo() PointsTo

func (Memory) Product

func (Memory) Product() Product

func (Memory) RWMutex

func (Memory) RWMutex() RWMutex

func (Memory) Remove

func (w Memory) Remove(key loc.AddressableLocation) Memory

func (Memory) Set

func (Memory) Set() Set

func (Memory) Size

func (w Memory) Size() int

Map methods

func (Memory) String

func (w Memory) String() string

func (Memory) ThreadCharges

func (Memory) ThreadCharges() ThreadCharges

func (Memory) TwoElement

func (Memory) TwoElement() twoElementLatticeElement

func (Memory) Update

func (w Memory) Update(key loc.AddressableLocation, value AbstractValue) Memory

type MemoryLattice

type MemoryLattice struct {
	// contains filtered or unexported fields
}

TODO: Update memory lattice?

func (*MemoryLattice) Bot

func (m *MemoryLattice) Bot() Element

func (*MemoryLattice) Eq

func (m *MemoryLattice) Eq(o Lattice) bool

func (*MemoryLattice) Memory

func (m *MemoryLattice) Memory() *MemoryLattice

func (MemoryLattice) RngBot

func (m MemoryLattice) RngBot() Element

func (*MemoryLattice) String

func (m *MemoryLattice) String() string

Lattice boilerplate

func (*MemoryLattice) Top

func (m *MemoryLattice) Top() Element

type MinusInfinity

type MinusInfinity struct{}

func (MinusInfinity) Div

func (MinusInfinity) Eq

func (MinusInfinity) Geq

func (MinusInfinity) Gt

func (MinusInfinity) IsInfinite

func (MinusInfinity) IsInfinite() bool

func (MinusInfinity) Leq

func (MinusInfinity) Lt

func (MinusInfinity) Max

func (MinusInfinity) Min

func (MinusInfinity) Minus

func (MinusInfinity) Mult

func (MinusInfinity) Plus

func (MinusInfinity) String

func (MinusInfinity) String() string

type MutexLattice

type MutexLattice struct {
	FlatFiniteLattice
}

func (*MutexLattice) AbstractValue

func (*MutexLattice) AbstractValue() *AbstractValueLattice

func (*MutexLattice) Analysis

func (*MutexLattice) Analysis() *AnalysisLattice

func (*MutexLattice) AnalysisIntraprocess

func (*MutexLattice) AnalysisIntraprocess() *AnalysisIntraprocessLattice

func (*MutexLattice) ChannelInfo

func (*MutexLattice) ChannelInfo() *ChannelInfoLattice

func (*MutexLattice) Dropped

func (*MutexLattice) Dropped() *Dropped

func (*MutexLattice) Eq

func (l1 *MutexLattice) Eq(l2 Lattice) bool

func (*MutexLattice) Flat

func (*MutexLattice) Flat() *FlatLattice

func (*MutexLattice) FlatInt

func (*MutexLattice) FlatInt() *FlatIntLattice

func (*MutexLattice) InfiniteMap

func (*MutexLattice) InfiniteMap() *InfiniteMapLattice

func (*MutexLattice) Interval

func (*MutexLattice) Interval() *IntervalLattice

func (*MutexLattice) Lifted

func (*MutexLattice) Lifted() *Lifted

func (*MutexLattice) Map

func (*MutexLattice) Map() *MapLattice

func (*MutexLattice) Memory

func (*MutexLattice) Memory() *MemoryLattice

func (*MutexLattice) OneElement

func (*MutexLattice) OneElement() *OneElementLattice

func (*MutexLattice) OpOutcomes

func (*MutexLattice) OpOutcomes() *OpOutcomesLattice

func (*MutexLattice) Powerset

func (*MutexLattice) Powerset() *Powerset

func (*MutexLattice) Preheight

func (*MutexLattice) Preheight() int

func (*MutexLattice) Product

func (*MutexLattice) Product() *ProductLattice

func (*MutexLattice) String

func (*MutexLattice) String() string

func (*MutexLattice) TwoElement

func (*MutexLattice) TwoElement() *TwoElementLattice

type OneElementLattice

type OneElementLattice struct {
	// contains filtered or unexported fields
}

func (*OneElementLattice) AbstractValue

func (*OneElementLattice) AbstractValue() *AbstractValueLattice

func (*OneElementLattice) Analysis

func (*OneElementLattice) Analysis() *AnalysisLattice

func (*OneElementLattice) AnalysisIntraprocess

func (*OneElementLattice) AnalysisIntraprocess() *AnalysisIntraprocessLattice

func (*OneElementLattice) Bot

func (*OneElementLattice) Bot() Element

func (*OneElementLattice) ChannelInfo

func (*OneElementLattice) ChannelInfo() *ChannelInfoLattice

func (*OneElementLattice) Dropped

func (*OneElementLattice) Dropped() *Dropped

func (*OneElementLattice) Elements

func (*OneElementLattice) Elements() []Element

func (*OneElementLattice) Eq

func (l1 *OneElementLattice) Eq(l2 Lattice) bool

func (*OneElementLattice) Flat

func (*OneElementLattice) Flat() *FlatLattice

func (*OneElementLattice) FlatFinite

func (*OneElementLattice) FlatFinite() *FlatFiniteLattice

func (*OneElementLattice) FlatInt

func (*OneElementLattice) FlatInt() *FlatIntLattice

func (*OneElementLattice) InfiniteMap

func (*OneElementLattice) InfiniteMap() *InfiniteMapLattice

func (*OneElementLattice) Interval

func (*OneElementLattice) Interval() *IntervalLattice

func (*OneElementLattice) Lifted

func (*OneElementLattice) Lifted() *Lifted

func (*OneElementLattice) Map

func (*OneElementLattice) Map() *MapLattice

func (*OneElementLattice) Memory

func (*OneElementLattice) Memory() *MemoryLattice

func (*OneElementLattice) OneElement

func (*OneElementLattice) OneElement() *OneElementLattice

func (*OneElementLattice) OpOutcomes

func (*OneElementLattice) OpOutcomes() *OpOutcomesLattice

func (*OneElementLattice) Powerset

func (*OneElementLattice) Powerset() *Powerset

func (*OneElementLattice) Preheight

func (*OneElementLattice) Preheight() int

func (*OneElementLattice) Product

func (*OneElementLattice) Product() *ProductLattice

func (*OneElementLattice) String

func (*OneElementLattice) String() string

func (*OneElementLattice) Top

func (*OneElementLattice) Top() Element

func (*OneElementLattice) TwoElement

func (*OneElementLattice) TwoElement() *TwoElementLattice

type PlusInfinity

type PlusInfinity struct{}

func (PlusInfinity) Div

func (PlusInfinity) Eq

func (PlusInfinity) Geq

func (PlusInfinity) Gt

func (PlusInfinity) IsInfinite

func (PlusInfinity) IsInfinite() bool

func (PlusInfinity) Leq

func (PlusInfinity) Lt

func (PlusInfinity) Max

func (PlusInfinity) Min

func (PlusInfinity) Minus

func (PlusInfinity) Mult

func (PlusInfinity) Plus

func (PlusInfinity) String

func (PlusInfinity) String() string

type PointsTo

type PointsTo struct {
	// contains filtered or unexported fields
}

A points to set element contains a set of locations internally represented as a map from location to struct{}. We enforce points-to sets to be in canonical form. That is: no location in the points-to set is represented by another in the same set.

func (PointsTo) AbstractValue

func (e PointsTo) AbstractValue() AbstractValue

func (PointsTo) Add

func (p PointsTo) Add(ptr loc.Location) PointsTo

func (PointsTo) Analysis

func (PointsTo) Analysis() Analysis

func (PointsTo) AnalysisIntraprocess

func (PointsTo) AnalysisIntraprocess() AnalysisIntraprocess

func (PointsTo) AnalysisState

func (PointsTo) AnalysisState() AnalysisState

func (PointsTo) ChannelInfo

func (PointsTo) ChannelInfo() ChannelInfo

func (PointsTo) Charges

func (PointsTo) Charges() Charges

func (PointsTo) Cond

func (PointsTo) Cond() Cond

func (PointsTo) Contains

func (p PointsTo) Contains(key loc.Location) bool

func (PointsTo) Dropped

func (PointsTo) Dropped() *DroppedTop

func (PointsTo) Empty

func (m PointsTo) Empty() bool

func (PointsTo) Entries

func (m PointsTo) Entries() (ret []loc.Location)

func (PointsTo) Eq

func (m PointsTo) Eq(o Element) bool

func (PointsTo) Filter

func (p PointsTo) Filter(pred func(l loc.Location) bool) PointsTo

Filter all the loctions in a points-to set. Keep only those that satisfy the predicate

func (PointsTo) FilterNil

func (p PointsTo) FilterNil() PointsTo

Return a points-to set where the nil location has been removed.

func (PointsTo) FilterNilCB

func (p PointsTo) FilterNilCB(onNilFound func()) PointsTo

Return a points-to set where the nil location has been removed. If the nil location is found in the points-to set, execute the provided procedure

func (PointsTo) Flat

func (PointsTo) Flat() FlatElement

func (PointsTo) FlatInt

func (PointsTo) FlatInt() FlatIntElement

func (PointsTo) ForEach

func (m PointsTo) ForEach(do func(loc.Location))

func (PointsTo) Geq

func (m PointsTo) Geq(o Element) bool

func (PointsTo) HasNil

func (p PointsTo) HasNil() bool

func (PointsTo) Height

func (m PointsTo) Height() int

func (PointsTo) InfiniteMap

func (PointsTo) InfiniteMap() InfiniteMap

func (PointsTo) Interval

func (PointsTo) Interval() Interval

func (PointsTo) Join

func (m PointsTo) Join(o Element) Element

func (PointsTo) Lattice

func (e PointsTo) Lattice() Lattice

func (PointsTo) Leq

func (m PointsTo) Leq(o Element) bool

func (PointsTo) Lifted

func (PointsTo) Lifted() *LiftedBot

func (PointsTo) Map

func (PointsTo) Map() Map

func (PointsTo) Meet

func (m PointsTo) Meet(o Element) Element

func (PointsTo) Memory

func (PointsTo) Memory() Memory

func (PointsTo) MonoJoin

func (m PointsTo) MonoJoin(o PointsTo) PointsTo

func (PointsTo) MonoMeet

func (m PointsTo) MonoMeet(o PointsTo) PointsTo

func (PointsTo) NonNilEntries

func (m PointsTo) NonNilEntries() []loc.Location

func (PointsTo) OneElement

func (PointsTo) OneElement() oneElementLatticeElement

func (PointsTo) OpOutcomes

func (PointsTo) OpOutcomes() OpOutcomes

func (PointsTo) PointsTo

func (m PointsTo) PointsTo() PointsTo

Element boilerplate

func (PointsTo) Product

func (PointsTo) Product() Product

func (PointsTo) RWMutex

func (PointsTo) RWMutex() RWMutex

func (PointsTo) Remove

func (p PointsTo) Remove(loc loc.Location) PointsTo

func (PointsTo) Set

func (PointsTo) Set() Set

func (PointsTo) Size

func (m PointsTo) Size() int

func (PointsTo) String

func (m PointsTo) String() string

func (PointsTo) ThreadCharges

func (PointsTo) ThreadCharges() ThreadCharges

func (PointsTo) TwoElement

func (PointsTo) TwoElement() twoElementLatticeElement

type PointsToLattice

type PointsToLattice struct {
	// contains filtered or unexported fields
}

func (*PointsToLattice) AbstractValue

func (*PointsToLattice) AbstractValue() *AbstractValueLattice

func (*PointsToLattice) Analysis

func (*PointsToLattice) Analysis() *AnalysisLattice

func (*PointsToLattice) AnalysisIntraprocess

func (*PointsToLattice) AnalysisIntraprocess() *AnalysisIntraprocessLattice

func (*PointsToLattice) Bot

func (m *PointsToLattice) Bot() Element

func (*PointsToLattice) ChannelInfo

func (*PointsToLattice) ChannelInfo() *ChannelInfoLattice

func (*PointsToLattice) Dropped

func (*PointsToLattice) Dropped() *Dropped

func (*PointsToLattice) Eq

func (m *PointsToLattice) Eq(o Lattice) bool

Lattice boilerplate

func (*PointsToLattice) Flat

func (*PointsToLattice) Flat() *FlatLattice

func (*PointsToLattice) FlatFinite

func (*PointsToLattice) FlatFinite() *FlatFiniteLattice

func (*PointsToLattice) FlatInt

func (*PointsToLattice) FlatInt() *FlatIntLattice

func (*PointsToLattice) InfiniteMap

func (*PointsToLattice) InfiniteMap() *InfiniteMapLattice

func (*PointsToLattice) Interval

func (*PointsToLattice) Interval() *IntervalLattice

func (*PointsToLattice) Lifted

func (*PointsToLattice) Lifted() *Lifted

func (*PointsToLattice) Map

func (*PointsToLattice) Map() *MapLattice

func (*PointsToLattice) Memory

func (*PointsToLattice) Memory() *MemoryLattice

func (*PointsToLattice) OneElement

func (*PointsToLattice) OneElement() *OneElementLattice

func (*PointsToLattice) OpOutcomes

func (*PointsToLattice) OpOutcomes() *OpOutcomesLattice

func (*PointsToLattice) Powerset

func (*PointsToLattice) Powerset() *Powerset

func (*PointsToLattice) Preheight

func (*PointsToLattice) Preheight() int

func (*PointsToLattice) Product

func (*PointsToLattice) Product() *ProductLattice

func (*PointsToLattice) String

func (m *PointsToLattice) String() string

func (*PointsToLattice) Top

func (m *PointsToLattice) Top() Element

func (*PointsToLattice) TwoElement

func (*PointsToLattice) TwoElement() *TwoElementLattice

type Powerset

type Powerset struct {
	// contains filtered or unexported fields
}

func (*Powerset) AbstractValue

func (*Powerset) AbstractValue() *AbstractValueLattice

func (*Powerset) Analysis

func (*Powerset) Analysis() *AnalysisLattice

func (*Powerset) AnalysisIntraprocess

func (*Powerset) AnalysisIntraprocess() *AnalysisIntraprocessLattice

func (*Powerset) Bot

func (p *Powerset) Bot() Element

func (*Powerset) ChannelInfo

func (*Powerset) ChannelInfo() *ChannelInfoLattice

func (*Powerset) Contains

func (p *Powerset) Contains(x interface{}) bool

func (*Powerset) Domain

func (p *Powerset) Domain() set

func (*Powerset) Dropped

func (*Powerset) Dropped() *Dropped

func (*Powerset) Eq

func (l1 *Powerset) Eq(l2 Lattice) bool

func (*Powerset) Extend

func (p *Powerset) Extend(x interface{})

func (*Powerset) Flat

func (*Powerset) Flat() *FlatLattice

func (*Powerset) FlatFinite

func (*Powerset) FlatFinite() *FlatFiniteLattice

func (*Powerset) FlatInt

func (*Powerset) FlatInt() *FlatIntLattice

func (*Powerset) InfiniteMap

func (*Powerset) InfiniteMap() *InfiniteMapLattice

func (*Powerset) Interval

func (*Powerset) Interval() *IntervalLattice

func (*Powerset) Lifted

func (*Powerset) Lifted() *Lifted

func (*Powerset) Map

func (*Powerset) Map() *MapLattice

func (*Powerset) Memory

func (*Powerset) Memory() *MemoryLattice

func (*Powerset) OneElement

func (*Powerset) OneElement() *OneElementLattice

func (*Powerset) OpOutcomes

func (*Powerset) OpOutcomes() *OpOutcomesLattice

func (*Powerset) Powerset

func (p *Powerset) Powerset() *Powerset

func (*Powerset) Preheight

func (*Powerset) Preheight() int

func (*Powerset) Product

func (*Powerset) Product() *ProductLattice

func (*Powerset) String

func (p *Powerset) String() string

func (*Powerset) Top

func (p *Powerset) Top() Element

func (*Powerset) TwoElement

func (*Powerset) TwoElement() *TwoElementLattice

type Product

type Product struct {
	// contains filtered or unexported fields
}

func (Product) AbstractValue

func (e Product) AbstractValue() AbstractValue

func (Product) Analysis

func (Product) Analysis() Analysis

func (Product) AnalysisIntraprocess

func (Product) AnalysisIntraprocess() AnalysisIntraprocess

func (Product) AnalysisState

func (Product) AnalysisState() AnalysisState

func (Product) ChannelInfo

func (Product) ChannelInfo() ChannelInfo

func (Product) Charges

func (Product) Charges() Charges

func (Product) Cond

func (Product) Cond() Cond

func (Product) Dropped

func (Product) Dropped() *DroppedTop

func (Product) Eq

func (e1 Product) Eq(e2 Element) bool

func (Product) Flat

func (Product) Flat() FlatElement

func (Product) FlatInt

func (Product) FlatInt() FlatIntElement

func (Product) Geq

func (e1 Product) Geq(e2 Element) bool

func (Product) Get

func (e Product) Get(i int) Element

func (Product) Height

func (p Product) Height() (h int)

func (Product) InfiniteMap

func (Product) InfiniteMap() InfiniteMap

func (Product) Interval

func (Product) Interval() Interval

func (Product) Join

func (e1 Product) Join(e2 Element) Element

func (Product) Lattice

func (e Product) Lattice() Lattice

func (Product) Leq

func (e1 Product) Leq(e2 Element) bool

func (Product) Lifted

func (Product) Lifted() *LiftedBot

func (Product) Map

func (Product) Map() Map

func (Product) Meet

func (e1 Product) Meet(e2 Element) Element

func (Product) Memory

func (Product) Memory() Memory

func (Product) MonoJoin

func (e1 Product) MonoJoin(e2 Product) Product

func (Product) MonoMeet

func (e1 Product) MonoMeet(e2 Product) Product

func (Product) OneElement

func (Product) OneElement() oneElementLatticeElement

func (Product) OpOutcomes

func (Product) OpOutcomes() OpOutcomes

func (Product) PointsTo

func (Product) PointsTo() PointsTo

func (Product) Product

func (p Product) Product() Product

func (Product) RWMutex

func (Product) RWMutex() RWMutex

func (Product) Set

func (Product) Set() Set

func (Product) String

func (e Product) String() string

func (Product) ThreadCharges

func (Product) ThreadCharges() ThreadCharges

func (Product) TwoElement

func (Product) TwoElement() twoElementLatticeElement

func (Product) Update

func (e1 Product) Update(i int, e2 Element) Product

type ProductLattice

type ProductLattice struct {
	// contains filtered or unexported fields
}

func (*ProductLattice) AbstractValue

func (*ProductLattice) AbstractValue() *AbstractValueLattice

func (*ProductLattice) Analysis

func (*ProductLattice) Analysis() *AnalysisLattice

func (*ProductLattice) AnalysisIntraprocess

func (*ProductLattice) AnalysisIntraprocess() *AnalysisIntraprocessLattice

func (*ProductLattice) Bot

func (p *ProductLattice) Bot() Element

func (*ProductLattice) ChannelInfo

func (*ProductLattice) ChannelInfo() *ChannelInfoLattice

func (*ProductLattice) Dropped

func (*ProductLattice) Dropped() *Dropped

func (*ProductLattice) Eq

func (l1 *ProductLattice) Eq(l2 Lattice) bool

func (*ProductLattice) Extend

func (p *ProductLattice) Extend(l Lattice)
TODO: If this is needed we can add some extra code in Get/Update to handle

lazy updates

func (*ProductLattice) Flat

func (*ProductLattice) Flat() *FlatLattice

func (*ProductLattice) FlatFinite

func (*ProductLattice) FlatFinite() *FlatFiniteLattice

func (*ProductLattice) FlatInt

func (*ProductLattice) FlatInt() *FlatIntLattice

func (*ProductLattice) Get

func (p *ProductLattice) Get(i int) Lattice

func (*ProductLattice) InfiniteMap

func (*ProductLattice) InfiniteMap() *InfiniteMapLattice

func (*ProductLattice) Interval

func (*ProductLattice) Interval() *IntervalLattice

func (*ProductLattice) Lattices

func (p *ProductLattice) Lattices() []Lattice

func (*ProductLattice) Lifted

func (*ProductLattice) Lifted() *Lifted

func (*ProductLattice) Map

func (*ProductLattice) Map() *MapLattice

func (*ProductLattice) Memory

func (*ProductLattice) Memory() *MemoryLattice

func (*ProductLattice) OneElement

func (*ProductLattice) OneElement() *OneElementLattice

func (*ProductLattice) OpOutcomes

func (*ProductLattice) OpOutcomes() *OpOutcomesLattice

func (*ProductLattice) Powerset

func (*ProductLattice) Powerset() *Powerset

func (*ProductLattice) Preheight

func (*ProductLattice) Preheight() int

func (*ProductLattice) Product

func (p *ProductLattice) Product() *ProductLattice

func (*ProductLattice) Size

func (p *ProductLattice) Size() int

func (*ProductLattice) String

func (p *ProductLattice) String() string

func (*ProductLattice) Top

func (p *ProductLattice) Top() Element

func (*ProductLattice) TwoElement

func (*ProductLattice) TwoElement() *TwoElementLattice

type RWMutexLattice

type RWMutexLattice struct {
	ProductLattice
}

func (*RWMutexLattice) AbstractValue

func (*RWMutexLattice) AbstractValue() *AbstractValueLattice

func (*RWMutexLattice) Analysis

func (*RWMutexLattice) Analysis() *AnalysisLattice

func (*RWMutexLattice) AnalysisIntraprocess

func (*RWMutexLattice) AnalysisIntraprocess() *AnalysisIntraprocessLattice

func (RWMutexLattice) Bot

func (l RWMutexLattice) Bot() Element

func (*RWMutexLattice) ChannelInfo

func (*RWMutexLattice) ChannelInfo() *ChannelInfoLattice

func (*RWMutexLattice) Dropped

func (*RWMutexLattice) Dropped() *Dropped

func (RWMutexLattice) Eq

func (l1 RWMutexLattice) Eq(l2 Lattice) bool

func (*RWMutexLattice) Flat

func (*RWMutexLattice) Flat() *FlatLattice

func (*RWMutexLattice) FlatFinite

func (*RWMutexLattice) FlatFinite() *FlatFiniteLattice

func (*RWMutexLattice) FlatInt

func (*RWMutexLattice) FlatInt() *FlatIntLattice

func (*RWMutexLattice) InfiniteMap

func (*RWMutexLattice) InfiniteMap() *InfiniteMapLattice

func (*RWMutexLattice) Interval

func (*RWMutexLattice) Interval() *IntervalLattice

func (*RWMutexLattice) Lifted

func (*RWMutexLattice) Lifted() *Lifted

func (*RWMutexLattice) Map

func (*RWMutexLattice) Map() *MapLattice

func (*RWMutexLattice) Memory

func (*RWMutexLattice) Memory() *MemoryLattice

func (*RWMutexLattice) OneElement

func (*RWMutexLattice) OneElement() *OneElementLattice

func (*RWMutexLattice) OpOutcomes

func (*RWMutexLattice) OpOutcomes() *OpOutcomesLattice

func (*RWMutexLattice) Powerset

func (*RWMutexLattice) Powerset() *Powerset

func (*RWMutexLattice) Preheight

func (*RWMutexLattice) Preheight() int

func (RWMutexLattice) String

func (RWMutexLattice) String() string

func (RWMutexLattice) Top

func (l RWMutexLattice) Top() Element

func (*RWMutexLattice) TwoElement

func (*RWMutexLattice) TwoElement() *TwoElementLattice

type Set

type Set struct {
	// contains filtered or unexported fields
}

func (Set) AbstractValue

func (e Set) AbstractValue() AbstractValue

func (Set) Add

func (e Set) Add(x interface{}) Set

func (Set) All

func (e Set) All() set

func (Set) Analysis

func (Set) Analysis() Analysis

func (Set) AnalysisIntraprocess

func (Set) AnalysisIntraprocess() AnalysisIntraprocess

func (Set) AnalysisState

func (Set) AnalysisState() AnalysisState

func (Set) ChannelInfo

func (Set) ChannelInfo() ChannelInfo

func (Set) Charges

func (Set) Charges() Charges

func (Set) Cond

func (Set) Cond() Cond

func (Set) Contains

func (e Set) Contains(x interface{}) bool

func (Set) Dropped

func (Set) Dropped() *DroppedTop

func (Set) Eq

func (e1 Set) Eq(e2 Element) bool

func (Set) Flat

func (Set) Flat() FlatElement

func (Set) FlatInt

func (Set) FlatInt() FlatIntElement

func (Set) Geq

func (e1 Set) Geq(e2 Element) (result bool)

func (Set) Height

func (e Set) Height() int

func (Set) InfiniteMap

func (Set) InfiniteMap() InfiniteMap

func (Set) Interval

func (Set) Interval() Interval

func (Set) Join

func (e1 Set) Join(e2 Element) Element

func (Set) Lattice

func (e Set) Lattice() Lattice

func (Set) Leq

func (e1 Set) Leq(e2 Element) bool

func (Set) Lifted

func (Set) Lifted() *LiftedBot

func (Set) Map

func (Set) Map() Map

func (Set) Meet

func (e1 Set) Meet(e2 Element) Element

func (Set) Memory

func (Set) Memory() Memory

func (Set) MonoJoin

func (e1 Set) MonoJoin(e2 Set) Set

func (Set) MonoMeet

func (e1 Set) MonoMeet(e2 Set) Set

func (Set) OneElement

func (Set) OneElement() oneElementLatticeElement

func (Set) OpOutcomes

func (Set) OpOutcomes() OpOutcomes

func (Set) PointsTo

func (Set) PointsTo() PointsTo

func (Set) Product

func (Set) Product() Product

func (Set) RWMutex

func (Set) RWMutex() RWMutex

func (Set) Remove

func (e Set) Remove(x interface{}) Set

func (Set) Set

func (e Set) Set() Set

func (Set) Size

func (e1 Set) Size() (size int)

func (Set) String

func (e Set) String() string

func (Set) ThreadCharges

func (Set) ThreadCharges() ThreadCharges

func (Set) TwoElement

func (Set) TwoElement() twoElementLatticeElement

type TwoElementLattice

type TwoElementLattice struct {
	// contains filtered or unexported fields
}

func (*TwoElementLattice) AbstractValue

func (*TwoElementLattice) AbstractValue() *AbstractValueLattice

func (*TwoElementLattice) Analysis

func (*TwoElementLattice) Analysis() *AnalysisLattice

func (*TwoElementLattice) AnalysisIntraprocess

func (*TwoElementLattice) AnalysisIntraprocess() *AnalysisIntraprocessLattice

func (*TwoElementLattice) Bot

func (*TwoElementLattice) Bot() Element

func (*TwoElementLattice) ChannelInfo

func (*TwoElementLattice) ChannelInfo() *ChannelInfoLattice

func (*TwoElementLattice) Dropped

func (*TwoElementLattice) Dropped() *Dropped

func (*TwoElementLattice) Elements

func (*TwoElementLattice) Elements() []Element

func (*TwoElementLattice) Eq

func (l1 *TwoElementLattice) Eq(l2 Lattice) bool

func (*TwoElementLattice) Flat

func (*TwoElementLattice) Flat() *FlatLattice

func (*TwoElementLattice) FlatFinite

func (*TwoElementLattice) FlatFinite() *FlatFiniteLattice

func (*TwoElementLattice) FlatInt

func (*TwoElementLattice) FlatInt() *FlatIntLattice

func (*TwoElementLattice) InfiniteMap

func (*TwoElementLattice) InfiniteMap() *InfiniteMapLattice

func (*TwoElementLattice) Interval

func (*TwoElementLattice) Interval() *IntervalLattice

func (*TwoElementLattice) Lifted

func (*TwoElementLattice) Lifted() *Lifted

func (*TwoElementLattice) Map

func (*TwoElementLattice) Map() *MapLattice

func (*TwoElementLattice) Memory

func (*TwoElementLattice) Memory() *MemoryLattice

func (*TwoElementLattice) OneElement

func (*TwoElementLattice) OneElement() *OneElementLattice

func (*TwoElementLattice) OpOutcomes

func (*TwoElementLattice) OpOutcomes() *OpOutcomesLattice

func (*TwoElementLattice) Powerset

func (*TwoElementLattice) Powerset() *Powerset

func (*TwoElementLattice) Preheight

func (*TwoElementLattice) Preheight() int

func (*TwoElementLattice) Product

func (*TwoElementLattice) Product() *ProductLattice

func (*TwoElementLattice) String

func (*TwoElementLattice) String() string

func (*TwoElementLattice) Top

func (*TwoElementLattice) Top() Element

func (*TwoElementLattice) TwoElement

func (*TwoElementLattice) TwoElement() *TwoElementLattice

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL