void fint n int j 0 for int
- Slides: 65
void f(int n) { int j = 0; for (int i = 0; i < n; ++i) { j += 1; } assert(j >= n); }
void f() { int i = 0; while (i < 100) { ++i; } assert(i == 100); } 2 2
2 2
2 2
void f(int n) { int j = 0; for (int i = 0; i < n; ++i) { j += 1; } assert(j >= n); }
void f(int n) { int j = 0; for (int i = 0; i < n; ++i) { j += 1; } assert(j >= n); } void f(int n) { int j = 0; int i = 0; assume(i >= n); assert(j >= n); } void f(int n) { int j = 0; int i = 0; assume(i < n); j += 1; ++i; assume(i >= n); assert(j >= n); }
void f(int n) { int j = 0; int i = 0; assume(i >= n); assert(j >= n); } void f(int n) { int j = 0; int i = 0; assume(i < n); j += 1; ++i; assume(i >= n); assert(j >= n); }
void f(int n) { int j = 0; for (int i = 0; i < n; ++i) { j += 1; } assert(j >= n); } 2 2
2 2
2 2 unreachable
Abstraction # SMT queries Abstract Interp Query result Incremental? Fixed 1 per “line” per iteration SAT No Symbolic Exec No 1 per path mixed Yes BMC No 1 per unfolding UNSAT No Adaptive 1 per “line” per predicate per iteration UNSAT No Model Checking
QARMC -nopreprocess cdaudio. bug 7 s 70 s (10 x) diskperf 88 s > 600 s (> 7 x) summ_mccarthy 0. 5 s > 50 s (> 100 x) 1 s > 100 s (> 100 x) 0. 7 s 1. 4 s (2 x) qrdcmp tridag
True/False Z 3 BV SICStus LLVM Prolog CLPQ Constant. Range 3, 657 264, 550 (72 x) 2, 886 14, 682 (5 x) 883 4, 996 (6 x) 1, 748 5, 000 x potential 1, 091 20 Million
int f(int *a, int k) { int b[5]; for (unsigned i = 0; i < 5; ++i) { b[i] = a[i] + i; } return b[k]; Can’t alias (i. e. , don’t overlap) }
int f(int *a, int k) { int b[5]; for (unsigned i = 0; i < 5; ++i) { b[i] = a[i] + i; } return b[k]; }
char f(char x) { char y = 0; if (x < 0) y = 3; if (x >= 3 && (y & 1) != 0) return 0; return 1; }
char f(char x) { char y = 0; if (x < 0) y = 3; if (x >= 3 && (y & 1) != 0) return 0; return 1; }
function fn(a, b) { return a + b; }
function fn(a, b) { return a + b; } function fn(a, b) { if (typeof a === 'number' && typeof b === 'number') return Number. add(a, b); if (typeof a === 'string' && typeof b === 'string') return String. concat(a, b); return a + b; } Top 2 types at runtime
- Public void drawsquare(int x, int y, int len)
- Int sum(int a int n) int sum=0 i
- Fint
- Voidswap
- Void f(int i) int j=0
- Int max(int x int y)
- Interface calculator public int add(int a int b)
- Public int divide(int a int b)
- Void main(void)
- Void main(void)
- Void loop(void)
- Void main() int i j charval='j'
- Arrayint
- Mainstring
- Int ival char cval void *ptr
- Public void set
- Void main int main
- Void func(int num)
- Void* to int
- Int main
- Void main() int i j charval='j'
- Int main int argc char argv
- Int main() int num=4
- Int max
- Int factorial(int n)
- Interface myinterface int foo(int x)
- Const int arduino
- Include
- Frgar
- Teckenspråk minoritetsspråk argument
- Etik och ledarskap etisk kod för chefer
- Datorkunskap för nybörjare
- Indikation för kejsarsnitt på moderns önskan
- Ekologiskt fotavtryck
- Steg för steg rita
- Toppslätskivling effekt
- Redogör för vad psykologi är
- Bästa kameran för astrofoto
- Gumman cirkel
- Publik sektor
- Klassens tjejtjusare rim
- Plagg i gamla rom
- Tidböcker
- Formuö
- Vilken grundregel finns det för tronföljden i sverige?
- Big brother rösta
- Verktyg för automatisering av utbetalningar
- Ministerstyre för och nackdelar
- Sju principer för tillitsbaserad styrning
- Vem räknas som jude
- Stig kerman
- Nyckelkompetenser för livslångt lärande
- Ro i rom pax
- Shingelfrisyren
- Verksamhetsanalys exempel
- Datumr
- Stål för stötfångarsystem
- Cks
- Vishnuismen
- I gullregnens månad
- Inköpsprocessen steg för steg
- Kolposkopi, px
- Strategi för svensk viltförvaltning