In program analysis, a polyvariant or context-sensitive analysis (as opposed to a monovariant or context-insensitive analysis) analyzes each function multiple times—typically once at each call site—to improve the precision of the analysis.[1] Polyvariance is common in data-flow and pointer analyses.

Forms of polyvariance include:

The first two are more often used for dataflow analyses, the latter two are more frequently used for pointer analyses.

References

edit
  1. ^ Palsberg, Jens; Pavlopoulou, Christina (2001). "From Polyvariant Flow Information to Intersection and Union Types". Proceedings of the 25th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '98). 11 (3): 197–208. CiteSeerX 10.1.1.36.4441. doi:10.1017/S095679680100394X. S2CID 16895848.197-208&rft.date=2001&rft_id=https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.36.4441#id-name=CiteSeerX&rft_id=https://api.semanticscholar.org/CorpusID:16895848#id-name=S2CID&rft_id=info:doi/10.1017/S095679680100394X&rft.aulast=Palsberg&rft.aufirst=Jens&rft.au=Pavlopoulou, Christina&rfr_id=info:sid/en.wikipedia.org:Polyvariance" class="Z3988">
  2. ^ a b c Smaragdakis & Balatsouras 2015.
  3. ^ Gilray, Thomas; Adams, Michael D.; Might, Matthew (2016-09-04). "Allocation characterizes polyvariance: A unified methodology for polyvariant control-flow analysis". Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming. ICFP 2016. New York, NY, USA: Association for Computing Machinery. pp. 407–420. doi:10.1145/2951913.2951936. ISBN 978-1-4503-4219-3. S2CID 7768606.407-420&rft.pub=Association for Computing Machinery&rft.date=2016-09-04&rft_id=https://api.semanticscholar.org/CorpusID:7768606#id-name=S2CID&rft_id=info:doi/10.1145/2951913.2951936&rft.isbn=978-1-4503-4219-3&rft.aulast=Gilray&rft.aufirst=Thomas&rft.au=Adams, Michael D.&rft.au=Might, Matthew&rft_id=https://doi.org/10.1145/2951913.2951936&rfr_id=info:sid/en.wikipedia.org:Polyvariance" class="Z3988">

Sources

edit
  • Smaragdakis, Yannis; Balatsouras, George (2015). "Pointer Analysis" (PDF). Foundations and Trends in Programming Languages. 2 (1): 1–69. doi:10.1561/2500000014. Retrieved May 30, 2019.1-69&rft.date=2015&rft_id=info:doi/10.1561/2500000014&rft.aulast=Smaragdakis&rft.aufirst=Yannis&rft.au=Balatsouras, George&rft_id=https://yanniss.github.io/points-to-tutorial15.pdf&rfr_id=info:sid/en.wikipedia.org:Polyvariance" class="Z3988">